SCROLL
Среднее время на прочтение: 2 мин.

Ошибка Failed to start the virtual machine (error-18) при запуске виртуальной машины на VMware vSphere 6.5

В работе имеется Blade-сервер Dell VRTX на лезвиях которых используется гипервизор VMware vSphere 6.5. Так как все лезвия используют одну дисковую корзину VRTX, то перемещение\миграция виртуальных машин осуществляется путем обычного разрегистрирования на одном лезвии и регистрация на другом.

[stextbox id=’info’]Такой метод миграции VM соответственно требует обязательного выключения машины, в отличии от использования vCenter. Но vCenter дорогой и не каждая организация готова его себе позволить, как в моем случае.[/stextbox]

 

В очередной раз понадобилось переместить VM (webserver_1) с одного лезвия на другой и в процессе этого столкнулся с трудностями запуска VM на целевом лезвии. В качестве памятки себе опишу свою проблему и ее решение.

 

На исходном лезвии выполнил завершение работы на виртуальной машине, но она не выключилась. Решил принудительно завершить ее работу через консоль, но в активных процессах виртуальную машину (webserver_1) не обнаружил, а вместо нее висела виртуальная машина с названием vm.572109.

Принудительно завершил процесс vm.572109 и разрегистрировал ее из текущего лезвия. На другом лезвии зарегестрировал ее и попытался запустить, но она не запустилась.

 

Долго висел статус «Running…»

 

После некоторого времени система выдала ошибки неудачного запуска VM:

  • Failed — An error occurred while creating temporary file for /vmfs/volumes/52d528e0-0d3b4675-5b88-18a99bdc13c1/webserver_1/webserver_1.vmx: The file already exists
  • Failed to start the virtual machine (error -18)

 

Эти ошибки означают что виртуальная машина, а точнее ее *.vmx файл (конфигурационный файл VM) заблокирован другим хостом и поэтому доступа к нему нет.

 

Через консоль видно что в каталоге VM присутствует файл блокировки *.vmx~

ls -l

total 37925912
-rw-------    1 root     root       2344806 Nov 23 10:08 vmware-1.log
-rw-------    1 root     root        210642 Nov 23 10:51 vmware-2.log
-rw-------    1 root     root        183345 Nov 23 10:58 vmware-3.log
-rw-------    1 root     root        362461 Nov 27 04:54 vmware.log
-rw-------    1 root     root       1311232 Nov 27 04:53 webserver_1-ctk.vmdk
-rw-------    1 root     root     21474836480 Nov 27 04:53 webserver_1-flat.vmdk
-rw-------    1 root     root          8684 Nov 27 04:53 webserver_1.nvram
-rw-------    1 root     root           612 Nov 26 21:20 webserver_1.vmdk
-rw-------    1 root     root            44 Nov 26 21:20 webserver_1.vmsd
-rwx------    1 root     root          3867 Nov 27 04:53 webserver_1.vmx
-rw-------    1 root     root          3445 Oct  9 05:07 webserver_1.vmxf
-rwx------    1 root     root          3868 Nov 27 04:53 webserver_1.vmx~
-rw-------    1 root     root       6554112 Nov 27 04:53 webserver_2-ctk.vmdk
-rw-------    1 root     root     107374182400 Nov 27 04:53 webserver_2-flat.vmdk
-rw-------    1 root     root           618 Nov 26 21:20 webserver_2.vmdk

 

 

Смотрим какой хост держит блокировку файла. Выполняем команду:

vmkfstools -D webserver_1.vmx

В выводе видим владельца блокировки файла:

  • 5d988d2f-2f22bc92-f10e-18a99bdc13db — где 18a99bdc13db mac-адрес (18:a9:9b:dc:13:db) хоста.
Lock [type 10c00001 offset 246724608 v 67168, hb offset 4161536
gen 203, mode 0, owner 5d988d2f-2f22bc92-f10e-18a99bdc13db mtime 10479
num 0 gblnum 0 gblgen 0 gblbrk 0]
Addr <4, 529, 15>, gen 66976, links 1, type reg, flags 0, uid 0, gid 0, mode 100700
len 3867, nb 1 tbz 0, cow 0, newSinceEpoch 1, zla 2, bs 8192

[stextbox id=’warning’]Если в выводе 00000000-00000000-0000-000000000000 , то это значит что файл никем не заблокирован[/stextbox]

 

 

Методом просмотра по каждому хосту ESXi вкладки Physical NICs находим нужный хост который держит блокировку файла.

Либо через консоль можно вывести параметры сетевых адаптеров:

esxcfg-nics -l
Name PCI Driver Link Speed Duplex MAC Address MTU Description
vmnic0 0000:01:00.0 bnx2x Up 1000Mbps Full 18:a9:9b:dc:13:db 1500 QLogic Corporation NetXtreme II BCM57810 10 Gigabit Ethernet
vmnic1 0000:01:00.1 bnx2x Up 1000Mbps Full 18:a9:9b:dc:13:de 1500 QLogic Corporation NetXtreme II BCM57810 10 Gigabit Ethernet

 

На искомом хосте необходимо завершить процесс который держит блокировку. Находим LWID процесса по имени файла блокировки (webserver_1.vmx~) командой:

vmkvsitools lsof | grep webserver_1.vmx~

Процесс найден:

572109 vmx FILE 46 /vmfs/volumes/52d528e0-0d3b4675-5b88-18a99bdc13c1/webserver_1/webserver_1.vmx~

 

Завершаем принудительно процесс командой:

kill -9 572109

[stextbox id=’warning’]Обращаю внимание что 572109 это LWID моего процесса, в команду kill поставляем свой LWID![/stextbox]

 

Теперь если снова проверим состояние блокировки файла webserver_1.vmx, то видим что более он никем не заблокирован:

vmkfstools -D webserver_1.vmx

Lock [type 10c00001 offset 246724608 v 67168, hb offset 4161536
gen 203, mode 0, owner 00000000-00000000-0000-000000000000 mtime 10479
num 0 gblnum 0 gblgen 0 gblbrk 0]
Addr <4, 529, 15>, gen 66976, links 1, type reg, flags 0, uid 0, gid 0, mode 100700
len 3867, nb 1 tbz 0, cow 0, newSinceEpoch 1, zla 2, bs 8192

 

 

После всех этих манипуляй у меня успешно запустилась VM на целевом лезвии. Вот такие случаются ньюансы при подобном методе переноса VM между лезвиями Dell VRTX.

Обсуждение

1 комментариев
  • прямо чейчас сижу за гипервизором, с которого сняты эти скриншоты)