疑難排解 Hyper-V 虛擬機器輸入、移轉和裝置整合問題

本文提供全面的指南,以解決 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 中的增強型會話模式輸入遺失,請遵循下列步驟:

  1. 開啟 Hyper-V 管理員
  2. 導覽至 Hyper-V 設定>增強型工作階段模式原則
  3. 取消核取 [允許增強型工作階段模式] 以停用此功能。
  4. 在標準工作階段模式下測試輸入功能。

VMware 移轉後的 USB 或 GPU 傳遞

  • USB 裝置:

    • 針對支援的作業系統使用遠端桌面 USB 重新導向或增強型工作階段模式。
    • 或者,設定網路 USB 解決方案,因為 Hyper-V 本身不支援直接 USB 傳遞。
  • GPU 指派:

解除安裝 VMware 工具

使用 PowerShell 指令碼 (例如 GitHub 中的 Uninstall-VMwareTools.ps1 ) 在移轉後強制移除 VMware 工具和相關服務。

原因 2:移轉和叢集失敗

  • TPM/防護的 VM 憑證設定錯誤:遺失或不正確傳輸的防護憑證可能會阻止已啟用 TPM 的 VM 進行即時移轉。
  • VLAN/網路設定:實體交換器連接埠設定錯誤或舊版網路整併設定可能會在 VLAN 指派之後隔離 VM。
  • VM 組態版本:過時的 VM 組態版本可能與較新的 Hyper-V 主機不相容,導致移轉失敗。
  • 活動訊號整合:VM 內的高 CPU 使用率、資源耗盡或應用程式停止回應可能會觸發叢集活動訊號失敗,導致強制重新啟動。

解決方案:移轉和叢集問題

TPM/受防護的 VM 移轉失敗

  1. 在來源節點上,使用下列命令列出受防護的 VM 憑證:

    bashcertutil -store "Shielded VM Local Certificates"
    
  2. 使用下列命令匯出加密和簽署憑證:

    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
    
  3. 使用下列命令在目標節點上匯入憑證:

    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 因活動訊號失敗而重新啟動,請遵循下列步驟:

  1. 停用受影響虛擬機器的活動訊號整合服務:

    1. 移至 VM 設定 > Integration Services
    2. 取消核取 Heartbeat。
  2. 監視虛擬機器的穩定性。 如果偵測到高 CPU 使用量 (例如,WMI 或 LSASS) ,請調查資源使用量。

  3. 使用下列命令收集記憶體傾印以進行分析:

    -Name -InjectNonMaskableInterrupt -Force
    

原因 3:檔案系統和儲存問題

  • 孤立的檢查點:不完整的合併操作可能會留下虛擬檢查點文件,從而阻止備份或檢查點刪除。
  • 檔案系統損毀:儲存體或檔案系統的問題可能會中斷檢查點移除或 VHD 鏈結更新。

解決方案:檔案系統、儲存體和檢查點失敗

孤立/幻影檢查點

  1. 為受影響的 VM 建立新的檢查點。

  2. 將最新的檢查點匯出至安全位置。

  3. 從 Hyper-V Manager 中刪除虛擬機器。

  4. 使用還原選項將 VM 匯入回 Hyper-V。 針對叢集,請從叢集中移除 VM、使用相同的設定重新建立 VM、連結現有的 VHD/VHDX,然後將它新增回叢集。

  5. 使用 PowerShell 檢查檢查點:

    Get-VM -Name <VMName> | Get-VMSnapshot
    Get-VHDChain -Path <path-to-vhdx>
    
  6. 使用進程監視器(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)追蹤錯誤。

參考資料