Решение проблемы с запуском некоторых виртуалок после обновления VMWare ESXi с версии 4.1 на версию 5.1 или 5.5 (Problem with Power on some Virtual Machines after VMware ESXi 4.1 migration to ESXi 5.1 or 5.5)

Есть проблема, что после обновления VMWare ESXi 4.1 на версию 5.5 не запускаются некоторые виртуальные машины. При запуске получаем ошибку такого вида: 

Module DiskEarly power on failed. 
Cannot open the disk '/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk' 
or one of the snapshot disks it depends on. 
The system cannot find the file specified
VMware ESX cannot find the virtual disk "/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk". 
Verify the path is valid and try again.

В лог-файле виртуальной машины видим следующее: 

2017-06-14T16:03:07.936Z| Worker#0| I120: DISKLIB-CHAINESX : ChainESXOpenSubChainNode: 
can't create multiextent node 448d83c8- test1-s001.vmdk failed with error 
The system cannot find the file specified (0xbad0003, Not found)

2017-06-14T16:03:07.938Z| Worker#0| I120: DISKLIB-CHAIN : 
"/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk" : 
failed to open (The system cannot find the file specified).

Данная ошибка возникает из-за того, что модель vmkernel multiextent (vmkernel multiextent module) больше не загружается по умолчанию начиная с версии ESXi версии 5.1 (https://www.vmware.com/support/vsphere5/doc/vsphere-esx-vcenter-server-51-release-notes.html). Проверить это можно зайдя на сервер ESXi по SSH и загрузить этот модуль командой vmkload_mod multiextent. После этого виртуальная машина должна начать запускаться. Т.к. данный модуль при перезагрузке ESXi опять будет выключен – то исправим диск виртуальной машины, чтобы данный модуль был больше не нужен.

Делаем в следующей последовательности:

1. Подключаемся по SSH на сервер ESXi и загружаем модуль multiextent:

# vmkload_mod multiextent

2. Заходим в директорию с диском виртуальной машины и конвертируем диск используя vmkfstools и выбрав необходимый формат VMFS (zeroedthick или eagerzereodthick или thin):

# cd /vmfs/volumes/dir_with_my_vm/
# vmkfstools -i test1.vmdk test2.vmdk -d thin

Ждем окончания конвертации.

3. ***Удаляем старый диск

# vmkfstools -U test1.vmdk

4. Переименовываем новый диск (называем его как старый диск)

# vmkfstools -E test2.vmdk test1.vmdk

5. Выгружаем модуль multiextent:

# vmkload_mod -u multiextent

*** — на этом этапе вы можете столкнуться с тем, что удаление диска будет невозможно и будет ошибка:

Failed to delete virtual disk: Device or resource busy (1048585).

Решение:
При проверке каким процессом занят данный диск (# lsof | grep test1.vmdk) ничего найдено не будет. Красивого решения, как это обойти я не нашел. Решил так: заходим в настройки виртуалки через клиента, добавляем новый диск, удаляем старый диск (из настроек), делаем новый диск основным. После этого виртуальная машины будет успешно работать. Старый диск можно будет удалить вручную после перезапуска сервера ESXi.

Источник: http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=mmr_kc-0100751

Рубрики: VMware

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *