Как да спрете замразена виртуална машина на Hyper-V?

Ако виртуалната ви машина, работеща на хоста на Hyper-V, затвори по някаква причина, спре да реагира и не реагира на бутоните за захранване, изключване и нулиране в конзолата Hyper-V, единственият бърз начин за насилствено спиране на такава машина е да прекратите процеса на тази VM в хост ОС. Ще покажем как да принудим да рестартираме VM в Hyper-V на Windows Server 2016/2019, без да рестартираме целия сървър и да изпълняваме VM (ако нямате HA клъстер Hyper-V и Live-Migration).

Съдържание:

  • Hyper-V виртуалната машина замръзва в Спиране, Стартово състояние
  • Грешка Hyper-V: Свързване с услугата за управление на виртуална машина
  • Завършване на обесен VM процес с помощта на диспечера на задачите
  • Нулирайте окачен VM на Hyper-V VM с помощта на PowerShell
  • Hyper-V: Неуспешна промяна на състоянието на виртуалната машина

Hyper-V виртуалната машина замръзва в Спиране, Стартово състояние

Да предположим, че една от виртуалните машини на Hyper-V е замразена в състояние спиране (Критично спиране) / изходен (От 10%).

OS гостът спря да реагира и бутоните „Изключи“, „Изключи“ и „Нулиране“ в конзолата на Hyper-V Manager станат недостъпни или върнаха грешка при натискане:

Така че, да предположим, че една от виртуалните машини на Hyper-V виси, гостната ОС спира да реагира и бутоните за изключване, изключване и нулиране в конзолата на Hyper-V Manager стават недостъпни или връщат грешка при натискане:

Неуспешна промяна на състоянието Операцията не може да се извърши, докато обектът е в текущото си състояние 

Грешка Hyper-V: Свързване с услугата за управление на виртуална машина

Ако Hyper-V не показва виртуални машини в конзолата на Hyper-V Manager, връща „Свързване към услугата за управление на виртуална машина", Трябва да рестартирате процеса vmms.exe (Hyper-V управление на виртуални машини). Това е безопасна работа и няма да прекъсне работещите виртуални машини. Най-лесният начин да рестартирате процеса vmms.exe е чрез услугата vmms и през конзолата services.msc или команда:

Get-Service vmms | Рестартирайте услугата

Завършване на обесен VM процес с помощта на диспечера на задачите

Единственият начин за принудително изключване / рестартиране на такава замразена виртуална машина без рестартиране на целия хост сървър на Hyper-V е да прекрати работния си процес в гостната ОС. Всички VM на хост на Hyper-V стартират с помощта на процеса. vmwp.Търсейки (Virtual машина работник процес). За да търсите процес, трябва да разберете GUID на виртуалната машина.

Можете да определите VM GUID чрез конзолата за управление Hyper v мениджър. Отворете настройките на сървъра (Hyper v Настройки). Секцията на сървъра посочва директорията, в която се съхраняват конфигурационните файлове на VM (в нашия пример, D: \ VMStore).

Отворете тази директория във File Explorer и намерете директорията с името на замразената виртуална машина. Копирайте GUID, който е посочен в името на конфигурационния файл на VM с разширението * .vmcx.

Сега трябва да стартирате мениджъра на задачи (задача мениджър) и отидете на раздела детайли. Всички виртуални машини работят като част от техния собствен екземпляр на процес. vmwp.exe. За да определим кой процес е отговорен за кой VM, се нуждаем от предварително получения GUID на висящия VM. Намерете процеса vmwp.exe, който има колона потребител име Посочва се GUID на вашия VM. Завършете този процес (Крайна задача).

Виртуалната машина ще бъде принудена да спре. Сега можете да направите всичко с нея.

Нулирайте окачен VM на Hyper-V VM с помощта на PowerShell

Много по-лесно е да намерите и завършите процес на висяща виртуална машина с помощта на PowerShell. Стартирайте конзолата PowerShell с администраторски права (акаунтът трябва да е в локалната Hyper-V група администратори).

В този случай вграденият командлет Stop-VM няма да ви позволи да изключите VM. Ако се опитате да изпълните командата Stop-VM-Force, тя също замръзва. Очевидно очаква отговор от ВМ.

В този случай също трябва да завършите VM процеса по неговия идентификатор. Можете да получите GUID VM с неговото име. Например, за VM с име SVM-GUARDEDHOST1, изпълнете командата:

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

Ако не искате да въведете пълното име на VM, можете да изброите всички VM регистрирани на този хост на Hyper-V:

Get-VM | Изберете Име, Id

Копирайте GUID на желания VM от списъка.

Сега трябва да намерите идентификатора на процеса (PID) „vmwp.exe“ за вашия VMGUID:

$ VMWMProc = (Get-WmiObject Win32_Process |? $ _. Име -матч 'VMWP' -и $ _. CommandLine -матч $ VMGUID)

След това, използвайки командата Stop-Process, трябва да принудите да прекратите този процес:

Стоп-процес ($ VMWMProc.ProcessId) -Force

Ето колко е лесно да се прекрати работният процес на спряна Hyper-V виртуална машина.

съвет. Ние също описваме подобна процедура за завършване на процеса на висящ VM на хост на VMWare ESXi..

Hyper-V: Неуспешна промяна на състоянието на виртуалната машина

Понякога се случва, че дори след приключване на процеса на затваряне, не можете да включите VM и той замръзва в състоянието на стартиране с грешка:

Връзката с виртуална машина не можа да промени състоянието. Промяна на състоянието не бе успешно.

В този случай проверете следните опции:

  • Проверете дали има достатъчно свободно място на диска, на който се съхраняват VM файловете;
  • Ако в настройките на VM е свързано ISO изображение, проверете неговата наличност;
  • Проверете мрежовите настройки на VM. Виртуалните мрежови адаптери трябва да бъдат свързани към съществуващ виртуален превключвател Hyper-V (състоянието на мрежовата мрежа не трябва да бъде - Грешка в конфигурацията);
  • Проверете дали услугата за виртуално управление на Hyper-V работи (VMMS) и не е замразена в състояние на спиране;
  • Уверете се, че вашият антивирус не блокира достъпа до VM файлове. Добавете пътя към VM директорията към антивирусните изключения (вижте как да добавяте изключения към вградения антивирус на Windows Server 2016 - Windows Defender);
  • Проверете за грешки в дневника на събитията Viewer -> Журнали за приложения и услуги -> Microsoft -> Windows -> Hyper-V-Worker.