本文提供了一个全面的指南,用于排查 Hyper-V 虚拟机(VM)遇到的常见问题。 它侧重于解决与设备集成(例如鼠标、键盘、图形处理单元(GPU 或 USB)相关的问题,以及增强会话模式。 在平台升级、群集配置更改或从其他虚拟机监控程序(如 VMware)迁移后,可能会出现这些问题。 解决这些问题对于维护 VM 可用性、确保网络连接和支持业务运营至关重要。
最终用户症状
- 升级到 Windows 11 后,鼠标移动在 Linux 来宾 VM 中垂直方向显示。
- 使用增强会话模式时,鼠标和键盘在 Windows 11 VM 中变得无响应。
- 无法执行启用了受信任平台模块(TPM)的 VM 的实时迁移。
- 分配给虚拟局域网(VLAN)的 VM 会失去网络连接。
- 无法从 VMware 迁移后将 USB 设备或 GPU 卡连接到 VM。
- VM 遇到频繁、随机重启或意外连接丢失到业务应用程序的情况。
技术/系统症状
-
错误消息:
未能删除检查点。 (虚拟机 ID...) - > 虚拟机无法生成 VHD 树:灾难性故障(0x8000FFFF) - > 无法删除检查点:灾难性故障(0x8000FFFF) - > 系统找不到指定的文件。
-
事件 ID:
- 事件 ID 1069(故障转移群集):群集资源故障。
- 事件 ID 41 (Kernel-Power):系统重新启动,无需干净关闭。
- 事件 ID 18502(Hyper-V-Worker):VM 已关闭。
- 事件 ID 3056(Hyper-V-Worker):NUMA 拓扑不匹配警告。
- 事件 ID 1106(Hyper-V VMMS):实时迁移期间访问冲突(c0000005)。
-
可靠性监视器显示重复的 System Center Virtual Machine Manager (SCVMM) 代理崩溃。
-
迁移到 Hyper-V 后无法卸载 VMware 工具。
-
VM 挂起或无响应,Windows Management Instrumentation(WMI)或本地安全机构子系统服务(LSASS)等服务 CPU 使用率较高。
-
Hyper-V 管理器显示阻止备份的孤立检查点。
原因 1:输入和设备集成失败
- 作系统(OS)或虚拟机监控程序兼容性:将主机 OS(例如,升级到 Windows 11 版本 24H2)可能会引入 Hyper-V 集成服务中的更改,从而导致输入反转或丢失,尤其是在非 Windows 来宾 VM 中。
- 增强会话模式:协议或驱动程序问题可能会中断 Windows 11 VM 上增强会话模式下的输入设备功能。
- 从 VMware 迁移:VMware 工具不完整或不兼容的删除,或者 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 设备:
- 对支持的 OS 使用远程桌面 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 的 Switch Embedded Teaming (SET)。
- 分配 VLAN ID 并验证每个物理接口的连接。
VM 配置版本
使用以下 cmdlet 更新 VM 配置:
Update-VMVersion -Name <VMName>
更新后,测试实时迁移。 如果问题仍然存在,请关闭 VM,执行快速迁移,然后重启。
与群集/检测信号相关的重启
如果 VM 因检测信号故障而重新启动,请执行以下步骤:
-
为受影响的 VM 禁用检测信号集成服务:
- 转到 VM 设置 > Integration Services。
- 取消选中 检测信号。
-
监视 VM 稳定性。 如果检测到高 CPU 使用率(例如,按 WMI 或 LSASS),请调查资源使用情况。
-
使用以下命令收集内存转储进行分析:
-Name -InjectNonMaskableInterrupt -Force
原因 3:文件系统和存储问题
- 孤立的检查点:不完整的合并作可能会留下虚拟检查点文件、阻止备份或检查点删除。
- 文件系统损坏:存储或文件系统的问题可能会中断检查点删除或 VHD 链更新。
解决方法:文件系统、存储和检查点故障
孤立/虚拟检查点
-
为受影响的 VM 创建新的检查点。
-
将最新的检查点导出到安全位置。
-
从 Hyper-V 管理器中删除 VM。
-
使用还原选项将 VM 导入回 Hyper-V。 对于群集,请从群集中删除 VM,使用同一配置重新创建 VM,附加现有的 VHD/VHDX,并将其添加回群集。
-
使用 PowerShell 检查检查点:
Get-VM -Name <VMName> | Get-VMSnapshot Get-VHDChain -Path <path-to-vhdx> -
使用进程监视器(procmon)等工具跟踪文件访问并验证系统完整性。
原因 4:应用程序级和第三方集成
监视/代理崩溃:由于 Hyper-V 或 Windows Server 中的更改,第三方监视或代理软件(如 SCVMM 或 Zenoss)可能会失败。 除非与失败的作关联,否则这些失败通常不会产生直接影响。
解决方法:应用程序级和第三方集成问题
如果监视或代理集成失败:
- 验证主机上的 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)跟踪错误。
References
- 使用 DDA 部署图形设备
- 查看有关更新和修补程序的Microsoft公告。