Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

หากเครื่องเสมือนของคุณทำงานบน Hyper-V ติดขัดด้วยเหตุผลบางประการ หยุดตอบสนอง และไม่เริ่ม/หยุด/รีเซ็ตหลังจากคลิกปุ่มที่เกี่ยวข้องในคอนโซล Hyper-V วิธีเดียวที่จะแก้ไขปัญหานี้ได้คือบังคับให้ฆ่า กระบวนการที่รับผิดชอบ VM นี้บนโฮสต์ OS เราจะแสดงวิธีบังคับรีสตาร์ท Hyper-V VM ที่ทำงานบน Windows Server 2016/2019 โดยไม่ต้องรีบูตโฮสต์ทั้งหมดและ VM ที่ทำงานอยู่ทั้งหมด (หากคุณไม่มีคลัสเตอร์ Hyper-V HA และ Live-Migration)

สารบัญ:

  • Hyper-V VM ติดอยู่ในสถานะ "กำลังหยุด/กำลังเริ่ม"
  • Hyper-V Manager ค้างอยู่ใน “กำลังเชื่อมต่อกับบริการการจัดการเครื่องเสมือน”
  • จะฆ่ากระบวนการ Hung VM ในตัวจัดการงานได้อย่างไร
  • ฆ่า Hyper-VM ที่แช่แข็งโดยใช้ PowerShell
  • Hyper-V:ไม่สามารถเปลี่ยนสถานะ VM

Hyper-V VM ติดอยู่ในสถานะ “กำลังหยุด/กำลังเริ่มต้น”

สมมติว่า Hyper-V VM ตัวใดตัวหนึ่งของคุณติดอยู่ใน หยุด (หยุด-วิกฤติ) หรือ เริ่มต้น (เริ่มต้น x%) สถานะ

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

ระบบปฏิบัติการของแขกไม่ตอบสนองและปุ่ม "ปิด", "ปิดเครื่อง" และ "รีเซ็ต" ใน Hyper-V Manager ไม่พร้อมใช้งาน หรือส่งคืนข้อผิดพลาดต่อไปนี้เมื่อกด:

แอปพลิเคชันพบข้อผิดพลาดขณะพยายามเปลี่ยนสถานะของ VM
ไม่สามารถเปลี่ยนสถานะได้
ไม่สามารถดำเนินการได้ในขณะที่วัตถุอยู่ในสถานะปัจจุบัน

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

Hyper-V Manager ค้างอยู่ที่ “กำลังเชื่อมต่อกับบริการการจัดการเครื่องเสมือน”

หาก Hyper-V ของคุณไม่แสดงเครื่องเสมือนในคอนโซล Hyper-V Manager และส่งคืนข้อผิดพลาด “การเชื่อมต่อกับบริการการจัดการเครื่องเสมือน” คุณต้องรีสตาร์ท vmms.exe (บริการจัดการเครื่องเสมือน Hyper-V ) กระบวนการ. นี่เป็นการดำเนินการที่ปลอดภัยและจะไม่ขัดจังหวะ VM ที่ทำงานอยู่ วิธีที่ง่ายที่สุดในการเริ่มต้นกระบวนการ vmms.exe ใหม่คือผ่านบริการ vmms โดยใช้คอนโซล services.msc หรือด้วย cmdlet การจัดการบริการ PowerShell:

Get-Service vmms | Restart-Service

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

จะฆ่ากระบวนการ Hung VM ในตัวจัดการงานได้อย่างไร

วิธีเดียวที่จะบังคับให้ปิดเครื่องรีสตาร์ท VM ที่ค้างอยู่โดยไม่ต้องรีบูตโฮสต์ Hyper-V ทั้งหมดคือการยุติเวิร์กโฟลว์ที่ทำงานอยู่ใน guest OS VM ทั้งหมดบนโฮสต์ Hyper-V เริ่มต้นโดยใช้ vmwp.exe กระบวนการ (กระบวนการของผู้ปฏิบัติงานเครื่องจักรเสมือน ). ในการค้นหากระบวนการ คุณต้องค้นหา GUID ของเครื่องเสมือน

คุณสามารถรับ VM GUID ผ่าน Hyper-V ผู้จัดการ คอนโซล เปิดการตั้งค่าเซิร์ฟเวอร์ Hyper-V ในส่วนเซิร์ฟเวอร์ ตำแหน่งของไฟล์การกำหนดค่า VM จะแสดงขึ้น (ในกรณีของเราคือ D:\VMStore)

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

เปิดไดเร็กทอรีนี้ใน File Explorer และค้นหาโฟลเดอร์ที่มีชื่อเดียวกับเครื่องเสมือนของคุณ คัดลอก GUID ที่ระบุในชื่อของไฟล์คอนฟิกูเรชัน VM ที่มีนามสกุล *.vmcx

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

เรียกใช้ งาน ผู้จัดการ และไปที่ รายละเอียด แท็บ เครื่องเสมือนทั้งหมดกำลังทำงานในอินสแตนซ์ของตัวเองของ vmwp.exe . ในการพิจารณาว่ากระบวนการใดรับผิดชอบ VM ของคุณ คุณต้องมี GUID ของ VM ที่วางสายที่คุณได้รับก่อนหน้านี้ ค้นหากระบวนการ vmwp.exe ที่มี GUID ของ VM ของคุณใน ผู้ใช้ ชื่อ คอลัมน์. ยุติกระบวนการนี้ (สิ้นสุดภารกิจ )

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

เครื่องเสมือนจะถูกบังคับให้หยุด ตอนนี้คุณสามารถทำอะไรกับมันได้

ฆ่า Frozen Hyper-VM โดยใช้ PowerShell

การค้นหาและฆ่ากระบวนการของเครื่องเสมือนที่วางสายง่ายกว่ามากโดยใช้ PowerShell CLI เรียกใช้คอนโซล PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบ (ต้องเพิ่มบัญชีของคุณในกลุ่ม "ผู้ดูแลระบบ Hyper-V")

ในกรณีนี้ Stop-VM . ในตัว cmdlet จะไม่ยอมให้คุณปิด VM หากคุณพยายามเรียกใช้ Stop-VM -Force คำสั่งมันยังค้าง เห็นได้ชัดว่ารอการตอบกลับจาก VM

คุณต้องฆ่ากระบวนการ VM ด้วย GUID คุณสามารถรับ VM GUID ตามชื่อได้ ตัวอย่างเช่น หากต้องการรับ GUID ของ VM ที่มีชื่อ SVM-GUARDEDHOST1 ให้เรียกใช้คำสั่ง:

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

หากคุณไม่ต้องการพิมพ์ชื่อเต็มของ VM คุณสามารถแสดงรายการ VM ทั้งหมดที่ลงทะเบียนบนโฮสต์ Hyper-V นี้ได้:

Get-VM | Select Name, Id

จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

คัดลอก VM GUID ของคุณจากรายการผลลัพธ์

ค้นหาตัวระบุกระบวนการ vmwp.exe (PID) สำหรับ VMGUID นี้:

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

จากนั้น ใช้คำสั่ง Stop-Process คุณต้องบังคับยกเลิกกระบวนการนี้:

Stop-Process ($VMWMProc.ProcessId) –Force
จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร

นี่เป็นวิธีที่ง่ายในการยุติกระบวนการทำงานของเครื่องเสมือน Hyper-V ที่วางสายอย่างเด็ดขาด

เคล็ดลับ . เรายังมีคำอธิบายของวิธีการที่คล้ายกันในการฆ่ากระบวนการของ VM ที่วางสายบน VMWare ESXi

Hyper-V:ไม่สามารถเปลี่ยนสถานะ VM

บางครั้งมันเกิดขึ้นที่แม้หลังจากฆ่ากระบวนการ VM ที่วางสายไปแล้ว คุณก็ไม่สามารถเปิด VM ได้ ยิ่งไปกว่านั้น มันค้างในสถานะเริ่มต้นโดยมีข้อผิดพลาด:

Virtual Machine Connection
Failed to Change State.

ในกรณีนี้ ให้ตรวจสอบตัวเลือกต่อไปนี้:

  • ตรวจสอบว่ามีพื้นที่ว่างเพียงพอบนดิสก์ที่เก็บไฟล์ Hyper-V VM
  • หากมีการเชื่อมต่ออิมเมจ ISO ในการตั้งค่า VM ให้ตรวจสอบความพร้อมใช้งาน
  • ตรวจสอบการตั้งค่าอะแดปเตอร์เครือข่ายของ VM อะแดปเตอร์เครือข่ายเสมือนต้องเชื่อมต่อกับสวิตช์เสมือน Hyper-V ที่มีอยู่ (ต้องไม่มีสถานะอะแดปเตอร์เครือข่าย – ข้อผิดพลาดในการกำหนดค่า สำหรับ NIC ใด ๆ ); จะหยุด / ฆ่าเครื่องเสมือนที่ติดอยู่บน Hyper-V ได้อย่างไร
  • ตรวจสอบว่า Hyper-V Virtual Management Service (VMMS) กำลังทำงานและไม่ติดอยู่ในสถานะหยุด
  • ตรวจสอบให้แน่ใจว่าซอฟต์แวร์ป้องกันไวรัสของคุณไม่ได้บล็อกการเข้าถึงไฟล์ VM เพิ่มเส้นทางไปยังไดเร็กทอรี VM ไปยังการยกเว้นโปรแกรมป้องกันไวรัส (โปรดตรวจสอบวิธีเพิ่มการยกเว้นไปยังโปรแกรมป้องกันไวรัส Windows Defender ในตัวบน Windows Server 2016)
  • ตรวจสอบข้อผิดพลาดที่เกี่ยวข้องกับ Hyper-V ใน Event Viewer -> Applications and Services Logs -> Microsoft -> Windows -> Hyper-V-Worker