Случилось так, что по ошибке на затер разметку диске (slice) на дисках, которые использовались в Vmware. После этого диск (datastore) отвалился из Vmware и виртуалки стали не доступны. Первое, что пришло в голову — ПИЗДЕЦ. Дело было вечером, хоть серваки и были с тестовыми средами, но они были важными. Чтобы не наломать дров решил подойти к вопросу восстановления утром: Утро вечера мудренее.
Пока ехал с работы и потом утром на работу думал, как лучше поступить. Понятное дело, что данные сохранились на диске и была убита лишь разметка диска. Пошел курить KB Vmware и нашел метод восстановления он описан ниже
сначала в консоле Vmware запускаем скрипт:
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
В результате мы получим следующее:
[.....]
218659 255 63 3512767488
1 2048 3512767454 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
Checking offset found at 2048:
0200000 d00d c001
0200004
1400000 f15e 2fab
1400004
0140001d 64 61 74 61 73 74 6f 72 65 33 00 00 00 00 00 00 |datastore3......|
0140002d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
[.....]
Мы знаем теперь, что данные начинаются со смещения 2048.
Теперь запускаем команду:
partedUtil getUsableSectors /vmfs/devices/disks/naa.600c0ff000153300b7bd885301000000 34 3512767454
если Вы получите ошибку:
"partition table invalid","unable to satisfy all constraints on the partition"
— то не отчаиваться
запускаем
partedUtil getUsableSectors /vmfs/devices/disks/naa.600c0ff000153300b7bd885301000000 34 3512767400 с наименьшим значением и все должно пройти ОК
потом повторяем
partedUtil getUsableSectors /vmfs/devices/disks/naa.600c0ff000153300b7bd885301000000 34 3512767454 и все должно быть ОК .. если нет то исполняем
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
берем новое значение в стороку
1 2048 3512767454 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
и запускаем
partedUtil getUsableSectors /vmfs/devices/disks/naa.600c0ff000153300b7bd885301000000 34 3512767454
если все ОК запускаем
vmkfstools -V
после чего datastore появится в VMware