本文首發於爛泥行天下。
今天在ESXI上的一臺windows系統的虛擬機(以下簡稱VM),突然nagios報警提示說:該機器發生故障。
既然問題出來了,就要解決。先在本機ping下那臺VM,發現不能ping通。使用vsphere登錄到ESXI,發現該VM還處於運行狀態,但是無法遠程進去,一直顯示的是黑屏。
打算直接在ESXI上重啓該機器,但是卻提示如下的錯誤信息:
因爲不想安裝ESXI的其他管理工具,所以就打算通過ESXI的SSH直接重啓VM。
通過SSH關閉VM有兩種方法:一是使用ESXi命令行工具vim-cmd來關閉VM,二是通過系統發送信號關閉VM。
方法一、
我們先來介紹方法一,通過ssh終端登錄到ESXI上。
第一、使用如下命令獲取ESXI上的所有虛擬機清單,如下:
vim-cmd vmsvc/getallvms
可以看到目前該ESXI上有5臺VM。
第二、獲取報錯VM的當前狀態:
vim-cmd vmsvc/power.getstate VM_ID
可以看到目前該VM是處於運行狀態的。
第三、使用第一步獲取的VM_ID來關閉虛擬機:
vim-cmd vmsvc/power.shutdown VM_ID
根據上圖,我們發下還是無法關閉VM。我們可以使用以下命令,強制關閉虛擬機:
vim-cmd vmsvc/power.off VM_ID
方法二、
現在我們來看方法二,要使用方法二關閉VM,我們要知道該ESXi上目前是否有VM正在運行,我們可以通過如下命令進行查看:
ps |grep vmx
注意上圖中,我標記出來的pid號。該pid就是該VM進程的父pid。我們只需把該進程父pid殺死即可關閉VM,如下:
kill -9 9823
以上是就是在SSH下關閉ESXI的VM。那麼下面我們通過SSH開啓VM。命令如下:
vim-cmd vmsvc/power.on VM_ID