Шпаргалка: Что делать, если датастор на ESXi 7/8 заблокирован (Reason: Busy)
При попытке размонтировать датастор через SSH хоста командой esxcli storage filesystem unmount часто возникает ошибка «Volume cannot be unmounted. Reason: Busy». Это означает, что ядро ESXi использует диск под свои системные нужды.
Ниже описано, как узнать UUID дисков, найти виновника блокировки и безопасно перенести службы на другое хранилище.
Шаг 0. Как узнать UUID и точное имя датасторов
Перед началом работы нужно получить список всех подключенных хранилищ, их текстовых имен и UUID. Выполните команду:
esxcli storage filesystem list
В выводе вы увидите таблицу. Ищите нужный диск в колонке Volume Name, а его уникальный идентификатор для команд — в колонке UUID (например, 6828d469-70d71be0-b4f3-70106f49b6a2).
Шаг 1. Проверка и отключение дампа памяти (Coredump)
Если на диске активен системный coredump, ядро никогда не отпустит файловую систему.
1. Проверяем статус coredump на проблемном датасторе:
esxcli system coredump file listЕсли в колонках Active и Configured стоит true, отключаем его:
esxcli system coredump file set --unconfigure
Шаг 2. Проверка системного Scratch-диска (.locker)
ESXi любит складывать логи и временные файлы во внутреннюю папку на свободный SSD.
1. Смотрим, куда сейчас указывает путь логов:
vim-cmd hostsvc/advopt/view ScratchConfig.ConfiguredScratchLocation2. Если там прописан UUID удаляемого диска, переносим его на живой рабочий датастор (внутренней командой API):
vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string "/vmfs/volumes/UUID_РАБОЧЕГО_ДИСКА/.locker-Folder"Важно: Изменения scratch-пути вступят в силу только после перезагрузки хоста ESXi!
Шаг 3. Поиск скрытых процессов через fuser
Если прошлые шаги чистые, но диск всё еще Busy, ищем конкретный процесс (PID), который держит файлы:
1. Вызываем утилиту fuser (укажите UUID заблокированного диска):
fuser -m /vmfs/volumes/UUID_ПРОБЛЕМНОГО_ДИСКА2. Команда выведет ID процессов через пробел. Смотрим, что это за процесс:
ps -s | grep <PID_из_вывода>3. Если это не критичный агент, его можно «прибить», чтобы освободить диск: kill -9 <PID>
Шаг 4. Возвращаем Coredump на новое безопасное место
Оставлять хост без дампа памяти нельзя (при фиолетовом экране смерти не запишется лог). Настроим его на рабочем диске:
1. Создаем файл дампа на новом рабочем датасторе (в ESXi 7/8 имя файла генерируется автоматически):
esxcli system coredump file add -d "UUID_РАБОЧЕГО_ДАТАСТОРА"2. Смотрим и копируем сгенерированный системой путь:
esxcli system coredump file list3. Активируем новый coredump-файл, вставив скопированный путь:
esxcli system coredump file set -p "СКОПИРОВАННЫЙ_ПУТЬ_ИЗ_ПРИМЕРА_ВЫШЕ"
После этого в списке esxcli system coredump file list статус нового файла изменится на true / true. Проблемный диск можно извлекать или разбирать на нем RAID.
Вариант 5. Радикальный: Стирание разметки VMFS через dd (Только для пустых дисков!)
ВНИМАНИЕ: Этот метод уничтожает заголовок файловой системы на горячую. Используйте его ТОЛЬКО если вы на 100% уверены, что на диске нет нужных виртуальных машин, а стандартные методы выше не сработали. В продакшене применять с огромной осторожностью!
Если ядро ESXi намертво заблокировало пустой диск и отказывается его отпускать, можно стереть таблицу разделов. ОС потеряет заголовок VMFS, сбросит все блокировки и «забудет» датастор без перезагрузок.
1. Найдите точное системное имя дискового устройства (Device Name):
esxcli storage vmfs extent listИщите строку с именем вашего датастора. В колонке Device Name будет длинный ID, начинающийся на naa...., t10.... или nvme.... (например, naa.600508b1001c...). Скопируйте его.
2. Занулите первый сектор диска (замените ИМЯ_УСТРОЙСТВА на скопированную строку, сохранив префикс /dev/disks/):
dd if=/dev/zero of=/dev/disks/ИМЯ_УСТРОЙСТВА bs=512 count=1 conv=notruncКоманда должна вернуть отчет в стиле: 1+0 records in, 1+0 records out.
3. Заставьте подсистему хранения ESXi пересканировать железки:
esxcli storage core adapter rescan --all
После сканирования хост увидит, что файловой системы больше нет, и датастор мгновенно исчезнет из списков vCenter и ESXi.