Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

บางครั้งเห็น Virtual Machine บนโฮสต์ VMWare ESXi ค้าง และไม่สามารถปิดหรือรีสตาร์ทจาก vSphere Console ได้ด้วยวิธีไหน การรีบูท ESXi Host ทั้งเครื่องเพราะ VM เดียวไม่ค่อยเหมาะสม (โดยเฉพาะหากมี ESXi Host เดียว หรือเซิร์ฟเวอร์ที่เหลือใน DRS Cluster ไม่รับโหลด VM เพิ่มจากเซิร์ฟเวอร์ที่จะรีสตาร์ท) พิจารณาวิธีหลักในการ Force Kill Virtual Machine ที่ Unresponsive (Hung) บน VMWare ESXi Host

หาก Process ของ Virtual Machine บน ESXi Server ค้าง หยุดตอบสนองต่อคำสั่ง Reset/Power Off ของ vCenter และส่ง Error กลับมาสำหรับการกระทำใดๆ:

  • Another task is already in progress
  • The virtual machine might be performing concurrent operations. Actions: Complete the concurrent operation and retry the power-off operation; The virtual machine is in an invalid state
  • The attempted operation cannot be performed in the current state

ในกรณีเหล่านี้ สามารถ Kill Process ของ Virtual Machine ที่ค้างบน ESXi Host ด้วยตนเองจาก ESXi Shell หรือ PowerCLI Command Prompt

ก่อนอื่น ต้องระบุว่า VM ที่ค้างอยู่บน ESXi Host ไหน หา VM ใน vSphere Client Interface ชื่อ ESXi Host ที่ VM รันอยู่ ระบุบนแท็บ Summary ในส่วน Related Object → Host

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

ต่อไป ต้องเปิดใช้งาน SSH Access Protocol บน ESXi Host ทำได้จาก vSphere Interface คลิกชื่อ ESXi Host ไปที่ Configure → Services → SSH → Start

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

ตอนนี้เชื่อมต่อกับโฮสต์นี้ผ่าน SSH ด้วย Client putty แสดงรายการ VMs ที่รันบน ESXi Host:

esxcli vm process list

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

คัดลอก "World ID" ของ Virtual Machine ที่มีปัญหา

เพื่อยุติ Process ของ Virtual Machine ที่ค้างบน ESXi Host ใช้คำสั่ง:

esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber

มี 3 ประเภท Kill Type ของ VM Process:

  • Soft — วิธีปลอดภัยที่สุดในการ Kill VMX Process (คล้าย kill -SIGTERM)
  • Hard — การยุติ Process VM ทันที (kill -9)
  • Force — โหมดหยุด Process VM ที่หนักที่สุด ควรใช้ท้ายสุดหากวิธีอื่นไม่ช่วย

ตรวจสอบว่าไม่มี Active Snapshots, Backups และ Task เหมือนกันสำหรับ VM และ VM ไม่อยู่ในสถานะ "Virtual Machine disks consolidation is needed" มิฉะนั้นอาจทำลาย VM และต้อง Restore จาก Backup

ลอง Soft Stop VM ด้วย ID ที่ระบุ:

esxcli vm process kill --type=soft -w=20598249

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

VM ควรจะ Powered Off

สามารถหยุด Virtual Machine ที่ค้างด้วย PowerCLI (สะดวกเพราะตอนเชื่อมต่อ vCenter ไม่ต้องหา Hostname ที่ VM รัน และเปิด SSH Shell บนมัน) ตรวจสอบว่า VM กำลังรัน:

get-vm "web1" | select name,PowerStates

Force Stop VM Process ด้วยคำสั่ง:

stop-vm -kill "web1" -confirm:$false

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

ยังสามารถหยุด VMware Virtual Machine ที่ไม่ตอบสนองด้วยยูทิลิตี้ ESXTOP

เปิด SSH Session ใส่ esxtop กด "c" เพื่อแสดง CPU Resources และกด SHIFT+V เพื่อแสดงเฉพาะ Process ของ Virtual Machine

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

จากนั้นกด "f" (เลือก Fields ที่จะแสดง) "c" (แสดง LWID - Leader World Id) แล้วกด ENTER

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

ในคอลัมน์ Name หา Virtual Machine ที่ต้องการหยุด และบันทึกหมายเลข LWID ในคอลัมน์ที่ตรงกัน

ตอนนี้ต้องกด "k" (kill) และใส่หมายเลข LWID ของ Virtual Machine ที่ต้องการ Force Shut Down

และวิธีสุดท้ายของ VM "Hard" Power Off คือใช้เครื่องมือ kill วิธีนี้จะหยุดไม่แค่ VM แต่ Child Processes ทั้งหมดด้วย

หา Parent Process ID ของ VM:

ps | grep "web2"

Kill VM Process:

kill -9 24288474

VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)

หลัง "Hard Reset" แบบนี้ OS ที่ติดตั้งจะบูทใน Recovery Mode ในกรณี Guest Windows หน้าจอจะเป็นแบบนี้
VMware ESXi: วิธี Kill Virtual Machine ที่ Unresponsive (ค้าง)