[轉]在ESXi主機上關閉無響應的虛擬機器

ewelamb發表於2013-09-30

在ESXi主機上關閉無響應的虛擬機器

適用情況

該方法適用於以下情況:

  • ESXi主機上的虛擬機器不能關閉。
  • 虛擬機器無響應且不能停止。


目的

這篇文章描述在ESXi環境中如何正確的關閉一臺無響應的虛擬機器。

注意: 這篇文章只適用於ESXi主機,不適用於ESX主機。對於ESX主機,請參考 .

注意: 如果你嘗試查詢造成虛擬機器無響應的原因,首先應當收集效能變化規律,然後中止虛擬機器執行,從而收集更多的故障資訊。要獲得更多資訊,請參考  或者 .

解決方案

警告: 請嚴格按照文章中的步驟操作。每一步操作對虛擬機器都有一定的影響,所以請不要跳過其中任何一步!

vSphere Client關閉虛擬機器

用客戶端嘗試順利關閉虛擬機器:

1.     vSphere Client或者 VI Client連線 VMware vCenter ServerVirtualCenter Server

2.     右鍵單擊要關閉的虛擬機器,從彈出的快捷選單中選擇“電源->關閉客戶機”。如果操作失敗並提示“正在處理另一個任務”,請等待任務完成,或者參考   .

3.     如果虛擬機器依然在執行,請嘗試在主機上進行相同的操作。

4.     vSphere Client或者 VI Client 直接連線ESXi主機來執行虛擬機器。

5.     右鍵單擊要關閉的虛擬機器,從彈出的快捷選單中選擇“電源->關閉客戶機”。

如果虛擬機器使用客戶端不能正常關機,請選用以下任一種命令列模式。

安裝 vSphere Command-Line Interface 工具

vSphere Command-Line Interface (vCLI) 會在本文的某些步驟中用到,所以在使用前請確保你已經正確的安裝了它。

  • 對於ESXi 3.5 主機, 請在 中參考Remote CLI Installation and Execution 
  • 對於ESXi 4.0 主機, 請在 中參考vSphere CLI Installation, Execution, and Command Overviews 
  • 對於 ESXi 4.1主機,請參考 
  • 對於ESXi 5.0 主機,請參考 vSphere Command-Line Interface Documentation

注意: 對於ESXi 4.x  ESX 5.0主機,遠端命令列介面程式會透過vSphere Management Assistant (vMA) 訪問。 如果你偏愛這個工具,請在 中參考 Installing vMA and Running Commands from vMA 

確認虛擬機器的位置

請確認虛擬機器是在哪個主機上執行。你可以透過vSphere Client中虛擬機器的“摘要”選項卡來檢視相關資訊。隨後將在虛擬機器所在的主機上執行相關命令來關閉虛擬機器。

使用ESXi 5.0 主機的esxcli 命令來關閉虛擬機器

esxcli 命令能夠在本地或遠端來關閉執行在ESXi 5.0主機上的虛擬機器。要獲得更多資訊,請參考 esxcli vm Commands 章節。

1.     開啟ESXi ShellvSphere Management Assistant (vMA)vSphere Command-Line Interface (vCLI) 客戶端,只要esxcli工具能夠執行即可。

2.     使用如下命令獲取正在執行的虛擬機器清單,該清單由World IDUUIDDisplay Name .vmx 配置檔案所在路徑構成:

esxcli vm process list

3.     用如下命令關閉一臺虛擬機器:

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

注意: 有三種關閉虛擬機器的方法,Soft 程度最低,hard 為立即執行,如果依然不能關閉,則可以使用force 模式。

4.     執行步驟2來檢查虛擬機器是否已不再執行。

使用 ESXi 命令列工具 vim-cmd 來關閉虛擬機器

1.      ESXi 控制檯,進入技術支援模式,用root使用者登入。 更多資訊請參考 .

2.     使用如下命令獲取正在執行的虛擬機器清單,該清單由VMIDDisplay Name .vmx 配置檔案所在路徑構成:

vim-cmd vmsvc/getallvms

3.     獲取虛擬機器的當前狀態:

vim-cmd vmsvc/power.getstate VMID

4.     使用第2步獲取的VMID 來關閉虛擬機器:

vim-cmd vmsvc/power.shutdown VMID

Note:
 如果虛擬機器還是不能關閉,請嘗試以下命令:

vim-cmd vmsvc/power.off VMID

ESXi主機上傳送訊號來關閉虛擬機器

虛擬機器能夠在命令列模式下停止相關程式從而關閉。

警告:這個操作對ESXi 主機有潛在的危險。 如果你不能正確的辨別程式ID,而誤殺了其它程式,這極有可能引起不可預知的結果。如果你不能有把握的執行以下操作,請給VMware 技術支援部門傳送支援請求,並在問題描述中說明本知識庫的文件編號(1014165)。要獲取更多資訊,請參考。

 ESXi 3.5-5.0主機中, 你可以使用 kill 命令來中止一個虛擬機器程式。

1.      ESXi 控制檯,進入技術支援模式,用root使用者登入。 更多資訊請參考 .

2.     要知道ESXi 主機上是否有虛擬機器程式在執行,可使用如下命令:

ps | grep vmx

輸出如下所示:

7662 7662 vmx /bin/vmx
7667  7662 vmx /bin/vmx
7668  7662 mks:VirtualMachineName /bin/vmx
7669  7662 vcpu-0:VirtualMachineName /bin/vmx

每一個vmx程式都會返回一行。 請仔細辨別目標虛擬機器的vmx父程式。第一列為程式ID(PID),第二列即為父程式IDparent's PID)。 請確保你只中止了父程式。 父程式ID (PID)在每一行的第二列, 在本例中都用粗體標識。請記住這個號碼,它將在下面的步驟中用到。

警告: 請確保你已經確認了要修復的虛擬機器所在的行。如果你是對除了有問題的虛擬機器以外的虛擬機器進行這些操作,那麼極有可能引起這些機器當機。

3.     如果 vmx 程式在列表中,使用如下命令即可終止該程式: 

kill ProcessID

4.     等待30秒然後重複步驟2來檢查程式是否已終止。

5.     如果程式依然沒有終止,可使用以下命令:

kill -9 ProcessID

6.     等待30秒然後重複檢查程式是否已終止。

ESXi 4.1-ESXi 5.0主機中,你可以使用 esxtop中的 k 命令來終止一個正在執行中的虛擬機器程式。

1.      ESXi 控制檯,進入技術支援模式,用root使用者登入。 更多資訊請參考 .

2.     使用以下命令來執行 esxtop 工具:

esxtop

3.      c 選擇 CPU 資源利用介面。

4.      f 顯示資訊列表。

5.      c 新增 Leader World ID列。

6.     透過虛擬機器名稱和Leader World ID (LWID)確認我們要修復的虛擬機器。

7.      k

8.      World to kill 提醒後面,輸入第6步確認的Leader World ID,然後按Enter

9.     等待30秒然後驗證程式是否已經結束。

附加資訊

如果使用以上方法均不能關閉虛擬機器,則說明問題可能是由於ESXi主機或者它的硬體問題所引起的。

如果懷疑是由於ESXi主機問題引起的虛擬機器不能關閉, 請使用vMotion將所有未受影響的虛擬機器遷移到其它主機,然後強制關閉主機並使用硬體診斷工具檢測問題。 更多資訊請參考 .

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7191998/viewspace-773633/,如需轉載,請註明出處,否則將追究法律責任。

相關文章