【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

JUNIOR_MU發表於2024-09-27

最近在家裡的 Homelab 主機上進行 VMware Cloud Foundation 相關測試,由於 CPU 超負荷使用,某個別虛擬機器時不時的會出現卡死和不響應等現象,進而導致了測試的失敗並影響了相關實驗的進度。比如,下圖所示的巢狀 ESXi 虛擬機器,本來執行好好的,由於資源不足,該虛擬機器便出現了卡死和不響應問題,想著透過物理 ESXi 主機將該虛擬機器強制關機並重新啟動,但是在執行關機任務以後,結果這個任務也被卡住了!現在,無法透過 GUI 介面管理該虛擬機器,也沒法強行停止正在執行的任務,這樣一來便形成了一個死局。儘管你可以在 ESXi 主機上使用 CLI 命令執行虛擬機器的關機動作,比如 esxcli vm process、vim-cmd vmsvc/ 等,但是有時候可能並不始終有效,而我覺得另外一種方法也許更能受用,那就是使用 esxtop 命令。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

透過 SSH 連線到 ESXi 主機,執行 esxtop 命令並進入互動式檢視。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

執行 esxtop 命令後,預設進入 CPU 檢視,你可以隨時按 m 進入記憶體檢視,按 n 進入網路檢視,按 v 進入虛擬機器檢視。注意,在 esxtop 中互動式操作,對使用的大小寫字母具有不同功能,有關更多內容和注意細節請檢視《Performance Monitoring Utilities: resxtop and esxtop》產品文件。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

預設在 CPU 檢視下,按 Shift + V 僅顯示 VM 虛擬機器。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

從下圖中可以看到,在“%VMWAIT”列下,有一個異常的值非常高,根據這個可以判斷它就是那個卡死不響應的虛擬機器。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

在上圖中,“NAME”列的名稱顯示不全,可以按 L 改變這一列顯示的長度,比如這裡輸入值 25 。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

調整顯示的長度後,我們也可以透過名稱來確定出現卡死不響應的虛擬機器,如下圖所示。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

此時,在上圖中按 fF 後進入到以下檢視,用於在 CPU 檢視下增加一列資訊,按 cC 選擇 “LWID” 項後按 Enter 回車儲存。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

現在,在 CPU 檢視下多了一列 LWID 資訊,如下圖所示,我們需要記錄出現卡死不響應虛擬機器的 LWID。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

然後,按 k 顯示 kill 執行選項,輸入卡死不響應虛擬機器的 LWID,比如下圖中的 2100101,按 Enter 回車殺死這個虛擬機器。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

現在,卡死不響應的虛擬機器如果不在 CPU 檢視中,說明已被 kill 掉。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

最後,登入 ESXi 主機再次檢視虛擬機器的狀態,這個卡死不響應的虛擬機器應該已經關機。

【VMware ESXi】使用 esxtop 殺死 ESXi 主機中卡死和不響應的虛擬機器。

相關文章