Hyper-V Sanal Makinesi Durdurma/Başlatma Durumunda Takılıyor


Hyper-V üzerinde çalışan sanal makineniz herhangi bir nedenle takılıyorsa, yanıt vermeyi durdurduysa ve Hyper-V Yönetici konsolundaki ilgili düğmelere tıkladıktan sonra başlatmıyor/durdurmuyor/sıfırlamıyorsa, çalışanı zorla durdurabilirsiniz (öldürebilirsiniz). Hyper-V ana bilgisayarında bu VM için işlem. Tüm hipervizör ana bilgisayarını ve tüm çalışan VM'leri (eğer Hyper-V HA kümesine ve Live-Migration'a sahip değilsiniz).

Hyper-V VM, Durdurma/Başlatma/Yedekleme Durumunda Takıldı

Bir Hyper-V ana bilgisayarındaki sanal makinelerinizden birinin Durdurma (Kritik Durdurma), Başlatma (%10 Başlatma) veya konumunda takılı kaldığını varsayalım. Durum yedekleniyor.

Bu durumda konuk işletim sistemi yanıt vermeyi durdurur ve Hyper-V Yöneticisindeki "Kapat", "Kapat" ve "Sıfırla" düğmeleri kullanılamaz hale gelir (grileşir) veya basıldığında aşağıdaki hatayı verir:

The application encountered an error while attempting to change the state of VM.
Failed to change state.
The operation cannot be performed while the object is in its current state.

Hyper-V'niz, Hyper-V Manager konsolunda kayıtlı sanal makinelerin listesini göstermiyorsa ve "Sanal Makine Yönetimi hizmetine bağlanılıyor" hatası veriyorsa, vmms'yi yeniden başlatmanız gerekir. .exe (Hyper-V Sanal Makine Yönetimi hizmeti) işlemi. Bu güvenli bir işlemdir ve çalışan VM'leri kesintiye uğratmaz. Vmms hizmetinin vmms.exe işlemini yeniden başlatmanın en kolay yolu,

services.msc

konsol veya PowerShell hizmet yönetimi cmdlet'leri ile:

Get-Service vmms | Restart-Service

Hyper-V'de Askıya Alınmış Bir Sanal Makine Nasıl Durdurulur/Kilitlenir?

Tüm Hyper-V ana bilgisayarını yeniden başlatmadan bu kadar sıkışmış bir VM'yi kapatmaya/yeniden başlatmaya zorlamanın tek yolu, ana bilgisayar işletim sistemindeki çalışan sürecini sonlandırmaktır. Bir Hyper-V ana bilgisayarındaki tüm VM'ler, vmwp.exe işlem örnekleri (Sanal Makine Çalışan İşlemi) kullanılarak başlatılır. Belirli bir işlem PID'sini bulmak için sanal makinenin GUID'sini bulmanız gerekir.

Hyper-V Yönetici konsolunu kullanarak VM GUID'sini alabilirsiniz. Hyper-V sunucu ayarlarını açın. Sunucu bölümü, VM yapılandırma dosyalarının saklandığı dizini içerir (bizim durumumuzda D:\VMStore'dur).

Bu dizini Dosya Gezgini'nde açın ve sıkışmış sanal makinenizin adını içeren klasörü bulun. VM yapılandırma dosyasının adında belirtilen GUID'yi şu şekilde kopyalayın:

*.vmcx

eklenti.

Görev Yöneticisini çalıştırın ve Ayrıntılar sekmesine gidin. Tüm sanal makineler kendi vmwp.exe işlemi örneği altında çalışmaktadır. VM'nizden hangi işlemin sorumlu olduğunu belirlemek için, daha önce edindiğiniz askıya alınmış VM'nin GUID'sine ihtiyacınız vardır. Kullanıcı adı sütununda sanal makinenizin GUID'sine sahip vmwp.exe işlemini bulun. Bu sanal makine sürecini sonlandırın (Görevi Sonlandır).

Benzer şekilde, İşlem Gezgini aracını kullanarak bir Hyper-V ana bilgisayarında askıya alınmış bir sanal makine işlemini bulabilir ve durdurabilirsiniz.

  1. Process Explorer'ı yönetici olarak çalıştırın ve Tutamak veya DLL Bul'u tıklayın (veya Ctrl-F'ye basın);

  2. Başlatma/durdurma durumunda takılan Hyper-V sanal makinesinin sanal diskine (*.vhdx) giden yolu belirtin;

  3. Process Explorer, sanal makine VHDX dosyasını kullanan tüm işlemleri listeleyecektir;

  4. vmwp.exe sanal makine işlemini bulun ve sonlandırın (Sağ tıklayın -> İşlemi Sonlandır).

    Daha önce size, diğer işlemler tarafından kilitlenen dosyaları bulmak ve kilidini açmak için İşlem Gezgini'ni nasıl kullanacağınızı göstermiştik.

Sanal makine zorla durdurulacak. Artık VM ile istediğinizi yapabilirsiniz.

PowerShell ile Hyper-V VM'yi Durdurmaya Zorlayın

Yanıt vermeyen sanal makine sürecini PowerShell kullanarak bulmak ve sonlandırmak çok daha kolaydır. PowerShell konsolunu yönetici olarak çalıştırın (hesabınız Hyper-V "Hyper-V yöneticileri" grubunun bir üyesi olmalıdır).

Bu durumda, Hyper-V PowerShell modülündeki yerleşik Stop-VM cmdlet'i sanal makineyi kapatmanıza izin vermez. çalıştırmayı denerseniz

Stop-VM -Force

komut, o da kilitleniyor. Açıkçası VM'den bir yanıt bekleniyor.

Bir VM işlemini GUID'sine göre öldürmeniz gerekir. VM GUID'ini adına göre alabilirsiniz. Örneğin, SVM-GUARDEDHOST1 adlı VM'nin GUID'sini almak için şu komutu çalıştırın:

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

VM'nin tam adını yazmak istemiyorsanız, bu Hyper-V ana bilgisayarında kayıtlı tüm VM'leri ve kimliklerini listeleyebilirsiniz:

Get-VM | Select VMName, VMId, path

Sonuç listesinden VMID'nizi kopyalayın.

Bu VMGUID için vmwp.exe işlem tanımlayıcısını (PID) bulun:

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

Ardından, İşlemi Durdur komutunu kullanarak asılı bir Hyper-V sanal makinesinin işlemini zorla sonlandırmanız gerekir:

Stop-Process ($VMWMProc.ProcessId) -Force

İpucu. Ayrıca VMWare ESXi'de takılı kalmış bir VM'nin nasıl sonlandırılacağına dair basit bir kılavuzumuz var.

Hyper-V VM, Yedekleme Durumunda Takıldı

Bir Hyper-V ana bilgisayarında bir sanal makineyi yedeklerken, Hyper-V sanal makinesinin Yedekleniyor durumuyla Çalışıyor durumunda takıldığını deneyimleyebilirsiniz. Ancak, Hyper-V Yöneticisi aracılığıyla VM'yi durduramaz veya başlatamazsınız.

Hyper-V ana bilgisayarını yeniden başlatmak istemiyorsanız, önce "Microsoft Hyper-V VSS Writer" hizmetinin durumunu kontrol edin:

vssadmin list writers

Komutun bir hata döndürmediğinden emin olun. Daha sonra PowerShell komutunu kullanarak "Hyper-V Virtual Machine Management" hizmetini yeniden başlatmanız gerekir:

Get-service vmms | stop-process

Vmms.exe işleminin sona erdiğinden emin olun. Değilse, sonlandırmaya zorlayın:

Get-Process | Where-Object { $_.ProcessName -eq 'vmms' } | Stop-Process

Artık Hyper-V yönetim hizmetini başlatabilirsiniz:

Start-Service vmms

Sanal Makine Yönetimi hizmetinin yeniden başlatılması, Hyper-V ana bilgisayarında VSS Yazıcının durumunu sıfırlamalıdır.

Hyper-V Yöneticisi VM Durumunu Değiştiremedi

Bazen, kapatılan bir sanal makine işlemini sonlandırdıktan sonra bile sanal makineyi açamazsınız. Ayrıca, Başlangıç durumunda bir hatayla donuyor:

Virtual Machine Connection
Failed to Change State.

Bu durumda, aşağıdaki seçenekleri kontrol edin:

  • Hyper-V VM dosyalarının depolandığı diskte yeterli boş alan olup olmadığını kontrol edin;

  • VM ayarlarında bir ISO görüntüsü bağlıysa, bu görüntü dosyasının belirtilen yolda mevcut olup olmadığını kontrol edin;

  • VM'nin ağ bağdaştırıcısı ayarlarını kontrol edin. Sanal ağ bağdaştırıcıları mevcut bir Hyper-V sanal anahtarına bağlanmalıdır (herhangi bir NIC için Ağ Bağdaştırıcısı - Yapılandırma Hatası durumu olmamalıdır);

  • Hyper-V Sanal Yönetim Hizmetinin (VMMS) çalıştığını ve Durdurma durumunda takılıp kalmadığını kontrol edin;

  • Virüsten koruma yazılımınızın sanal makine dosyalarına erişimi engellemediğinden emin olun. Virüsten koruma dışlamalarına VM dizinine yollar ekleyin (Windows Server'daki yerleşik Windows Defender virüsten koruma yazılımına sıcak ekleme dışlamalarına bakın);

  • Olay Görüntüleyici -> Uygulamalar ve Hizmet Günlükleri -> Microsoft -> Windows -> Hyper-V-Worker'da Hyper-V ile ilgili hataları kontrol edin;

  • Sanal Makine konuk işletim sistemlerinde uyku ve hazırda bekletme modunu devre dışı bırakın. Denetim Masası -> Güç Seçenekleri -> Plan ayarlarını değiştir -> Bilgisayarı uyku moduna geçir -> Asla yoluyla Windows'ta uykuyu devre dışı bırakabilirsiniz. Hazırda bekletme modunu devre dışı bırakmak ve bir Ubuntu Linux konuk işletim sisteminde uyumak için şu komutu çalıştırın:

    systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Yukarıdaki yöntemler yardımcı olmadıysa, tüm Hyper-V ana bilgisayarını yeniden başlatmanız gerekecek gibi görünüyor.

İlgili makaleler