Jak zatrzymać zamrożoną maszynę wirtualną na Hyper-V?

Jeśli maszyna wirtualna uruchomiona na hoście funkcji Hyper-V rozłącza się z jakiegoś powodu, przestaje odpowiadać i nie reaguje na przyciski zasilania, zamykania i resetowania w konsoli Hyper-V, jedynym szybkim sposobem na silne zatrzymanie takiej maszyny jest zakończenie procesu tej maszyny wirtualnej w system operacyjny hosta. Pokażemy, jak wymusić ponowne uruchomienie maszyn wirtualnych w Hyper-V w systemie Windows Server 2016/2019 bez ponownego uruchamiania całego serwera i uruchomionych maszyn wirtualnych (jeśli nie masz klastra HA Hyper-V i Live-Migration).

Treść

  • Maszyna wirtualna funkcji Hyper-V zawiesza się w stanie Zatrzymywanie, Uruchamianie
  • Błąd Hyper-V: Łączenie z usługą zarządzania maszyną wirtualną
  • Kończenie zawieszonego procesu maszyny wirtualnej za pomocą Menedżera zadań
  • Zresetuj zawieszoną maszynę wirtualną na maszynie wirtualnej funkcji Hyper-V za pomocą programu PowerShell
  • Hyper-V: Nie można zmienić stanu maszyny wirtualnej

Maszyna wirtualna funkcji Hyper-V zawiesza się w stanie Zatrzymywanie, Uruchamianie

Załóżmy więc, że jedna z maszyn wirtualnych na Hyper-V jest zamrożona Zatrzymywanie (Stopping-Critical) / Zaczynam (Począwszy od 10%).

System operacyjny gościa przestał odpowiadać, a przyciski „Wyłącz”, „Zamknij” i „Zresetuj” w konsoli Menedżera Hyper-V stały się niedostępne lub zwróciły błąd po naciśnięciu:

Załóżmy więc, że jedna z maszyn wirtualnych w Hyper-V zawiesza się, system operacyjny gościa przestaje odpowiadać, a przyciski Wyłącz, Zamknij i Resetuj w konsoli Menedżera Hyper-V stają się niedostępne lub zwracają błąd po naciśnięciu:

Nie można zmienić stanu Operacji nie można wykonać, gdy obiekt znajduje się w bieżącym stanie 

Błąd Hyper-V: Łączenie z usługą zarządzania maszyną wirtualną

Jeśli Twoja Hyper-V nie wyświetla maszyn wirtualnych w konsoli Menedżera Hyper-V, zwraca „Łączenie z usługą zarządzania maszyną wirtualną", Musisz ponownie uruchomić proces vmms.exe (usługa zarządzania maszyną wirtualną Hyper-V). Jest to bezpieczna operacja i nie spowoduje przerwania działających maszyn wirtualnych. Najłatwiejszym sposobem ponownego uruchomienia procesu vmms.exe jest skorzystanie z usługi vmms i konsoli services.msc lub polecenie:

Get-Service vmms | Uruchom ponownie usługę

Kończenie zawieszonego procesu maszyny wirtualnej za pomocą Menedżera zadań

Jedynym sposobem wymuszenia zamknięcia / ponownego uruchomienia takiej zamrożonej maszyny wirtualnej bez ponownego uruchamiania całego serwera hosta Hyper-V jest zakończenie przepływu pracy w systemie-gościu. Wszystkie maszyny wirtualne na hoście funkcji Hyper-V są uruchamiane przy użyciu tego procesu. vmwp.exe (Wirtualny Maszyna Pracownik Proces). Aby wyszukać proces, musisz znaleźć identyfikator GUID maszyny wirtualnej.

Identyfikator GUID maszyny wirtualnej można określić za pomocą konsoli zarządzania Hyper v Kierownik. Otwórz ustawienia serwera (Hyper v Ustawienia) Sekcja Serwer wskazuje katalog, w którym przechowywane są pliki konfiguracyjne maszyny wirtualnej (w naszym przykładzie D: \ VMStore).

Otwórz ten katalog w Eksploratorze plików i znajdź katalog o nazwie zamrożonej maszyny wirtualnej. Skopiuj identyfikator GUID określony w nazwie pliku konfiguracyjnego maszyny wirtualnej z rozszerzeniem * .vmcx.

Teraz musisz uruchomić menedżera zadań (Zadanie Kierownik) i przejdź do karty Szczegóły. Wszystkie maszyny wirtualne działają jako część własnej instancji procesu. vmwp.exe. Aby ustalić, który proces jest odpowiedzialny za daną maszynę wirtualną, potrzebujemy wcześniej uzyskanego identyfikatora GUID wiszącej maszyny wirtualnej. Znajdź proces vmwp.exe, który ma kolumnę Użytkownik imię Identyfikator GUID maszyny wirtualnej jest określony. Wykonaj ten proces (Zakończ zadanie).

Maszyna wirtualna zostanie zmuszona do zatrzymania. Teraz możesz z nią zrobić wszystko.

Zresetuj zawieszoną maszynę wirtualną na maszynie wirtualnej funkcji Hyper-V za pomocą programu PowerShell

Znacznie łatwiej jest znaleźć i ukończyć zawieszony proces maszyny wirtualnej za pomocą PowerShell. Uruchom konsolę PowerShell z uprawnieniami administratora (konto musi należeć do lokalnej grupy administratorów Hyper-V).

W takim przypadku wbudowane polecenie cmdlet Stop-VM nie pozwoli Ci wyłączyć maszyny wirtualnej. Jeśli spróbujesz uruchomić polecenie Stop-VM-Force, ona także marznie. Oczywiście oczekuje na odpowiedź od VM.

W takim przypadku musisz również ukończyć proces maszyny wirtualnej według jej identyfikatora. Możesz uzyskać identyfikator GUID maszyny Wirtualnej według jego nazwy. Na przykład dla maszyny wirtualnej o nazwie SVM-GUARDEDHOST1 uruchom polecenie:

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

Jeśli nie chcesz wpisywać pełnej nazwy maszyny wirtualnej, możesz wyświetlić listę wszystkich maszyn wirtualnych zarejestrowanych na tym hoście funkcji Hyper-V:

Get-VM | Wybierz Nazwa, identyfikator

Skopiuj identyfikator GUID żądanej maszyny wirtualnej z listy.

Teraz musisz znaleźć identyfikator procesu (PID) „vmwp.exe” dla swojego VMGUID:

$ VMWMProc = (Get-WmiObject Win32_Process |? $ _. Nazwa -match „VMWP” -i $ _. Linia poleceń -match $ VMGUID)

Następnie za pomocą polecenia Stop-Process musisz wymusić zakończenie tego procesu:

Stop-Process ($ VMWMProc.ProcessId) - Force

Tak łatwo jest wymusić zakończenie pracy zawieszonej maszyny wirtualnej Hyper-V.

Wskazówka. Opisujemy również podobną procedurę zakończenia procesu zawieszania się maszyny wirtualnej na hoście VMWare ESXi..

Hyper-V: Nie można zmienić stanu maszyny wirtualnej

Czasami zdarza się, że nawet po zakończeniu procesu rozłączania nie można włączyć maszyny wirtualnej i zawiesza się ona w stanie początkowym z błędem:

Połączenie maszyny wirtualnej nie zmieniło stanu. Nie udało się zmienić stanu.

W takim przypadku sprawdź następujące opcje:

  • Sprawdź, czy jest wystarczająca ilość wolnego miejsca na dysku, na którym przechowywane są pliki VM;
  • Jeśli obraz ISO jest podłączony w ustawieniach VM, sprawdź jego dostępność;
  • Sprawdź ustawienia sieciowe maszyny wirtualnej. Wirtualne karty sieciowe muszą być podłączone do istniejącego przełącznika wirtualnego Hyper-V (stan Network Network nie może być - Błąd konfiguracji);
  • Sprawdź, czy usługa wirtualnego zarządzania Hyper-V (VMMS) jest uruchomiona i nie jest zamrożona w stanie Zatrzymania;
  • Upewnij się, że Twój program antywirusowy nie blokuje dostępu do plików VM. Dodaj ścieżkę do katalogu VM do wyjątków antywirusowych (zobacz, jak dodać wyjątki do wbudowanego antywirusa systemu Windows Server 2016 - Windows Defender);
  • Sprawdź, czy w dzienniku zdarzeń nie ma błędów Podgląd zdarzeń -> Dzienniki aplikacji i usług -> Microsoft -> Windows -> Hyper-V-Worker.