本文提供全面的指南,以解決 Hyper-V 虛擬機器 (VM) 遇到的常見問題。 它著重於解決與裝置整合 (例如滑鼠、鍵盤、圖形處理單元 (GPU) 或 USB)、移轉和增強工作階段模式相關的問題。 這些問題可能會在平台升級、叢集組態變更或從其他 Hypervisor (例如 VMware) 移轉之後出現。 解決這些問題對於維護 VM 可用性、確保網路連線和支援業務營運至關重要。
使用者症狀
- 升級到 Windows 11 後,滑鼠移動在 Linux 客體 VM 中垂直反轉。
- 使用增強型工作階段模式時,滑鼠和鍵盤在 Windows 11 VM 中變得無回應。
- 無法對已啟用信任平台模組 (TPM) 的虛擬機器執行即時移轉。
- 指派給虛擬區域網路 (VLAN) 的 VM 會失去網路連線。
- 從 VMware 移轉後,無法將 USB 裝置或 GPU 卡連線至 VM。
- VM 會頻繁、隨機重新開機,或與業務應用程式的連線意外中斷。
技術/系統症狀
錯誤訊息:
-
無法移除檢查點。 (虛擬機器 ID ...)
-
虛擬機器無法產生 VHD 樹狀結構:災難性失敗 (0x8000FFFF)
-
無法刪除檢查點:災難性失敗 (0x8000FFFF)
-
系統找不到指定的檔案。
-
事件標識碼:
- 事件標識碼 1069 (容錯移轉叢集):叢集資源失敗。
- 事件標識碼 41 (Kernel-Power):系統已重新啟動,但未完全關機。
- 事件標識碼 18502 (Hyper-V-Worker):VM 已關閉。
- 事件標識碼 3056 (Hyper-V-Worker):NUMA 拓撲不符警告。
- 事件標識碼 1106 (Hyper-V VMMS):即時移轉期間的存取違規 (c0000005)。
可靠性監視器會顯示重複的 System Center Virtual Machine Manager (SCVMM) 代理程式當機。
遷移到 Hyper-V 後無法卸載 VMware Tools。
VM 會停止回應或變得沒有回應,Windows Management Instrumentation (WMI) 或本機安全性授權單位子系統服務 (LSASS) 等服務的 CPU 使用率很高。
Hyper-V Manager 會顯示封鎖備份的孤立檢查點。
原因一:輸入和裝置整合失敗
- 作業系統 (OS) 或 Hypervisor 相容性:升級主機 OS (例如,升級至 Windows 11 版本 24H2) 可能會在 Hyper-V 整合服務中引入變更,導致輸入反轉或遺失,尤其是在非 Windows 客體 VM 中。
- 增強型會話模式:通訊協定或驅動程式問題可能會中斷 Windows 11 VM 上增強型會話模式內的輸入裝置功能。
- 從 VMware 移轉:VMware Tools 移除不完整或不相容,或 VMware 與 Hyper-V 之間的裝置傳遞 (例如 USB 或 GPU) 差異,可能會導致連線和效能問題。
解決方案:輸入和裝置整合問題
客體 VM 中的滑鼠或鍵盤問題
針對 Windows 11 版本 24H2 上 Linux 客體 VM 中的反轉滑鼠輸入,請將主機 OS 還原為 Windows 11 版本 23H2,直到有永久修正程式為止。
若要解決 Windows 11 VM 中的增強型會話模式輸入遺失,請遵循下列步驟:
- 開啟 Hyper-V 管理員。
- 導覽至 Hyper-V 設定>增強型工作階段模式原則。
- 取消核取 [允許增強型工作階段模式] 以停用此功能。
- 在標準工作階段模式下測試輸入功能。
VMware 移轉後的 USB 或 GPU 傳遞
USB 裝置:
- 針對支援的作業系統使用遠端桌面 USB 重新導向或增強型工作階段模式。
- 或者,設定網路 USB 解決方案,因為 Hyper-V 本身不支援直接 USB 傳遞。
GPU 指派:
- 請遵循 使用離散裝置指派 (DDA) 部署圖形裝置中的指引。
- 確認 DDA 的硬體、驅動程式和 VM 組態支援。
解除安裝 VMware 工具
使用 PowerShell 指令碼 (例如 GitHub 中的 Uninstall-VMwareTools.ps1 ) 在移轉後強制移除 VMware 工具和相關服務。
原因 2:移轉和叢集失敗
- TPM/防護的 VM 憑證設定錯誤:遺失或不正確傳輸的防護憑證可能會阻止已啟用 TPM 的 VM 進行即時移轉。
- VLAN/網路設定:實體交換器連接埠設定錯誤或舊版網路整併設定可能會在 VLAN 指派之後隔離 VM。
- VM 組態版本:過時的 VM 組態版本可能與較新的 Hyper-V 主機不相容,導致移轉失敗。
- 活動訊號整合:VM 內的高 CPU 使用率、資源耗盡或應用程式停止回應可能會觸發叢集活動訊號失敗,導致強制重新啟動。
解決方案:移轉和叢集問題
TPM/受防護的 VM 移轉失敗
在來源節點上,使用下列命令列出受防護的 VM 憑證:
bashcertutil -store "Shielded VM Local Certificates"使用下列命令匯出加密和簽署憑證:
certutil -exportPFX -p <password> "Shielded VM Local Certificates" <SerialNumber> c:\cert-VMEncryption.pfx certutil -exportPFX -p <password> "Shielded VM Local Certificates" <SerialNumber> c:\cert-VMSigning.pfx使用下列命令在目標節點上匯入憑證:
bashcertutil -importPFX "Shielded VM Local Certificates" c:\cert-VMEncryption.pfxcertutil -importPFX "Shielded VM Local Certificates" c:\cert-VMSigning.pfx
VLAN/網路連線
- 將物理交換機埠配置為中繼埠以允許所有VLAN。
- 將舊版 LBFO (負載平衡和容錯移轉) 小組取代為實體 NIC 的交換器內嵌整隊 (SET)。
- 指派 VLAN ID 並驗證每個實體介面的連線能力。
VM 組態版本
使用下列 Cmdlet 更新 VM 設定:
Update-VMVersion -Name <VMName>
更新之後,請測試即時移轉。 如果問題持續發生,請關閉 VM、執行快速移轉,然後重新啟動。
叢集/活動訊號相關重新啟動
如果 VM 因活動訊號失敗而重新啟動,請遵循下列步驟:
停用受影響虛擬機器的活動訊號整合服務:
- 移至 VM 設定 > Integration Services。
- 取消核取 Heartbeat。
監視虛擬機器的穩定性。 如果偵測到高 CPU 使用量 (例如,WMI 或 LSASS) ,請調查資源使用量。
使用下列命令收集記憶體傾印以進行分析:
-Name -InjectNonMaskableInterrupt -Force
原因 3:檔案系統和儲存問題
- 孤立的檢查點:不完整的合併操作可能會留下虛擬檢查點文件,從而阻止備份或檢查點刪除。
- 檔案系統損毀:儲存體或檔案系統的問題可能會中斷檢查點移除或 VHD 鏈結更新。
解決方案:檔案系統、儲存體和檢查點失敗
孤立/幻影檢查點
為受影響的 VM 建立新的檢查點。
將最新的檢查點匯出至安全位置。
從 Hyper-V Manager 中刪除虛擬機器。
使用還原選項將 VM 匯入回 Hyper-V。 針對叢集,請從叢集中移除 VM、使用相同的設定重新建立 VM、連結現有的 VHD/VHDX,然後將它新增回叢集。
使用 PowerShell 檢查檢查點:
Get-VM -Name <VMName> | Get-VMSnapshot Get-VHDChain -Path <path-to-vhdx>使用進程監視器(procmon)等工具來追蹤檔案存取並驗證系統完整性。
原因四:應用程式層級與第三方整合
監控/代理程式當機:第三方監控或代理程式軟體 (例如 SCVMM 或 Zenoss) 可能會因為 Hyper-V 或 Windows Server 的變更而失敗。 這些失敗通常不會直接影響,除非與失敗的作業相關聯。
解決方案:應用程式層級和第三方整合問題
如果監控或代理程式整合失敗:
- 驗證主機上的 WMI 和 WINRM 組態。
- 檢閱應用程式記錄檔是否有驗證錯誤,例如 GSS 質詢失敗。
- 如果 Hyper-V 和 WMI 正常運作,請呈報至第三方廠商以取得進一步支援。
一般補救和預防
套用最新的 Windows 更新和叢集修補程式。
定期監控儲存基礎設施以防止檔案系統損壞。
維護 VM 組態、憑證和網路設定的 up-to日期文件。
對於安全漏洞,請使用以下命令確保撤銷策略和登錄設定正確:
bashSet-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name EnableVirtualizationBasedSecurity -Value 0 -Type DWordRestart-Computer
數據採集
若要收集記錄和資訊:
叢集和事件記錄檔:收集 TSS 記錄檔、效能監視器資料和事件檢視器記錄檔 (Hyper-V-VMMS、Hyper-V-Worker、系統、應用程式) 。
VM 組態:
Update-VMVersion -Name <VMName>快照/檢查點檢查:
Get-VM -Name <VMName> | Get-VMSnapshot Get-VHDChain -Path <path-to-vhdx>憑證管理:
certutil -store "Shielded VM Local Certificates" certutil -exportPFX ... certutil -importPFX ...記憶體傾印收集:
Debug-VM -Name <VMName> -InjectNonMaskableInterrupt -Force進程/檔案系統監控:使用進程監視器(procmon)追蹤錯誤。
參考資料
- 使用 DDA 部署圖形裝置
- 請檢查 Microsoft 諮詢以取得相關更新和修補程式。