Найти тему
WinITPro.ru - Блог админа

Как выключить зависшую виртуальную машину Hyper-V

В том случае, если ваша виртуальная машина, запущенная на Hyper-V по каким-то причинам зависла, перестала отвечать, и не реагирует на кнопки включения/выключения/перезагрузки  виртуальной машины в консоли Hyper-V, единственный быстрый способ принудительно остановить такую машину —  «пристрелить» процесс на хостовой ОС, отвечающий за данную ВМ. Покажем как это сделать на Hyper-V, работающем на Windows Server 2016.

Итак, предположим, что одна из ВМ на Hyper-V зависла, гостевая ОС перестала отвечать, а кнопки  «Turn Off», «Shut Down» и  «Reset» в консоли Hyper-V Manager стали недоступны либо при нажатии возвращают ошибку:

Failed to change state

The operation cannot be performed while the object is in its current state

Чтобы принудительно остановить / перезапустить такую ВМ без перезагруки всего хостового сервера, нужно завершить процесс этой ВМ. Для этого нужно узнать GUID виртуальной машины.

Определить GUID ВМ, можно открыв в консоли управления Hyper—V Manager настройки сервера (Hyper—V Settings). В разделе Server указано местоположение конфигурационных файлов ВМ (в нашем примере D:\VMStore).

-2

Перейдите в данный каталог и найдите  каталог с именем вашей виртуальной машины. Нам требуется запомнить GUID, который указан в имени конфигурационных файлов ВМ.

-3

Теперь нужно запустить диспетчер задач (Task Manager) и переключится на вкладку Details. Все виртуальные машины запускаются в рамках собственного экземпляра процесса vmwp.exe. Чтобы определить какой процесс за какую ВМ отвечает, нам нужен полученный ранее GUID зависшей ВМ. Найдите процесс vmwp.exe, в столбце User name которого указан полученный GUID. Завершите данный процесс (End Task).

Теперь нужно запустить диспетчер задач (Task Manager) и переключится на вкладку Details. Все виртуальные машины запускаются в рамках собственного экземпляра процесса vmwp.exe.  Чтобы определить какой процесс за какую ВМ отвечает, нам нужен  полученный ранее GUID зависшей ВМ. Найдите процесс vmwp.exe, в столбце User name которого указан полученный GUID. Завершите данный процесс (End Task).
Теперь нужно запустить диспетчер задач (Task Manager) и переключится на вкладку Details. Все виртуальные машины запускаются в рамках собственного экземпляра процесса vmwp.exe. Чтобы определить какой процесс за какую ВМ отвечает, нам нужен полученный ранее GUID зависшей ВМ. Найдите процесс vmwp.exe, в столбце User name которого указан полученный GUID. Завершите данный процесс (End Task).

Виртуальная машина будет остановлена. Теперь вы сможете делать с ней все что угодно. Но! Гораздо проще найти и завершить процесс зависшей виртуальной машины с помощью PowerShell. В это случае нам понадобится только ее имя.

Получим GUID для ВМ с именем SVM-GUARDEDHOST1:

$VMGUID = (Get-VM "SVM-GUARDEDHOST1").ID

Найдём идентификатор процесса ‘vmwp.exe’  для данного VMGUID:

$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})

И с помощью Stop-Process принудительно завершим этот процесс:

Stop-Process ($VMWMProc.ProcessId) –Force

-6

Вот так несложно можно принудительно завершить рабочий процесс подвисшей виртуальной машины Hyper-V.

Совет. У нас также описана аналогичная процедура  по завершению процесса зависшей ВМ на хосте VMWare ESXi.

Источник

Windows
66,2 тыс интересуются