本文提供了一个全面的指南,用于排查与 Windows Server 2019、Windows Server 2022 和 Windows Server 2025 上 Hyper-V 群集和管理环境相关的各种问题。 这些问题可以表现为群集管理控制台、虚拟机(VM)迁移、远程管理、身份验证、存储配置和网络连接方面的故障。 本指南确定症状和根本原因,提供可作的解决步骤来解决这些问题。 这些问题的有效故障排除对于在企业虚拟化环境中保持高可用性、业务连续性和合规性至关重要。
最终用户症状
- 无法连接到 Hyper-V Manager 或故障转移群集管理器控制台。
- 远程 VM 管理作(例如,从某些主机或帐户启动、停止或迁移)中的故障。
- 虚拟机无法在群集节点之间迁移,或者迁移或升级后无法访问。
- Hyper-V 管理器显示“正在加载虚拟机...”或“连接到虚拟机管理服务...”。
- 某些用户帐户在内置管理员成功时无法执行管理作。
- 备份或群集作挂起、失败或报告错误。
- VM 报告第三方工具检测到的通用唯一标识符(UUID)。
技术/系统症状
-
错误消息:
无法连接到虚拟机。 尝试再次连接。 如果此问题仍然存在,请联系您的系统管理员。 - > 您没有完成此任务所需的权限。 请与计算机的授权策略的管理员联系。 - > 计算机上的作失败:WinRM 处理请求。 使用 Kerberos 身份验证时发生错误代码0x80090311。 - > SEC_E_NO_AUTHENTICATING_AUTHORITY:无法联系任何机构进行身份验证。 - > Start-VM:Hyper-V 尝试访问计算机 [主机] 上的对象时遇到错误,因为找不到该对象。 - > Get-vm:分页文件太小,无法完成此作。
- Hyper-V 管理器变得无响应或不显示任何 VM。
- VMConnect 从某些远程主机失败,但从其他主机成功。
- Netlogon 和域名系统 (DNS) 日志显示域控制器发现失败。
- Windows Management Instrumentation (WMI) 错误,包括 WMIPrvSE.exe 崩溃。
- 虚拟机管理服务(VMMS)挂起或进入死锁状态。
- 为 VM 检测到重复的 UUID(例如,供应商提取工具)。
- 没有错误消息,但添加存储、配置仲裁磁盘或管理更新时失败。
- 网络跟踪显示主机和域控制器之间的阻止端口。
- 事件日志和分析日志可能缺失或未为受影响的作生成。
出现此问题的原因有一个或多个:
网络和身份验证问题
- 防火墙阻止:所需的端口(例如,用于 LDAP 的 UDP/TCP 389、VMConnect 端口 2179)被阻止、中断身份验证、域控制器发现或管理流量。
- DNS/Netlogon 失败:对域控制器的 UDP ping 或 DNS 查询失败,这会中断 Kerberos 身份验证和远程管理。
权限和组成员身份配置错误
- 权限不足:用户缺少必要的管理组中的成员身份(例如,Hyper-V 管理员、存储副本管理员或远程管理用户)。
- 组策略限制:策略阻止工作组或多域环境中的凭据委派或 Windows 远程管理(WinRM)作。
配置和状态文件损坏
- 损坏的 VM 文件:损坏
.VMRS,.VMCX或由错误关闭或服务崩溃导致的配置文件。 - VMMS 中的死锁:由挂起的网络作或驱动程序问题触发的服务死锁。
软件/代码缺陷
高可用性(HA)VM 设置 bug:影响存储管理或群集作的 Hyper-V HA 设置中的已知缺陷,尤其是在 Windows Server 2019 和 Windows Server 2022 中。
环境和更新问题
- 过时的作系统(OS):缺少 Windows 更新会导致 Hyper-V 角色安装或作不稳定。
- 备份或第三方软件影响:备份作或第三方工具会导致服务(例如 WMI)崩溃或故障。
存储和硬件标识符问题
- 重复的 UUID:由于制造商设置或克隆,VM UUID 重复。
- 存储配置差距:配置错误或无法识别的共享存储和存储池。
控制台/管理工具失败
故障转移群集 GUI/控制台问题:配置错误或重复情况方案可防止管理接口正常运行。
下面是每个方案的解决方法:
方案 1:群集或 Hyper-V 管理器控制台无法连接或进行身份验证
-
验证网络连接和防火墙规则:
- 确保 UDP/TCP 端口 389 在 Hyper-V 主机和域控制器之间打开。
- 打开端口 2179 进行 VMConnect/控制台访问。
- 使用网络跟踪工具识别被阻止的流量。
-
检查 DNS 和 Netlogon 设置:
- 查看 Netlogon 日志中失败的域控制器发现。
- 验证 DNS 设置并确认域控制器可访问性。
-
确认组成员身份和权限:
- 确保用户是以下成员:
- Hyper-V 管理员
- 远程管理用户
- 存储副本管理员(如果适用)
- 如有必要,请从默认用户组中删除受影响的用户。
- 确保用户是以下成员:
-
更新组策略和 WinRM 设置:
-
使用以下 cmdlet 启用 PowerShell 远程处理:
Enable-PSRemoting -
使用以下 cmdlet 配置 CredSSP 进行身份验证:
Enable-WSManCredSSP -Role serverEnable-WSManCredSSP -Role client -DelegateComputer "<Hyper-V host>"
-
-
调整受信任的主机和防火墙规则:
-
使用以下 cmdlet 为 WinRM 设置受信任的主机:
Set-Item wsman:localhost\client\trustedhosts <Hyper-V host IP> -
启用相关的防火墙规则:
- 远程管理
- 远程桌面
- 远程卷管理
- Windows 管理工具 (WMI)
-
方案 2:升级后虚拟机无法迁移、启动或无法访问
-
检查存储和网络配置:
- 验证是否已配置共享存储和存储池,并从所有群集节点访问。
- 确保所有节点之间的网络设置一致。
-
验证 OS 更新:
在安装或迁移 Hyper-V 角色之前,在所有 Hyper-V 主机上运行 Windows 更新。
-
调查 VM 状态和配置文件:
如果 VM 无响应:
- 关闭所有正常的 VM。
- 重新启动 Hyper-V 主机。
- 从 Hyper-V 管理器中删除有问题的 VM(保留 VHDX 文件)。
- 备份并根据需要删除或重命名
.vmcx和.vmrs文件。 - 使用现有的 VHDX 磁盘重新创建 VM。
-
修复损坏的文件:
- 收集进程转储并分析 VMMS 死锁。
- 使用进程资源管理器或 TSS 脚本(从 https://aka.ms/getTSS)等工具收集日志并终止停滞的进程。
方案 3:管理 VM 时权限/访问被拒绝错误
- 更新用户组成员身份:将用户添加到 Hyper-V 主机上的相应管理组。
- 重新编译 WMI 类:运行
MOFCOMP %SYSTEMROOT%\System32\WindowsVirtualization.V2.mof命令。 - 在组策略中重新配置凭据委派:允许使用仅限 NTLM 的服务器身份验证委派新凭据。
方案 4:供应商工具检测到的 VM UUID 重复
-
对于 VMware:
编辑 VM
.vmx的文件:找到 uuid.bios 条目并为其分配唯一值。 -
对于 Hyper-V:
- 使用第三方工具随机化或更新 BIOS GUID。
- 如果不可行,请从头开始创建新的 VM,以确保唯一的 UUID。
方案 5:群集或 Hyper-V 角色安装失败
-
安装最新的 Windows 更新:在尝试安装 Hyper-V 功能之前完全修补服务器。
-
使用服务器管理器、PowerShell 或部署映像服务和管理(DISM)工具重试角色安装:
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
方案 6:备份或 WMI 相关的群集节点故障
- 检查 WMI 服务状态:如果 WMIPrvSE.exe 崩溃,请重启服务或重新启动节点。
- 收集事件期间的日志:收集 SDP、TSS 和群集日志,以便进行根本原因分析。
方案 7:故障转移群集控制台/GUI 不起作用
- 检查重复案例:验证是否尚未在开放式支持案例中跟踪问题。
- 验证群集配置:查看群集日志和配置是否不一致。
方案 8:强化和最佳做法
-
运行最佳做法分析器(BPA):
使用服务器管理器或以下 PowerShell cmdlet:
Invoke-BpaModel -ModelId Microsoft/Windows/Hyper-V -
实施强化建议:从Microsoft文档和 BPA 输出应用安全建议。
数据收集:日志和命令
-
用于 Hyper-V 诊断的 TSS 脚本:
下载并运行 TSS。 例如:
Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned.\TSS.ps1 -SDP HyperV -
事件日志收集:复制和压缩 %SystemRoot%\System32\winevt 下的事件日志文件夹。
-
WMI 和 VM UUID 查询:
Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select UUIDGet-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID -
WinRM 和 PowerShell 远程处理设置:
Enable-PSRemotingEnable-WSManCredSSP -Role server/clientSet-Item wsman:localhost\client\trustedhosts <host IP> -
通过远程 PowerShell 执行 VM作:
$cred = Get-CredentialInvoke-Command -Credential $cred -ComputerName <Hyper-V host IP> -ScriptBlock { Start-VM <VM Name> }