Рассмотрим гипотетическую проблему потери или повреждения VMFS хранилища, подключенное к ESXi хосту/vSphere. Например, из-за человеческой ошибки, когда администратор VMware случайно удалил VMFS хранилище, или когда диск/LUN с VMFS был отключен/потерян из-за ошибок на устройстве хранения/резервного копирования. В этой статье мы покажем, как вручную восстановить таблицу разделов на диске, где находилось VMFS хранилище.
Допустим администратор VMware, случайно выбрал
Delete
вместо
Unmount
и удалил VMFS хранилище.
Откройте интерфейс клиента vCenter, перейдите в раздел Storage -> Devices и найдите в списке диск (LUN) с ранее подключенным vmfs datastore. Нужно получить полный путь к диску (с идентификатором naa). На моем скриншоте это:
/vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
Включите SSH доступ на хосте ESXi, с которого доступен удаленный LUN и подключитесь к нему с помощью ssh клиента (я использую встроенный ssh клиент Windows)
Проверьте осталась ли таблица разделов на этом устройстве:
partedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
Команда вернула, что на указанном диске/LUN есть таблица разделов GPT
gpt 1305 255 63 20971520
Теперь нужно получить начальный и конечный блок раздела удаленного VMFS на диске.
Чтобы вывести суммарную информацию о всех разделах, доступных с ESXi хоста, и найти начальный блок удаленного VMFS раздела, выполните такой скрипт:
offset="128 2048"; for dev in `esxcfg-scsidevs -l | grep "Console Device:" | awk {'print $3'}`; do disk=$dev; echo $disk; partedUtil getptbl $disk; { for i in `echo $offset`; do echo "Checking offset found at $i:"; hexdump -n4 -s $((0x100000+(512*$i))) $disk; hexdump -n4 -s $((0x1300000+(512*$i))) $disk; hexdump -C -n 128 -s $((0x130001d + (512*$i))) $disk; done; } | grep -B 1 -A 5 d00d; echo "---------------------"; done
В данном примере вывела информацию о нашем удаленном разделе (testVMFS) и мы получили номер начального блока 2048 этого раздела.
Теперь нужно получить конечный блок VMFS раздела на диске:
partedUtil getUsableSectors /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
В нашем примере это 20971486.
partedUtil mklabel /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt
Теперь нужно узнать GUID таблицы разделов для VMFS. Это всегда AA31E02A400F11DB9590000C2911D1B8.
Вы можете вывести все возможные GUID таблиц разделов с помощью команды:
partedUtil showGuids
Итак, мы получили следующие данные:
- LUN ID —
naa.60003ff44dc75adc87daa4e08f467565
- Start Block –
2048
- End Block –
2097148
- GPT GUID –
AA31E02A400F11DB9590000C2911D1B8
Теперь создайте таблицу разделов на вашем диске используя полученные вами данные:
partedUtil setptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt "1 2048 20971486 AA31E02A400F11DB9590000C2911D1B8 0"
Еще раз проверим разделы на диске, и убедимся, что теперь на нем виден VMFS раздел:
partedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
Теперь нужно смонтировать данное VMFS хранилище:
vmkfstools -V
esxcli storage core adapter rescan --all
Откройте клиент vSphere, убедитесь что удаленное VMFS хранилище появилось. Смонтируйте его.
На VMFS хранилище сохранились все файлы, в том числе iso образы и файлы виртуальных машин.
Инструкция актуальна для VMware ESXi/vSphere версий 6.0, 6.5 и 7.0.