如何停用卡在啟動/停止狀態的 Hyper-V 虛擬機器
Hyper-V 是一套廣為人知的硬體虛擬化平台,因其身為 Windows 的原生虛擬管理程式而廣受歡迎。虛擬化技術具備許多優勢,且執行虛擬機器十分便利。然而,系統仍可能發生錯誤。您可能會遇到”Hyper-V 無法變更狀態”的錯誤,導致在嘗試開啟或關閉虛擬機器時,虛擬機器陷入卡住狀態。此時,該虛擬機器的”啟動”、”停止”和”重設”按鈕均無法正常運作。
在解決此問題之前,您將無法編輯虛擬機設定或使用該虛擬機。如果您正打算尋找如何停用 Hyper-V 或 如何解除安裝 Hyper-V的方法,請先別著急。這篇部落格文章將說明出現”Hyper-V 無法變更狀態”錯誤的可能原因,以及解決此問題的方法。
錯誤說明
圖形化使用者介面中通常不會提供”啟動”、”停止”和”重設”按鈕。若您嘗試按一下這些按鈕,系統將顯示錯誤訊息。以下為在 Hyper-V 中嘗試啟動或停止虛擬機器時顯示的”Hyper-V 虛擬機器卡住”錯誤訊息全文:
應用程式在嘗試變更虛擬機器的狀態時發生錯誤。
VM-name 無法變更狀態。
當物件處於當前狀態時,無法執行此操作。
“Hyper-V 無法變更狀態” 此訊息也可能包含以下字句:
無法變更狀態。
虛擬機器啟動/停止錯誤的常見原因包括儲存裝置故障、網路設定錯誤、路由與遠端存取設定、虛擬機器電源選項,以及存取虛擬機器檔案的權限不足。
終止問題虛擬機器的進程
當您遇到虛擬機器啟動/停止錯誤時,不能僅透過終止”虛擬機器工作進程”( vmwp.exe )來傳統方式終止虛擬機器,因為這是 Hyper-V 的重要服務/進程之一。 您需要知道問題虛擬機器的全球唯一識別碼(GUID),因為 Windows 中正在執行多個 vmwp.exe 程序實例,且每個實例都對應至特定的虛擬機器。若您試圖猜測所需的 vmwp.exe 並終止每個 vmwp.exe 實例,每次都可能終止到未知虛擬機器,甚至在找到正確的虛擬機器之前,就可能終止掉幾乎所有的虛擬機器。
方法 1:使用原生 GUI 工具
您可以使用 Windows 和 Hyper-V 的圖形使用者介面 (GUI) 來識別所需的 vmwp.exe 程序,並終止此程序。 Hyper-V 管理員 是一款用於在 Windows Hyper-V 環境中管理虛擬機器的 GUI 工具。
在 Hyper-V 管理員中取得虛擬機器的 GUID。在 Hyper-V 管理員中右鍵點擊您的 Hyper-V 主機名稱,並在快顯選單中選擇 Hyper-V Settings。
在 Hyper-V 設定 視窗中,點擊左側窗格中的”虛擬機器”,以查找虛擬機器檔案在 Hyper-V 主機上的預設位置。 在本範例中,路徑為 E:VMs。
確認虛擬機器檔案的位置後,請在 Windows 檔案總管中前往該資料夾。找出存放已凍結虛擬機器檔案的子資料夾。以我的情況為例,虛擬機器名稱是 “Ubuntu Hyper-V”。 開啟虛擬機器資料夾,您應該會看到一個由數字和字母組成的子資料夾和文件。這就是用於識別 vmwp.exe 程序並強制停止虛擬機器的虛擬機器 GUID。在我的示例中,虛擬機器 GUID 是 3C555937-A999-4542-B77E-FD69488B8579 。
如果您無法在 Windows 和 Hyper-V 的圖形用戶界面中檢測到虛擬機器 GUID,您可以使用 Process Explorer 或 PowerShell(請參考下面的部分)。
一旦找到 ID,您可以結束與問題虛擬機器相關的 vmwp exe 任務。
在主機操作系統中打開 Windows 任務管理器。單擊 Start > Run 或按 Win+R,輸入 taskmgr 並按下 Enter。
在 vmwp.exe 用戶名 欄中找到所需的 GUID 的 程序。右鍵單擊相應的 vmwp exe 程序,然後在上下文菜單中選擇 End task 來關閉虛擬機器,獲得正確的停止虛擬機器狀態。
注意: 您可以右鍵單擊列標題,例如, 用戶名 ,然後單擊 Select Columns。在 Command line 選擇欄 Description 窗口中選中 和 選框,然後單擊 OK。之後,您可以在任務管理器的 命令行 欄中看到每個 vmwp exe 程序的虛擬機器 GUID。
方法二:使用 Process Explorer
您可以用 Process Explorer 識別與問題虛擬機器相關的 vmwp exe 程序實例,Process Explorer 是微軟提供的免費工具。下載 Process Explorer,包括標準任務管理器中沒有的高級選項,從微軟網站下載。解壓縮 Process Explorer 文件到自定資料夾。
開啟 Hyper-V 管理器,為您遇到問題的虛擬機器打開虛擬硬碟驅動器選項。複製虛擬硬碟文件的完整路徑。我們的例子中此路徑是:
“E:VMsUbuntu Hyper-VVirtual Hard DisksUbuntu Hyper-V.vhdx”
通過運行適當的執行文件(在我們的例子中為 procexp64.exe )啟動 Process Explorer。
單擊望遠鏡圖標並將路徑貼到卡住虛擬機器的虛擬磁碟文件路徑到 Handle or DLL 子字串 欄位中,然後點擊 Search。
需要的 vmwp.exe 執行個體已找到。在搜索窗口中點擊找到的 vmwp.exe ,並在 Process Explorer 中自動選定相應的 vmwp exe 程序實例。
右鍵單擊選中的 vmwp.exe 程序,然後在上下文菜單中點擊 Kill Process。 
方法 3:使用 PowerShell 終止虛擬機器程序
讓我們開啟 PowerShell 並解決此錯誤。若嘗試執行 Stop-VM -Force 這道指令,您會發現當虛擬機器卡住後,此指令無法成功停止該虛擬機器。請使用以下指令識別虛擬機器的唯一識別碼:
Get-VM "VM-name" | fl *
作為更簡潔的替代方案,您可以使用以下指令檢查 ID:
$VMGUID = (Get-VM "Ubuntu Hyper-V").ID
Get-VM | Select Name, Id
在本使用情境中,我們需要取得 “Ubuntu Hyper-V” 這台虛擬機器的 GUID。此虛擬機器的 GUID 已儲存為 $VMGUID 變數,並保存在此 PowerShell 工作階段的記憶體中。
執行以下指令來終止程序並停止虛擬機器:
$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})
Stop-Process ($VMWMProc.ProcessId) -Force
現在,問題的虛擬機器進程已終止,且虛擬機器已停止。您可以嘗試編輯虛擬機器設定並啟動虛擬機器。
其他解決”Hyper-V 無法變更狀態”錯誤的方法
您可能已經在 Hyper-V 中終止了卡住的虛擬機器進程,但虛擬機器仍無法啟動。在此情況下,若您嘗試啟動虛擬機器,可能會收到以下 Hyper-V 錯誤:
虛擬機器連線:
無法變更狀態。
以下,我將說明 “Hyper-V 無法變更狀態” 錯誤的其他可能原因、有助於解決此錯誤的方法,以及在出現此錯誤後如何徹底關閉 Hyper-V 虛擬機器。
DVD 光碟機設定
開啟虛擬機器設定,並檢查該虛擬機器的 DVD 選項。若虛擬機器無法存取 ISO 映像檔,便可能發生此錯誤。 請確認 ISO 檔案確實存在且路徑設定正確。若虛擬機器中未使用該虛擬 DVD 光碟機,您亦可將其停用。
儲存體錯誤
檢查虛擬機器的儲存空間是否足夠。若儲存虛擬機器檔案的磁碟空間不足,儲存體故障可能會導致虛擬機器卡住,並顯示 “Hyper-V 無法變更狀態” 錯誤。 若虛擬機器故障是因儲存空間不足所致,您可能需要執行以下指令來修復虛擬機器內的磁碟錯誤:
sfc /scannow
dism /online /cleanup-image /restorehealth
若無法正常啟動虛擬機器,或虛擬機器陷入無限迴圈,請將 Windows 安裝 ISO 映像檔插入虛擬 DVD 光碟機,從該 ISO 映像檔啟動虛擬機器(開啟虛擬 BIOS/UEFI 並選擇 DVD-ROM 作為第一個開機裝置),選擇 修復模式 ,啟動 CMD,並執行以下指令: chkdsk /f /r /x c:
當磁碟檢查完成且磁碟錯誤已修復後,重新啟動虛擬機器,從虛擬硬碟機啟動(該虛擬機器現在應該啟動了)並在虛擬作業系統中執行之前提到的命令:
sfc /scannow
dism /online /cleanup-image /restorehealth
您可能還需要檢查您的 Hyper-V 主機上用於 Hyper-V 儲存的物理磁碟。
網路設定錯誤
檢查虛擬機器的虛擬網路適配器設定。如果網路適配器的狀態顯示為 網路配接器 – 配置錯誤 ,那麼您可能在 Hyper-V 中遇到虛擬機器啟動/停止問題。虛擬機器網路介面卡 必須連接到現有的 虛擬交換器 才能正常運行。此錯誤可能是由於網路配置被更改或損壞而導致的。
在日誌中偵測問題
檢查 Windows 事件日誌和 Hyper-V 相關的錯誤。運行 compmgmt.msc,然後去到 Event Viewer > Applications and Services Logs > Microsoft > Windows > Hyper-V-Worker。如果您在日誌中看到錯誤消息,錯誤的解釋可以指出問題的來源。
防毒軟體阻擋存取
檢查防毒軟體的設定。防毒軟體不應阻止存取 Hyper-V 虛擬機器檔案。如果防毒軟體阻擋了虛擬機器檔案的存取,請將存放虛擬機器檔案的資料夾加到防毒軟體設定中的排除項目。Hyper-V 必須對虛擬機器資料夾和檔案具有完整存取權限。
虛擬機器電源選項
檢查虛擬作業系統的電源選項。必須停用睡眠模式和休眠。如在 Windows 虛擬機器中,開啟 Control Panel,然後前往 Power Options,確保 “Put the computer to sleep” 選項設定為 Never。如果安裝的是 Ubuntu Linux 作業系統,使用命令停用睡眠模式:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
檢查 VMMS
vmms.exe 是 Hyper-V 使用的一個進程。確保 Hyper-V虛擬管理服務(VMMS),作為重要的 Hyper-V 服務之一,運行正常且 VMMS 不會卡住,不處於啟動或停止狀態(狀態)。服務狀態必須是 正在執行 。
VMMS 服務與 vmms.exe 進程相關。
停用 RRAS
錯誤設定的路由和遠端存取服務(RRAS)可能是由於網路配置錯誤而讓 Hyper-V 虛擬機器卡住。嘗試停用在作為 Hyper-V 主機運行的 Windows Server 中的 RRAS。
按 Win+R 打開 Run 對話框。
輸入 services.msc 然後按下 Enter。
在 Routing and Remote Access Service 服務 視窗中找到 ,右鍵單擊該服務並在上下文選單中點擊 Properties。 在 General 選項卡中,進入 “路由和遠端存取屬性” 視窗,點擊 Stop 按鈕並變更啟動類型至 Disabled。
重新啟動 Hyper-V 主機機器
如果以上任何方法無法幫助,請嘗試重新啟動 Hyper-V 主機。如果您有其他的 Hyper-V 主機或 Hyper-V 高可用性叢集,您可以將正在執行的虛擬機器遷移至其他主機,然後关闭有問題虛擬機器的主機。
修復卡在儲存狀態的 Hyper-V 虛擬機器
Hyper-V 虛擬機器卡住不僅可能出現在啟動/停止狀態中,也可能發生在儲存狀態中。症狀類似,並且您無法更改有問題的虛擬機器狀態。”開始/停止” 輸入無效。如果您在虛擬機器備份時意外關閉 Hyper-V,會導致虛擬機器卡在保存狀態。這可能發生於備份過程被中斷並且虛擬機器被置於儲存狀態的情況下。此時虛擬機器可能會毀損。讓我們探討這些錯誤常見原因及修復方法。
磁碟錯誤
如果虛擬機器檔案磁碟在機器運行時被拔出,則可能對虛擬機器造成錯誤並將虛擬機器放入儲存狀態。對於把虛擬機器檔案存放在 USB 磁碟的 Hyper-V 家庭用戶而言,此錯誤更為可能。然而,組織的管理員應該注意此錯誤可能是由儲存問題引起的。在磁碟空間不足的情況下,虛擬機器會掛機並也可能被放進儲存狀態。若您已將虛擬機器設定使用不支援的虛擬硬體會出現此問題,特別是在創建新的虛擬機器並匯入已安裝客戶作業系統的虛擬磁碟時。請編輯虛擬機器選項,選擇正確的存儲控制器和其他磁碟選項。閱讀有關 第 1 代虛擬機器與第 2 代虛擬機器 之間的差別以獲得更多信息。
硬體資源不足
如果您在 Hyper-V 主機上運行多個資源消耗虛擬機器,在記憶體及 CPU 效能不足時,虛擬機器可能崩潰並被置於儲存狀態。之後,您應努力修復崩潰的虛擬機器。為避免此問題,請升級您的硬件,或者不要在效能低的主機上運行多個繁重的虛擬機器。如有可能,將虛擬機器遷移至另一台 Hyper-V 主機。
資料夾權限不正確
如果資料夾及虛擬機器檔案的權限不夠,則虛擬機器可能陷入儲存狀態。 打開存放虛擬機器檔案的資料夾屬性。檢查Security和Sharing標籤(如果虛擬機器在共用儲存體上的共用資料夾中)。為所需的使用者或群組設置權限為Allow all。
刪除虛擬機器
當其他方法無法解決虛擬機器在開始/停止/儲存狀態問題時,這是另一個解決方法。為避免資料丟失,應該將虛擬磁碟檔案複製到安全的位置。然後從原始位置刪除包含虛擬機器組態檔案的問題虛擬機器(在Hyper-V管理器中右鍵單擊虛擬機器並選擇Delete)。創建一個新的虛擬機器,將備份的虛擬磁碟複製到新的虛擬機器位置,並在Hyper-V中創建新虛擬機器時選擇現有的虛擬磁碟。
虛擬機器卡在”備份中”狀態
另一個類似問題是Hyper-V虛擬機器卡在 正在執行 狀態並且顯示 備份中 的狀態。在此狀態的Hyper-V管理器中無法啟動與停止虛擬機器。重新啟動Hyper-V主機通常可以解決此問題,但由於主機上的其他虛擬機器必須關閉或遷移,因此不建議重啟。
此錯誤的可能原因是Hyper-V主機上的微軟Hyper-V VSS Writer服務出現問題。
以管理員身份打開命令提示符(CMD)並運行此命令檢查VSS Writer的狀態:
vssadmin list writers
如果沒有錯誤,每個VSS Writer的輸出類似於下面截圖顯示的輸出。
微軟Hyper-V VSS Writer服務依賴於父Hyper-V虛擬機器管理服務。因為這個原因,您必須重新啟動Hyper-V虛擬機器管理服務以重新啟動所需的VSS服務並修復問題。
重新啟動Hyper-V虛擬機器管理服務最快的方法是打開Services 在Computer Management中或運行services.msc,右鍵單擊服務名稱並選擇Restart。
如果Hyper-V VSS Writer正在掛起且無法響應,您應該在任務管理器中手動結束 vmms.exe 過程。打開任務管理器,右鍵單擊 vmms.exe 並選擇上下文菜單中的End Process Tree。
結束 vmms.exe 過程後,虛擬機器應消失在Hyper-V管理器中。啟動Hyper-V虛擬機器管理服務,您應該會再次看到虛擬機器的列表,並且問題虛擬機器的備份中狀態應該消失。重新啟動這些Hyper-V服務應該可以解決問題。
結論
“Hyper-V 無法變更狀態”錯誤是使用者與管理員在使用虛擬機器時會遇到的惱人問題。所幸,當您無法停止出現問題的虛擬機器時,有很高機率能修復與 Hyper-V 虛擬機器卡住相關的錯誤。這篇部落格文章探討了”Hyper-V 無法變更狀態”及”無法還原虛擬機器狀態”錯誤的常見原因與可能的解決方法。
請注意,此錯誤、其他錯誤或硬體故障發生後,虛擬機器資料有時可能會損毀。因此,建議您定期備份 Hyper-V 虛擬機器,以避免資料遺失。使用 NAKIVO Backup & Replication 備份您的 Hyper-V 虛擬機器,它具備最佳效能與節省空間的特點。
















