概要
Hyper-V 是 Windows Server 环境中虚拟化的核心组件。 它可以在单个或群集主机基础结构上管理多个虚拟机(VM)。 但是,管理员经常遇到各种 VM 启动失败和性能问题,这些问题可能会妨碍业务运营。 此类问题可能是硬件限制、配置更改、更新、网络、存储和软件或文件系统损坏造成的。 快速全面的故障排除对于最大程度地减少停机时间并维护数据完整性至关重要。 本文旨在帮助管理员解决 Hyper-V VM 问题、解决常见故障模式及其解决方法,并提供数据收集和原因分析的最佳做法。
故障排除清单
使用此清单进行系统故障排除:
- 检查错误消息和事件日志
- 记下确切的措辞、事件 ID 和计时。
- 评估可用的主机资源
- CPU、内存、存储和网络可用性。
- 查看最近更改的内容
- 更新、配置、硬件或固件更改。
- 验证 VM 和主机配置
- 启动 RAM、CPU 计数、磁盘和网络设置。
- 检查存储连接性和可用性
- 磁盘运行状况、群集状态、网络存储路径。
- 测试 VM 登录和域信任关系
- 对于域附加的系统,请确保信任不会中断。
- 查看故障转移群集和仲裁:
- 节点状态、群集日志和网络配置。
- 检查防病毒和安全干扰
- 最近的 AV/EDR 更改或扫描活动。
- 验证注册表和文件和文件夹权限
- 请特别检查与 Hyper-V 进程相关的子项和文件夹。
- 检查已知 bug 或补丁
- 查看Microsoft文档和最近的发行说明。
常见问题和解决方案
以下部分详细介绍了最常见的故障模式,并提供分步解决方案。
VM 未启动,原因是内存和资源不足
症状
- 错误:“无法初始化内存:内存不足(0x8007000E)。”
- 错误:“由于内存不足,虚拟机无法启动。
- 更新或重启后,主机或 VM 无响应。
决议
- 查看 Hyper-V 管理器或任务管理器中的主机内存使用情况。
- 减少 VM 启动内存值(Hyper-V 管理器>VM>设置>内存)。
- 增加主机上的物理 RAM。
- 如果使用动态内存,请设置合理的最小值和最大值以避免过度分配。
- 重启 VM。
VM 失败并返回“数据无效”(0x8007000D)或证书或注册表错误
症状
- 错误:“数据无效。 (0x8007000D)
- 事件日志:访问注册表项时访问被拒绝。
- VM 在最近的更新后不会启动(例如,KB5051979)。
决议
- 使用 ProcMon 标识 vmwp.exe的 ACCESS DENIED 注册表事件。
- 对相关密钥的权限设置正确(例如,HKU\DEFAULT\Software\Policies[Vendor]\SystemCertificates\CA):- 以管理员身份打开 regedit。
- 右键单击 > “权限” > 添加或调整所需的用户和组。
- 使用 Sysinternals sigcheck 验证和修复密钥 DLL 上的数字签名。
- 请确保必要的防病毒/EDR 排除规则可用于 Hyper-V 目录。
- 检查磁盘和网络适配器配置 - 如有必要,请删除并重新添加。
- 重启主机并测试 VM 启动。
VM 显示升级后的 CPU 和内存减少
症状
- 设备管理器显示 CPU,但任务管理器/MSinfo 显示的 CPU 数量少于分配的数量。
- 更新 VM 或 Hyper-V 主机后,主要性能会下降。
- 仅影响从旧版 OS 升级的 VM。
决议
-
从 BCD 中删除所有 numproc 数值:
bcdedit /deletevalue {default} numproc -
设置用于修复推测执行问题的注册表子项:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 72 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f -
重新启动虚拟机。
-
通过任务管理器和 PowerShell 验证 CPU 和内存识别。
磁盘或文件系统损坏,无法启动、删除或附加磁盘
症状
- 错误:“由于错误而无法打开。 文件或目录已损坏且不可读。
- 错误:删除文件时0x80070570。
- 事件 ID:8、153、129,用于磁盘故障或重置。
决议
-
请尝试文件系统修复:
chkdsk [drive]: /f -
在修复之前备份所有关键数据(如果可能)。
-
针对 VM 配置或 VHD 损坏:
- 创建一个新的虚拟机,并附加现有的(已修复)VHD/VHDX。
- 如有必要,请从恢复媒体开始,并修复 Windows(使用 sfc /scannow、startrec /fixstart)。
-
更新任何过时的存储或网络驱动程序和固件。
-
验证群集仲裁和存储路径。
群集和 CSV 问题:暂停状态、重启、意外故障转移
症状
- 事件 ID 5120 (群集共享卷暂停状态)
- 事件 ID 1135 (从群集中删除节点)
- 集群日志记录资源故障和心跳信号丢失
- VM 意外重启或故障转移
决议
-
在所有群集节点上更新所有存储和网络适配器驱动程序和固件。
-
根据需要检查和调整群集仲裁设置。
-
根据Microsoft指南删除任何第三方防病毒/EDR 或排除群集、Hyper-V 和存储目录。
-
调查最近的硬件和网络更改(交换机模块、电缆、防火墙)。
-
跨群集节点重新平衡 VM 工作负荷。
-
使用以下命令生成和收集群集日志:
Set-ClusterLog -UseLocalTime -Level 5 -Destination C:\temp -
如果在日志中找到硬件问题或重复错误 ID,请与存储和网络供应商合作。
域信任和身份验证或登录失败
症状
- 错误:“此工作站与主域之间的信任关系失败。
- 无法通过 Hyper-V Manager 登录,但 RDP 有效。
- 虚拟机停滞在“请等待”界面或无法登录。
决议
- 将该虚拟机从域中删除,然后重新加入域。
- 检查并更正 Active Directory 中的计算机帐户状态。
- 对于登录错误,请清理旧配置文件或检查 GPO 或配置文件损坏。
- 确保域控制器健康并且可以从虚拟机/管理程序访问。
性能问题:VM 速度缓慢、延迟高、应用停止响应
症状
- 作业或备份的持续时间比平常长两到三倍。
- 磁盘空闲时间较低,平均磁盘延迟大于 25 毫秒。
- 事件日志显示重复的条目:“I/O 请求完成用了 XXXXX 毫秒”。
- VM 无响应,尤其是在大量 I/O 期间。
决议
-
监控磁盘和网络性能。
logman create counter PerfLog-Short-Interval -f bincirc -si 00:00:01 -o c:\Temp\ percentComputerName percent_PerfLog-Short-Interval.blg -c \Memory\\* \Network Interface(\*)\\* \Processor(\*)\\* \PhysicalDisk(\*)\\* \LogicalDisk(\*)\\* logman start PerfLog-Short-Interval logman stop PerfLog-Short-Interval -
确定存储和网络瓶颈。 更新驱动程序和固件。
-
跨单独的主机和存储阵列分配繁重的工作负荷。
-
如果问题仅出现在特定的工作负载中,请与应用程序供应商合作。
-
检查并消除网络配置错误(禁用或启用 VMQ、RSS 等)。
-
根据需要重启 VM 或主机以清除硬件或驱动程序锁定。
常见问题快速参考表
| 症状 | 根源 | 决议 |
|---|---|---|
| “内存不足”/(0x8007000E) | 主机缺少免费的 RAM,过度订阅 | 添加 RAM 以托管或减少 VM 启动内存 |
| “数据无效”(0x8007000D):VMwp.exe 日志中拒绝访问 | 注册表或证书权限错误 | 修复注册表权限、验证签名、设置 AV 排除项 |
| 升级后,只能识别出部分 CPU,性能下降幅度不到 50%。 | 启动配置或注册表限制 | 删除 BCD numproc,添加注册表 FeatureSettingsOverride/Mask,重启 |
| 文件系统错误,例如0x2;chkdsk 错误;无法删除文件 | 损坏的 NTFS 元数据或 VM 文件 | 运行 chkdsk /f、备份、将 VHD 附加到新 VM、修复或还原 |
| CSV 已暂停(事件 5120):节点删除(事件 1135):重新 启动 | 网络、驱动程序或存储问题、AV | 更新驱动程序和固件,检查群集配置,删除或调整 AV |
| “域信任失败”;Hyper-V 管理器登录失败 | 信任关系断开或 Active Directory/GPO 问题 | 重新加入域,检查 Active Directory 帐户,清除缓存凭据 |
| 性能下降(磁盘空闲不足 95%,延迟大于 25 毫秒、事件 9、153 等) | 存储/网络瓶颈或缓存配置 | 更新固件, 移动 VM, 调整工作负荷平衡, 查看缓存 |
数据收集
在联系Microsoft支持人员之前,可以收集有关你的问题的以下信息。
- 事件日志: C:\Windows\System32\winevt\logs\system.evtx, application.evtx
- 群集日志: 使用 Set-ClusterLog 导出诊断信息
- 性能日志: 使用 Perfmon/logman
- 存储/网络驱动程序和固件清单: 使用设备管理器或 Get-WmiObject Win32_PnPSignedDriver 拉取
- 注册表导出: 使用 regedit 保存和分析可疑密钥(例如,在内存管理下)
- 屏幕截图: 错误、设置对话框、设备管理器等
- Active Directory 日志: 对于域信任和身份验证问题