如何停用卡在啟動/停止狀態的 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 並逐一終止各執行個體,每次都可能終止到不相關的虛擬機器,最終可能在找到正確目標之前,就終止了幾乎所有的虛擬機器。
方法 1:使用原生 GUI 工具
您可以使用 Windows 和 Hyper-V 的圖形使用者介面 (GUI) 來識別所需的 vmwp.exe 處理並結束此程序。 Hyper-V 管理員 這是一款具備圖形使用者介面(GUI)的工具,用於管理 Windows Hyper-V 環境中的虛擬機器。
在 Hyper-V 管理員中取得虛擬機器的 GUID。在 Hyper-V 管理員中,右鍵點擊您的 Hyper-V 主機名稱,然後在快顯選單中選擇 Hyper-V Settings.
在 Hyper-V 設定 在視窗中,請點擊左側窗格中的"虛擬機器",以找出 Hyper-V 主機上虛擬機器檔案的預設位置。在本範例中,路徑為 E:虛擬機器。
當您知道虛擬機器檔案的位置後,請在 Windows 檔案總管中前往該資料夾。找出存放已凍結虛擬機器檔案的子資料夾。以我的情況為例,虛擬機器的名稱是 "Ubuntu Hyper-V". 開啟 VM 資料夾,您應該會看到一個子資料夾,以及名稱由數字和字母組成且很長的檔案。這就是用來識別該 VM 的 VM GUID。 vmwp.exe 處理並強制虛擬機器停止。在我的範例中,虛擬機器的 GUID 是 3C555937-A999-4542-B77E-FD69488B8579.
如果您無法在 Windows 和 Hyper-V 的圖形使用者介面中偵測到虛擬機器 GUID,可以使用 Process Explorer 或 PowerShell(請參閱下文)。
找到該 ID 後,即可終止該 vmwp.exe 與問題 Hyper-V 虛擬機器相關的任務。
在主機作業系統中開啟 Windows 工作管理員。按一下 Start > Run 或按下 Win+R, 輸入 taskmgr 並點擊 Enter.
尋找 vmwp.exe 在 使用者名稱 欄位。右鍵點擊相應的 vmwp.exe 程序,並在快顯選單中選取 End task 關閉虛擬機器並使其進入正確的停止狀態。
註: 您可以右鍵點擊欄位標題,例如, 使用者名稱,然後點擊 Select Columns. 選取 Command line 以及 Description 中的核取方塊 選取欄位 視窗,然後點擊 OK. 之後,您便能看到每台虛擬機的 GUID vmwp.exe 在……過程中 命令列 工作管理員的欄位。
方法 2:使用 Process Explorer
您可以識別所需的 vmwp.exe 使用 Process Explorer(這是微軟提供的一款免費工具)來檢視與該問題虛擬機器相關的進程。 下載 Process Explorer 包含 Microsoft 網站上標準工作管理員所沒有的高階選項。請將 Process Explorer 的檔案解壓縮至自訂資料夾。
開啟 Hyper-V 管理員,開啟有問題的虛擬機器設定,並選取虛擬硬碟選項。複製虛擬硬碟檔案的完整路徑。在本例中,此路徑為:
“E:VMsUbuntu Hyper-V虛擬硬碟Ubuntu Hyper-V.vhdx”
請執行相應的執行檔以啟動 Process Explorer (procexp64.exe (以我們的情況為例)。
點擊雙筒望遠鏡圖示,並將卡住的虛擬機器之虛擬磁碟檔案路徑貼上至 處理程序或 DLL 的子字串 欄位,然後按一下 Search.
該實例的 vmwp.exe 找到所需內容。點擊 vmwp.exe 在搜尋視窗中找到的,以及該 vmwp.exe Process Explorer 會自動選取該程序。
右鍵點擊選取的 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 已儲存為 $VMGUID 此 PowerShell 工作階段記憶體中的變數。
執行以下指令以終止程序並關閉虛擬機器:
$VMWMProc = (Get-WmiObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMGUID})
Stop-Process ($VMWMProc.ProcessId) -Force
現在,問題的虛擬機器進程已被終止,虛擬機器也已停止。您可以嘗試編輯虛擬機器的設定,然後重新啟動虛擬機器。
解決 Hyper-V 狀態變更失敗錯誤的其他方法
您可能曾發生過在 Hyper-V 中終止了卡住的虛擬機器 (VM) 程序,但虛擬機器卻無法啟動的情況。此時,若您嘗試啟動該虛擬機器,可能會收到以下 Hyper-V 錯誤訊息:
虛擬機器連線:
無法變更狀態。
以下,我將列出其他可能的原因: "Hyper-V 無法變更狀態" 錯誤、可協助解決此錯誤的方法,以及在出現此錯誤後如何完全關閉 Hyper-V 虛擬機器。
DVD 光碟機設定
開啟虛擬機器設定,並檢查虛擬機器的 DVD 選項。若虛擬機器無法存取 ISO 映像檔,便可能發生此錯誤。請確認 ISO 檔案確實存在,且路徑設定正確。若虛擬機器中未使用該虛擬 DVD 光碟機,您亦可將其停用。
儲存錯誤
請檢查虛擬機器儲存空間是否足夠。若儲存虛擬機器檔案的磁碟空間不足,儲存故障可能會導致虛擬機器卡住並顯示 "Hyper-V 無法變更狀態" 錯誤。如果虛擬機器 (VM) 故障是因儲存空間不足所致,您可能需要執行以下指令來修復虛擬機器內的磁碟錯誤:
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 虛擬機器卡住的情況,不僅可能發生在"啟動/停止"狀態,也可能發生在"儲存"狀態。相關症狀相似,且您無法變更問題虛擬機器的狀態。 "啟動/停止虛擬機器"按鈕無法正常運作。若在虛擬機器備份過程中關閉 Hyper-V,可能會導致該虛擬機器卡在"已儲存"狀態。當備份程序中斷且虛擬機器被置於"已儲存"狀態時,亦可能發生此情況。此情況下,虛擬機器可能已損壞或受損。讓我們來探討此錯誤的常見原因及解決方法。
磁碟錯誤
若在虛擬機器運行期間拔除存放虛擬機器檔案的磁碟,該虛擬機器可能會發生錯誤並進入"已儲存"狀態。對於將虛擬機器檔案儲存於 USB 磁碟的 Hyper-V 家用使用者而言,此錯誤較可能發生。然而,企業管理員應注意,此錯誤亦可能由儲存空間問題引起。若磁碟空間不足,虛擬機器會陷入停滯狀態,並可能被置於"已儲存"狀態。 若您已將虛擬機器設定為使用客體作業系統不支援的虛擬硬體,該虛擬機器可能會卡在已儲存狀態。此問題可能發生於您建立新虛擬機器並匯入已安裝客體作業系統的現有虛擬磁碟時。請編輯虛擬機器選項,選擇正確的儲存控制器及其他磁碟選項。請閱讀關於 第 1 代虛擬機器與第 2 代虛擬機器 欲了解更多資訊。
硬體資源不足
若您在 Hyper-V 主機上執行多個資源消耗量大的虛擬機器,當記憶體和 CPU 效能不足時,虛擬機器可能會當機並進入"儲存?"狀態。此時,您應設法修復當機的虛擬機器。為避免此問題,請升級硬體,或避免在效能較低的主機上同時執行多個資源消耗量大的虛擬機器。若情況允許,請將虛擬機器遷移至另一台 Hyper-V 主機。
資料夾權限設定不正確
如果資料夾和虛擬機器檔案的權限不足,虛擬機器可能會卡在 已儲存 狀態。開啟存放虛擬機器檔案之資料夾的屬性。檢查 Security 以及 Sharing 分頁(若虛擬機器位於共用儲存空間的共用資料夾中)。將權限設定為 Allow all 針對所需的使用者或群組。
刪除虛擬機器
如果其他方法都無效,這是一種解決虛擬機器卡在"啟動中"、"停止中"或"已儲存"狀態問題的替代方案。為了避免資料遺失,您應先將虛擬磁碟檔案複製到安全的位置。接著,從原始位置刪除有問題的虛擬機器(包括其設定檔)(右鍵點擊虛擬機器並點選 Delete (在 Hyper-V 管理員中)。建立一台新的虛擬機器,將備份中的虛擬磁碟複製到新虛擬機器的位置,並在 Hyper-V 中建立新虛擬機器時選取現有的虛擬磁碟。
某台虛擬機器卡在"備份中"狀態
另一個類似的問題是 Hyper-V 虛擬機器卡在 跑步 與……的狀態 備份 狀態。在此狀態下,您無法在 Hyper-V 管理員中啟動或停止虛擬機器。重新啟動 Hyper-V 主機通常有助於解決此問題,但由於必須先關閉或遷移主機上正在運行的其他虛擬機器,因此不建議重新啟動。
此錯誤的可能原因在於 Microsoft Hyper-V 出現問題 VSS Hyper-V 主機上的寫入服務。
以系統管理員身分開啟命令提示字元 (CMD),並執行此命令以檢查 VSS 寫入服務的狀態:
vssadmin list writers
如果沒有錯誤,每個 VSS 寫入器的輸出結果將類似於下方螢幕截圖中顯示的內容。
Microsoft Hyper-V VSS 寫入器服務依賴於其父服務"Hyper-V 虛擬機器管理"服務。因此,您必須重新啟動"Hyper-V 虛擬機器管理"服務,才能重新啟動所需的 VSS 服務並解決此問題。
重新啟動"Hyper-V 虛擬機器管理"服務的最快方法是開啟 Services 在 Computer Management 或執行 services.msc,右鍵點擊服務名稱,然後選擇 Restart.
如果 Hyper-V VSS 寫入程式陷入死鎖且沒有回應,您應手動結束該 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 虛擬機器進行備份。

















