В рамках миграции данных и виртуальных машин со старого хранилища HP MSA 200 на новую систему хранения Dell EMC Unity (оба подключены через SAN) столкнулся с проблемой при удалении пустого VMFS хранилища в VMWare vSphere. При попытке отключить VMFS хранилище от ESXi хостов появляется ошибка о том, что хранилище используется:
Unmount VMFS volume esxi12.winitpro.ru. The resource 'Datastore Name: MSA2000_LUN1 VMFS uuid: xxxxx--xxxxx-x-xxxxx-xxxx' is in use. Cannot unmount volume Datastore Name VMFS “file system is busy”.
Судя по ошибке ясно, что VMFS хранилище не удаляется, т.к. ESXi хосты или vSphere все еще используют хранилище для записи каких-то данных. Согласно документации VMWare, при удалении LUN из vSphere нужно проверить следующие пункты:
- На VMFS хранилище отсутствуют файлы виртуальных машин, шаблонов; снапшотов и ISO образов (нужно смигрировать ВМ на другое VMFS хранилище, либо выключить и удалить или разрегестрировать в vSphere);
- Для хранилища отключен Storage I/O Control;
- Датастор не входит в Datastore Cluster;
- LUN не используется как RDM устройство;
- VMFS хранилище не используется для хранения данных vSphere HA, Storage DRS, логов, дампов (/vmkdump/), данных vSAN (/vsantraced/), данных для техподдержки (раздел Scratch), файлов подкачки виртуальных машин.
Сами виртуальные машины уже были перемещены на новое хранилище с помощью Storage vMotion. Посмотрим, что еще осталось на VMFS хранилище:
Как вы видите, на хранилище остались каталог logdir (каталог с логами), sdd.sf (каталог с описанием SCSI устройств), dbsData (каталог с данными распределенного виртуального коммутатора) и naa… (метаданные VMFS).
В моем случае на VMFS хранилище все еще хранятся логи ESXi хоста (Scratch Location). В настройках хостов ESXi, которые используют данное хранлище, проверьте не указано ли оно в качестве места хранения логов. Перейдите в раздел Manage -> Settings -> Advanced System Settings. Найдите параметр ScratchConfig.CurrentScratchLocation и если он указывает на ваш VMFS датастор, измените путь к каталогу с логами.
Перезагрузите ESXi хост или перезапустите службу Syslog server на хосте.
Попробуем еще раз отключить хранилище от ESXi. Перейдите в раздел Manage -> Storage -> Storage Device. Найдите в списке ваш LUN, выберите его и нажмите на кнопку Detaches the selected device from the host.
В моем случае опять появилась ошибка:
Detach SCSI LUN The resource is in use.
Я еще довольно долго пытался найти, кто же использует это хранилище и решил, что самый простой способ в моем случае – просто удалить таблицу разделов на VMFS хранилище (конечно нужно выполнять удаление крайне внимательно, убедившись, что вы удаляете именно то хранилище, которое вам нужно).
- Подключитесь по SSH к любому хосту ESXi хосту, которому презентовано VMFS хранилище с массива;
- В интерфейсе vSphere скопируйте идентификатор вашего хранилища и на ESXi хосте проверьте какому устройству и пути к VMFS хранилищу оно соответствует:
esxcfg-scsidevs -c | grep naa.6001438005df0dee0000700004be0000
naa.6001438005df0dee0000700004be0000 Direct-Access /vmfs/devices/disks/naa. 6001438005df0dee0000700004be0000 512000MB NMP HP Fibre Channel Disk (naa.6001438005df0dee0000700004be0000)esxcfg-scsidevs -m | grep naa.6001438005df0dee0000700004be0000
naa.6001438005df0dee0000700004be0000:1 /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000:1 570e5298-08f4c74e-ca3a-b4b52f5e2b38 0 MSA2000_LUN1 - Посмотрим, сколько место занято/доступно на вашем VMFS датасторе:
df -h | grep MSA2000_LUN1
VMFS-5 499.8G 1.4G 498.3G 0% /vmfs/volumes/MSA2000_LUN1 - Итак, мы убедились, что имя хранилища и его идентификатор соответствуют LUN, который мы хотим удалить;
- Теперь получим информацию о разделах на нашем хранилище:
partedUtil getptbl /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000
gpt
65270 255 63 1048576000
1 2048 1048575966 AA31E02A400F11DB9590000C2911D1B8 vmfs 0 - В нашем случае на LUN есть раздел с файловой системой vmfs;
- Удалим с данного диска (LUN) VMFS раздел с идентификатором 1 (будьте внимательны!!!)
partedUtil delete /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000 1
После удаления раздела можно отключить LUN в vSphere – Unmount Datastore. Ошибка «datastore is in use» не должна появиться.
Выберите ESXi хосты, от которых нужно отключить VMFS хранилище:
Или можно сделать Detach из списка подключенных устройств хранения на хосте. В результате статус подключения изменится на Detached.
После этого vmfs хранилище можно удалить (Delete Datastore) и хранилище пропадет из vSphere.