Пост

Ошибка при запуске виртуальной машины - vmware esx cannot find the virtual disk

VMware ESXi - это программное обеспечение для виртуализации серверов, которое позволяет консолидировать приложения и уменьшить затраты на управление инфраструктурой IT.

Перестала запускаться виртуальная машина. В процессе гугления выяснилось, что в каталоге с виртуальной машиной отсутствует файл с конфигурацией. Восстановим (создадим) его.

В VMware vSphere включаем SSH, и подключаемся. Затем переходим в каталог с нашей виртуальной машиной

1
# cd /vmfs/volumes/datastore2/srv-virtual-01

Смотрим размер flat-диска

1
2
# ls -l srv-virtual-010-flat.vmdk
-rw------- 1 root     root     85899345920 Jul 29  2016 srv-virtual-010-flat.vmdk

При помощи утилиты vmkfstools создаем новый vmdk-файл

1
# vmkfstools -c 85899345920 -d thin -a lsilogic new.vmdk

где

  • 85899345920 - размер (узнали из предыдущего шага)
  • thin - тип диска
  • lsilogic - адаптер

После выполнения этого действия в каталоге появится 2 файла:

  • new.vmdk - файл конфигурации, он нам и нужен
  • new-flat.vmdk - файл с данными

Удаляем файл с данными

1
# rm new-flat.vmdk

Переименовываем new.vmdk в нужный нам и редактируем его

1
2
# mv new.vmdk srv-virtual-010.vmdk
# vi srv-virtual-010.vmdk

Находим строку и меняем:

1
RW 167772160 VMFS "new-flat.vmdk"

на

1
RW 167772160 VMFS "srv-virtual-010-flat.vmdk"

Так же, у меня в каталоге присутствовали файлы

1
2
-rw------- 1 root     root     18035675136 May 23 09:14 srv-virtual-010-000002-delta.vmdk
-rw------- 1 root     root           330 May 23 09:13 srv-virtual-010-000002.vmdk

Как мне удалось выяснить, это файл с данными и файл конфигурации, которые появились после того, как сделали snapshot

Смотрим содержимое файла конфигурации srv-virtual-010-000002.vmdk

1
2
3
4
5
6
7
8
9
10
11
12
# cat srv-virtual-010-000002.vmdk
# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=a02b6973
parentCID=e650b626
isNativeSnapshot="no"
createType="vmfsSparse"
parentFileNameHint="srv-virtual-010-000001.vmdk"
# Extent description
RW 167772160 VMFSSPARSE "srv-virtual-010-000002-delta.vmdk"
...

Нас интересуют строки:

1
2
parentCID=e650b626
parentFileNameHint="srv-virtual-010-000001.vmdk"

Значение parentCID файла srv-virtual-010-000002.vmdk соответствует значению CID файла srv-virtual-010-000001.vmdk
Но файл srv-virtual-010-000001.vmdk у нас отсутствует, и мы в начале статьи создали новый файл конфигурации srv-virtual-010.vmdk
Смотрим его содержимое:

1
2
3
4
5
6
7
8
9
10
11
12
# сat srv-virtual-010.vmdk
# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=5d2981c6
parentCID=ffffffff
isNativeSnapshot="no"
createType="vmfs"

# Extent description
RW 167772160 VMFS "srv-virtual-010-flat.vmdk"
...

Запоминаем строку

1
CID=5d2981c6

Теперь редактируем файл конфигурации srv-virtual-010-000002.vmdk, в котором меняем значение parentCID и parentFileNameHint

1
2
3
4
5
6
7
8
9
10
11
# vi srv-virtual-010-000002.vmdk
# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=a02b6973
parentCID=5d2981c6 ## значение CID файла srv-virtual-010.vmdk
isNativeSnapshot="no"
createType="vmfsSparse"
parentFileNameHint="srv-virtual-010.vmdk" ## наш вновь созданный файл конфигурации
# Extent description
RW 167772160 VMFSSPARSE "srv-virtual-010-000002-delta.vmdk"

После всех этих манипуляций моя виртуальная машина запустилась

При составлении материала были использованы следующие статьи:
http://geckich.blogspot.com/2011/12/cannot-open-disk-or-vmware-esx-cannot.html
https://kb.vmware.com/s/article/1026353

Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.