1. 程式人生 > >關閉虛擬機提示“正在處理另一個任務”解決方法

關閉虛擬機提示“正在處理另一個任務”解決方法

客戶 vcenter 操作 配置文件 ren ESS uuid note 主機

一. 錯誤提示:ESXI關閉虛擬機時提示“正在處理另一個任務”,無法關閉
二. 出現情況:
虛擬機突然卡主,沒有任何反應,就準備重置虛擬機,結果當重置進行到95%的時候,也卡住了,整整30分鐘後提示操作超時,就打算關閉虛擬機,結果提示“正在處理另一個任務”,無法關閉,無奈,百度了一下,確實有個好方法,但是呢網上提供的方法還有點小錯誤,特此整理一下,分享給大家。
三. 解決方法:
前提是可以不用重啟ESXi Server,這樣影響範圍就小了。

  1. 開啟esxi的ssh服務
  2. SecurtCRT遠程登錄到esxi,重啟VMware服務,命令是:/etc/init.d/hostd restart
  3. 查看虛擬機的進程,運行如下命令:ps |grep 虛擬機名字,虛擬機名字就是你左邊列表裏給它命的名字,其實只需輸入部分名字即可,然後就會顯示幾串數字,就是進程PID。網上給出的命令是:ps -aux |grep 虛擬機名字,但是這條命令我敲下去是提示錯誤的。
  4. 運行 kill -9 PID 命令,把顯示出來的幾個PID都嘗試結束一下。
  5. 進程結束後,再重新重啟一下服務,/etc/init.d/hostd restart,那個關閉不了的虛擬機應該就OK了,如果大家遇到這種問題也可以按照我的方法嘗試一下。

補充

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

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

  1. 用vSphere Client或者 VI Client連接 VMware vCenter Server或VirtualCenter Server。
  2. 右鍵單擊要關閉的虛擬機,從彈出的快捷菜單中選擇“電源->關閉客戶機”。如果操作失敗並提示“正在處理另一個任務”,請等待任務完成,或者參考 Powering off a virtual machine fails with the error: Cannot power Off: Another task is already in progress (1027040) 或 vCenter operation times out with the error: Operation failed since another task is in progress (1004790).
  3. 如果虛擬機依然在運行,請嘗試在主機上進行相同的操作。
  4. 用vSphere Client或者 VI Client 直接連接ESXi主機來運行虛擬機。
  5. 右鍵單擊要關閉的虛擬機,從彈出的快捷菜單中選擇“電源->關閉客戶機”。
    如果虛擬機使用客戶端不能正常關機,請選用以下任一種命令行模式。

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

對於ESXi 3.5 主機, 請在 Remote Command-Line Interface Installation and Reference Guide中參考Remote CLI Installation and Execution 。

對於ESXi 4.0 主機, 請在 vSphere Command-Line Interface Installation and Reference Guide中參考vSphere CLI Installation, Execution, and Command Overviews 。
對於 ESXi 4.1主機,請參考 vSphere Command-Line Interface Installation and Scripting Guide。
對於ESXi 5.0 主機,請參考 vSphere Command-Line Interface Documentation。
註意: 對於ESXi 4.x 和 ESX 5.0主機,遠程命令行接口程序會通過vSphere Management Assistant (vMA) 訪問。 如果你偏愛這個工具,請在 vSphere Command-Line Interface Installation and Reference Guide中參考 Installing vMA and Running Commands from vMA 。

確認虛擬機的位置
請確認虛擬機是在哪個主機上運行。你可以通過vSphere Client中虛擬機的“摘要”選項卡來查看相關信息。隨後將在虛擬機所在的主機上運行相關命令來關閉虛擬機。

使用ESXi 5.0 主機的esxcli 命令來關閉虛擬機
esxcli 命令能夠在本地或遠程來關閉運行在ESXi 5.0主機上的虛擬機。要獲得更多信息,請參考 vSphere Command-Line Interface Reference中esxcli vm Commands 章節。

  1. 打開ESXi Shell、vSphere Management Assistant (vMA)或vSphere Command-Line Interface (vCLI) 客戶端,只要esxcli工具能夠運行即可。

  2. 使用如下命令獲取正在運行的虛擬機清單,該清單由World ID、UUID、Display Name和 .vmx 配置文件所在路徑構成:

esxcli vm process list

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

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

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

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

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

  1. 在 ESXi 控制臺,進入技術支持模式,用root用戶登錄。 更多信息請參考 Tech Support Mode for Emergency Support (1003677).
  2. 使用如下命令獲取正在運行的虛擬機清單,該清單由VMID、Display Name和 .vmx 配置文件所在路徑構成:

vim-cmd vmsvc/getallvms

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

vim-cmd vmsvc/power.getstate VMID

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

vim-cmd vmsvc/power.shutdown VMID

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

vim-cmd vmsvc/power.off VMID
在ESXi主機上發送信號來關閉虛擬機
虛擬機能夠在命令行模式下停止相關進程從而關閉。

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

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

  1. 在 ESXi 控制臺,進入技術支持模式,用root用戶登錄。 更多信息請參考 Tech Support Mode for Emergency Support (1003677).
  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),第二列即為父進程ID(parent‘s PID)。 請確保你只中止了父進程。 父進程ID (PID)在每一行的第二列, 在本例中都用粗體標識。請記住這個號碼,它將在下面的步驟中用到。

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

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

kill ProcessID

  1. 等待30秒然後重復步驟2來檢查進程是否已終止。
  2. 如果進程依然沒有終止,可使用以下命令:

kill -9 ProcessID

  1. 等待30秒然後重復檢查進程是否已終止。

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

  1. 在 ESXi 控制臺,進入技術支持模式,用root用戶登錄。 更多信息請參考 Tech Support Mode for Emergency Support (1003677).
  2. 使用以下命令來運行 esxtop 工具:

esxtop

  1. 按 c 選擇 CPU 資源利用界面。
  2. 按 f 顯示信息列表。
  3. 按 c 添加 Leader World ID列。
  4. 通過虛擬機名稱和Leader World ID (LWID)確認我們要修復的虛擬機。
  5. 按 k。
  6. 在 World to kill 提醒後面,輸入第6步確認的Leader World ID,然後按Enter。
  7. 等待30秒然後驗證進程是否已經結束。

關閉虛擬機提示“正在處理另一個任務”解決方法