Сейчас мы расскажем, как восстановить удаленный Datastore в ESXi vSphere (7, 6.5 , 6.0). Для примера удалим имеющееся хранилище, которое содержит файлы виртуальных машин.
Теперь включим SSH на хосте
Подключаемся к хосту, на котором удален Datastore
Смотрим через веб-интерфейс vSphere расположение хранилища
Получим информацию о хранилище, выполнив следующую команду
# 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
А сейчас узнаем информацию о таблице разделов на хранилище:
# partedUtil getptbl /vmfs/devices/disks/{Device identifier}
Далее нужно узнать начало и конец блоков в VMFS разделе:
# partedUtil getUsableSectors /vmfs/devices/disks/{Device identifier}
Теперь пометим диск, как GPT
# partedUtil mklabel /vmfs/devices/disks/{Device identifier} gpt
Сейчас нам нужно создать таблицу разделов, но сперва достанем GUID из VMFS раздела, так как мы потеряли VMFS раздел. Если бы это был раздел vSAN, то мы должны были использовать vSAN GUID из таблицы. Выполним следующую команду:
# partedUtil showGuids
Теперь создадим таблицу разделов:
# partedUtil setptbl /vmfs/devices/disks/{Device identifier} gpt "1 2048 {end block in VMFS partition} {Partition GUID} 0"
Запустим vmkfstool чтобы примонтировать удаленный Datastore и пересканируем все устройства.
# vmkfstools -V
# esxcli storage core adapter rescan --all
Проверим в клиенте vSphere появилось хранилище или нет
Datastore появился, но размер не корректный. Чтобы это исправить, посмотрим в vmkernel log. Лучше всего это сделать через ssh, выполнив команду:
# tail -f /var/log/vmkernel.log | grep actual
Теперь нам нужно прибавить 2047 к бОльшему значению, чтобы получилось корректное окончание блоков:
167770079 + 2047 = 167772126
А теперь снова проверим хранилище и примонтируем его, если необходимо
На этом все. Вот такой реальный способ восстановления хранилища на VMware ESXi vSphere. Можете поделиться своим опытом восстановления в комментариях.