บางครั้ง ฉันเห็นว่าเครื่องเสมือนบางเครื่องบนโฮสต์ VMWare ESXi ค้าง และไม่สามารถปิดหรือรีสตาร์ทเครื่องจากคอนโซล vSphere ไม่ว่าจะด้วยวิธีใด ไม่แนะนำให้รีบูตโฮสต์ ESXi ทั้งหมดเนื่องจากเครื่องเสมือนเครื่องเดียว (โดยเฉพาะอย่างยิ่งหากคุณมีโฮสต์ ESXi เพียงตัวเดียว หรือเซิร์ฟเวอร์ที่เหลืออยู่ในคลัสเตอร์ DRS จะไม่สามารถรับมือกับภาระเพิ่มเติมของเครื่องเสมือนจากเซิร์ฟเวอร์ที่จะเป็น เริ่มใหม่) พิจารณาวิธีหลักในการบังคับฆ่าเครื่องเสมือนที่ไม่ตอบสนอง (หยุดทำงาน) บนโฮสต์ VMWare ESXi
หากกระบวนการของเครื่องเสมือนบนเซิร์ฟเวอร์ ESXi หยุดทำงาน กระบวนการนั้นจะหยุดตอบสนองใน vCenter Reset
/Power Off
คำสั่ง และส่งคืนข้อผิดพลาดข้อใดข้อหนึ่งต่อไปนี้ไปยังการดำเนินการใดๆ:
- งานอื่นอยู่ในระหว่างดำเนินการ;
- เครื่องเสมือนอาจทำงานพร้อมกัน การดำเนินการ:ดำเนินการพร้อมกันให้เสร็จสิ้น และลองดำเนินการปิดเครื่องอีกครั้ง เครื่องเสมือนอยู่ในสถานะที่ไม่ถูกต้อง;
- การดำเนินการที่พยายามไม่สามารถทำได้ในสถานะปัจจุบัน .
ในกรณีดังกล่าว คุณสามารถฆ่ากระบวนการเครื่องเสมือนบนโฮสต์ ESXi ได้ด้วยตนเองจากพรอมต์คำสั่ง ESXi Shell หรือ PowerCLI
ก่อนอื่นคุณต้องพิจารณาว่า ESXi โฮสต์ใดที่เครื่องเสมือนที่หยุดทำงานกำลังทำงานอยู่ ในการดำเนินการนี้ ให้ค้นหา VM ในอินเทอร์เฟซไคลเอ็นต์ vSphere ชื่อโฮสต์ ESXi ที่ VM กำลังทำงานอยู่ถูกระบุใน สรุป แท็บใน วัตถุที่เกี่ยวข้อง -> โฮสต์ มาตรา.
ถัดไป ต้องเปิดใช้งานโปรโตคอลการเข้าถึง SSH บนโฮสต์ ESXi ของคุณ คุณสามารถทำได้จากอินเทอร์เฟซ vSphere คลิกที่ชื่อโฮสต์ ESXi ไปที่ กำหนดค่า -> บริการ -> SSH -> เริ่ม .
ตอนนี้คุณสามารถเชื่อมต่อกับโฮสต์นี้ผ่าน SSH โดยใช้ putty ลูกค้า. แสดงรายการ VM ที่ทำงานบนโฮสต์ ESXi:
esxcli vm process list
คัดลอก “World ID” ของเครื่องเสมือนที่มีปัญหา
หากต้องการยุติกระบวนการของเครื่องเสมือนที่หยุดทำงานบนโฮสต์ ESXi ให้ใช้คำสั่งต่อไปนี้:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
กระบวนการ VM มีสามประเภทการฆ่า:
- นุ่ม – วิธีที่ปลอดภัยที่สุดในการฆ่ากระบวนการ VMX (คล้ายกับการฆ่า -SIGTERM);
- ยาก – ยุติกระบวนการ VM ทันที (kill -9);
- กำลัง – โหมดหยุดกระบวนการ VM ที่ยากที่สุด ควรใช้เป็นครั้งสุดท้ายถ้าไม่มีอะไรช่วย
มาลองหยุด VM แบบเบา ๆ ด้วย ID ที่ระบุ:
esxcli vm process kill --type=soft -w=20598249
VM ควรถูกปิด
คุณสามารถหยุดเครื่องเสมือนที่หยุดการทำงานไว้ได้โดยใช้ PowerCLI (วิธีนี้สะดวก เพราะเมื่อเชื่อมต่อกับ vCenter คุณไม่จำเป็นต้องค้นหาชื่อโฮสต์ที่ VM ทำงานอยู่และเปิดใช้งาน SSH shell) ตรวจสอบว่า VM กำลังทำงาน:
get-vm “web1" | select name,PowerStates
บังคับหยุดกระบวนการ VM ด้วยคำสั่ง:
stop-vm -kill "web1" -confirm:$false
นอกจากนี้ คุณสามารถหยุดเครื่องเสมือน VMWare ที่ไม่ตอบสนองได้โดยใช้ ESXTOP อรรถประโยชน์
เปิดเซสชัน SSH ป้อน esxtop , กด “c ” เพื่อแสดงทรัพยากรของ CPU จากนั้น SHIFT+V เพื่อแสดงเฉพาะกระบวนการของเครื่องเสมือน
จากนั้นกด “f ” (เพื่อเลือกฟิลด์ที่จะแสดง), “c ” (เพื่อแสดง LWID- Leader World Id) จากนั้นกด ENTER .
ในคอลัมน์ชื่อ ให้ค้นหาเครื่องเสมือนที่จะหยุดการทำงานและจดหมายเลข LWID ไว้ในคอลัมน์ที่เกี่ยวข้อง
ตอนนี้คุณต้องกด “k ” (ฆ่า) และป้อนหมายเลข LWID ของเครื่องเสมือนที่คุณต้องการบังคับปิดเครื่อง
และวิธีสุดท้ายในการปิดเครื่อง VM “ยาก” คือการใช้ ฆ่า เครื่องมือ. เมธอดนี้จะหยุดไม่เพียงแต่ VM แต่ยังรวมถึงกระบวนการลูกทั้งหมดด้วย
รับ ID กระบวนการหลักของ VM:
ps | grep "web2"
ฆ่ากระบวนการ VM:
kill -9 24288474
หลังจาก "ฮาร์ดรีเซ็ต" ดังกล่าว ระบบปฏิบัติการที่ติดตั้งไว้จะบู๊ตในโหมดการกู้คืน ในกรณีของ guest Windows หน้าจอจะเป็นแบบนี้