天天看點

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

該方法适用于以下情況:

ESXi主機上的虛拟機不能關閉。

虛拟機無響應且不能停止。

這篇文章描述在ESXi環境中如何正确的關閉一台無響應的虛拟機。

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

用用戶端嘗試順利關閉虛拟機:

1.     用vSphere Client或者 VI Client連接配接 VMware vCenter Server或VirtualCenter Server。

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

4.     用vSphere Client或者 VI Client 直接連接配接ESXi主機來運作虛拟機。

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

如果虛拟機使用用戶端不能正常關機,請選用以下任一種指令行模式。

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

請确認虛拟機是在哪個主機上運作。你可以通過vSphere Client中虛拟機的“摘要”頁籤來檢視相關資訊。随後将在虛拟機所在的主機上運作相關指令來關閉虛拟機。

1.     打開ESXi Shell、vSphere Management Assistant (vMA)或vSphere Command-Line Interface (vCLI) 用戶端,隻要<code>esxcli</code>工具能夠運作即可。

2.     使用如下指令擷取正在運作的虛拟機清單,該清單由World ID、UUID、Display Name和 <code>.vmx</code> 配置檔案所在路徑構成:

<code>esxcli vm process list</code>

3.     用如下指令關閉一台虛拟機:

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

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

4.     執行步驟2來檢查虛拟機是否已不再運作。

2.     使用如下指令擷取正在運作的虛拟機清單,該清單由VMID、Display Name和 <code>.vmx</code> 配置檔案所在路徑構成:

<code>vim-cmd vmsvc/getallvms</code>

3.     擷取虛拟機的目前狀态:

<code>vim-cmd vmsvc/power.getstate</code> <code>VMID</code>

4.     使用第2步擷取的VMID 來關閉虛拟機:

<code>vim-cmd vmsvc/power.shutdown</code> <code>VMID</code>

<b>Note</b>: 如果虛拟機還是不能關閉,請嘗試以下指令:

vim-cmd vmsvc/power.off VMID

虛拟機能夠在指令行模式下停止相關程序進而關閉。

在 ESXi 3.5-5.0主機中, 你可以使用 <code>kill</code> 指令來中止一個虛拟機程序。

2.     要知道ESXi 主機上是否有虛拟機程序在運作,可使用如下指令:

<code>ps | grep vmx</code>

輸出如下所示:

<code><b>7662 7662</b></code> <code>vmx /bin/vmx</code>

<code>7667</code>  <code><b>7662</b></code> <code>vmx /bin/vmx</code>

<code>7668</code>  <code><b>7662</b></code> <code>mks:VirtualMachineName /bin/vmx</code>

<code>7669</code>  <code><b>7662</b></code> <code>vcpu-0:VirtualMachineName /bin/vmx</code>

每一個vmx程序都會傳回一行。 請仔細辨識目标虛拟機的vmx父程序。第一列為程序ID(PID),第二列即為父程序ID (parent's PID)。 請確定你隻中止了父程序。 父程序ID (PID)在每一行的第二列, 在本例中都用粗體辨別。請記住這個号碼,它将在下面的步驟中用到。

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

3.     如果 <code>vmx</code> 程序在清單中,使用如下指令即可終止該程序: 

<code>kill</code> <code>ProcessID</code>

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

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

<code>kill -9</code> <code>ProcessID</code>

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

在ESXi 4.1-ESXi 5.0主機中,你可以使用 <code>esxtop</code>中的 <code>k</code> 指令來終止一個正在運作中的虛拟機程序。

2.     使用以下指令來運作 <code>esxtop</code> 工具:

<code>esxtop</code>

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

4.     按 f 顯示資訊清單。

5.     按 <code><b>c</b></code> 添加 Leader World ID列。

6.     通過虛拟機名稱和Leader World ID (<code>LWID</code>)确認我們要修複的虛拟機。

7.     按 k。

8.     在 <code>World to kill</code> 提醒後面,輸入第6步确認的Leader World ID,然後按Enter。

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

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

本文轉自 h2appy  51CTO部落格,原文連結:http://blog.51cto.com/h2appy/1105045,如需轉載請自行聯系原作者