Hyper-V 中的实时迁移允许虚拟机(VM)在主机之间移动,且停机时间最短,这是在 Windows Server 环境中实现高可用性和维护的关键功能。 尽管其功能如此,但实时迁移可能会因为各种因素而失败,例如硬件不兼容、身份验证、网络配置、VM 设置和存储问题。 正确诊断和解决实时迁移失败对于业务连续性至关重要,尤其是在群集和生产设置中。 本指南提供全面的故障排除过程、常见迁移问题的详细解决方案、结构化数据收集过程和快速参考资源。
故障排除清单
在故障排除之前和期间,将此清单用作分步过程:
-
基线运行状况检查
- 确认 VM 集成服务 up-to日期。
- 确保所有主机都完全修补并运行受支持的 Windows Server 版本。
- 确认 VM 处于迁移支持状态(例如,不在“备份”或“正在停止”中)。
-
群集和主机配置
- 检查群集节点/主机兼容性(CPU、BIOS/固件版本、配置版本)。
- 验证所有群集节点是否处于联机状态、正常运行,并在故障转移群集管理器中可见。
- 验证跨主机的 VM 配置版本一致性。
-
网络和存储
- 确认正确配置并可访问实时迁移、管理和存储网络。
- 确保可在目标主机上访问 VM 存储。
- 检查防火墙规则和端口可访问性(例如 UDP 3343 for WSFC)。
-
身份验证或权限
- 验证是否为实时迁移启用了 Kerberos 或 CredSSP 并正确委派。
- 确保注册所需的服务主体名称(SPN)。
- 确认迁移帐户的权限级别。
-
虚拟交换机或网络
- 确保所需的 VM 交换机存在,并且跨主机配置相同。
- 验证网络组合(SET 或 LBFO)一致性。
-
特定于 VM 的功能
- 如果使用 vTPM/受防护的 VM,请确认主机之间的证书要求。
- 检查快照/检查点 - 根据需要进行合并或删除。
下面是常见问题及其各自的解决方法:
硬件或 CPU 不兼容
- 错误消息:
虚拟机使用物理计算机上不支持的特定于处理器的功能
- 事件 ID 21502
决议
- 在 Hyper-V 管理器中,设置 VM 的处理器设置。 启用 迁移到具有不同处理器版本的物理计算机。
- 确保目标主机支持 VM 的 CPU 功能。
小窍门
始终在最旧(最不支持)的 CPU 主机上首次启动 VM。
VM 配置版本不匹配
- 迁移的工作方式是单向的,但不是相反的(尤其是在迁移到较新的 OS 之后)。
- 错误消息:
实时迁移或快速迁移失败并出现兼容性问题。
- 事件 ID 10698 和 21502
决议
-
升级到较新的主机时升级 VM 配置版本(Hyper-V 管理器: 作>升级 VM 配置版本)。
注释
无法回滚此作。 无法将升级版本的 VM 迁移回旧主机。
-
使用
Get-VM * | select Name, Versioncmdlet 验证配置版本。
网络连接或配置问题
- 实时迁移在传输之前/期间失败。
- 迁移失败,并显示:“客户端无法连接到请求中指定的目标”或“WinRM 协议错误”。
- 事件 ID:20406 和 280
决议
- 确保主机可以通过主机名/IP 相互解析并相互联系(测试)。
ping - 用于
winrm quickconfig验证/配置两个主机上的 WinRM。 - 根据需要更新 TrustedHosts:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "<Host1>,<Host2>"。 - 验证防火墙是否允许必要的端口(默认 SMB、WinRM 和群集端口)。
- 跨主机匹配网络配置(交换机名称/类型、组合)。
身份验证或委派问题
- 错误代码:“常规访问被拒绝错误(0x80070005)”
- 错误0x8009030E和0x8009030D(委派/Kerberos/SPN 问题)
决议
- 启用 Kerberos 身份验证: Hyper-V 设置>实时迁移>高级>身份验证协议:Kerberos。
- 在 Active Directory 中配置约束委派: “计算机属性>委派 ”选项卡 >信任此计算机,以便仅>添加 cifs 和Microsoft虚拟系统迁移服务。
- 注册缺少 SPN:
setspn -s Microsoft Virtual System Migration Service/<FQDN> <ComputerName>。 - 清除旧的 Kerberos 票证:
KLIST PURGE -li 0x3e7。
存储或共享磁盘问题
- 对于具有共享 VHDX/共享磁盘的 VM,迁移失败。
- 错误:迁移选项中缺少共享磁盘。
决议
- 共享虚拟磁盘只能在群集 VM 角色中使用,不能使用标准方法进行迁移。
- 根据需要,在目标处手动移动和重新附加共享磁盘。
VTPM 或受防护的 VM 证书问题
- 错误:“无法解包虚拟机的密钥保护程序。
- 迁移仅对受 vTPM 保护的 VM 失败。
决议
- 从源主机导出防护或密钥保护程序证书,并将其导入目标。
- 可以使用 Windows 证书管理单元(certmgr.msc)。
- PowerShell cmdlet:
Export-PfxCertificate和Import-PfxCertificate。
状态文件或检查点问题
- 错误消息:
无法还原此虚拟机,因为无法读取保存的状态数据。 删除保存的状态数据,然后尝试启动虚拟机。 (0xC0370027)
- VM 停滞在“备份”状态。
决议
- 在 Hyper-V 管理器中:选择 VM>删除已保存状态。
- 如有必要,请手动删除
.bin``.vsvVM 文件夹中的文件。 - 删除或合并损坏的检查点。
群集或迁移限制问题
- 错误消息:
达到虚拟机迁移限制 1,请等待完成正在进行的迁移作。
- VM 在节点清空或重新启动期间进入“已保存”状态。
决议
-
增加同步迁移: Hyper-V 设置>实时迁移 同时迁移>。
-
PowerShell cmdlet:
Set-VMHost -MaximumVirtualMachineMigrations N -
在重新启动
Suspend-ClusterNode -Name <NodeName> -Drain之前,请始终清空角色。
代码缺陷或 bug
VM 在迁移后停滞在“正在停止”状态;实时转储分析中报告孤立的 vport。
决议
- 更新到最新的 Windows Server 累积更新。
- 如果无法升级,请请求Microsoft对修补程序的支持(如果引用了 bug)。
数据收集
标准数据收集清单:
- 事件日志:
Get-WinEvent -LogName "Microsoft-Windows-Hyper-V-VMMS/Admin". - 群集日志:
Get-ClusterLog -UseLocalTime -Destination <Path>. - Hyper-V 迁移日志:
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Worker-Admin. - 网络诊断:
Get-NetAdapter,ipconfig /all并确保所有网络路径都已启动。 - 委派和 SPN 检查:运行
setspn -L <HostName>,并检查 AD 中的 “委派 ”选项卡。 - VM 和系统配置:
Get-VM * | select Name, Version、Get-VMSwitch和Get-VMProcessor -VMName <VMName>。 - WinRM 配置:
winrm quickconfig Set-Item WSMan:\localhost\Client\TrustedHosts -Value "<Host1>,<Host2>"。 - 用于收集实时迁移跟踪的 PowerShell:
TSS.ps1 -CollectLog SHA_support-all -noBasicLog -noUpdate -NewSession - 快照或检查点链:
Get-VHDChain -Path <PathToVHD>.
常见问题快速参考表
| 症状或错误 | 可能的根本原因 | 解决方法摘要 |
|---|---|---|
| “VM 使用不支持的特定于处理器的功能...” | CPU 功能/BIOS/固件不匹配 | 启用迁移兼容性;检查主机 CPU 功能和 BIOS。 |
| VM 迁移失败,并出现版本错误。 | 配置版本不匹配 | 升级新主机上的 VM 配置版本;无法迁移回旧主机。 |
| “常规访问被拒绝错误(0x80070005),”0x8009030E/0x8009030D | SPN/delegation/Kerberos 配置错误 | 配置约束委派、注册 SPN、设置 Kerberos 和检查 AD。 |
| “服务器不支持 WS-Management 标识作...” | WinRM/proxy/trustedhosts 错误配置 | 设置 WinRM/受信任的主机、更新主机文件并绕过代理。 |
| “无法还原此虚拟机,因为保存的状态数据...” | 损坏的检查点/保存的状态文件 | 删除“已保存”状态、删除/合并检查点,并手动删除.bin/.vsv 文件。 |
| 已启用 vTPM 的 VM 失败,并出现“密钥保护程序...无法解包。 | 证书/受防护的 VM 配置 | 导出/导入密钥保护程序证书。 |
| 迁移失败 - 迁移向导中不提供共享磁盘。 | 不支持的方案 | 手动重新附加磁盘;遵循共享磁盘迁移文档。 |
| 已达到实时迁移限制;VM 在清空中输入“已保存”状态。 | 低并发设置;不当排水 | 提高迁移限制;在重新启动之前清空角色。 |
| “找不到匹配的虚拟交换机...” | 网络交换机配置不一致 | 确保所有主机上的虚拟交换机配置相同。 |
| 实时迁移事件显示更新后失败。 | 修补程序/固件/猜测设置 | 确保所有节点都已更新/修补;检查猜测控件设置。 |
| VM 永久备份,无法移入/移出“备份”状态。 | 备份软件锁 | 重启备份服务和 VMMS 服务,或打开 VM 以合并检查点。 |
确保成功 Hyper-V 实时迁移需要跨所有参与主机进行勤奋的配置管理,包括 CPU、固件、网络、身份验证、存储和权限。 按照故障排除清单,解决解决部分中概述的已知根本原因,并使用有针对性的数据收集,可以迅速解决或适当升级大多数迁移失败。 使用修补程序保持最新状态,标准化群集配置,并了解日志输出可最大程度地减少任务关键型 VM 工作负荷的停机时间和作风险。
References
- WinRM 和
TrustedHosts配置: Windows 远程管理的安装和配置 - 群集共享卷和迁移限制: 群集共享卷概述
- SCVMM VMware 到Hyper-V 转换: 将 VMware VM 转换为 VMM 构造中的 Hyper-V