Ошибка при запуске виртуальной машины - 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