排查实时迁移问题

本文提供有关解决实时迁移虚拟机时的问题的信息。

适用于: Windows Server
原始 KB 编号: 4558514

基本故障排除清单

  • 检查主机是否处于相同的修补级别,以及它们是否可以更新到最新的汇总。

  • 更新 BIOS、固件和第三方驱动程序。

  • 检查虚拟机是否具有最新的匹配集成服务。

  • 检查是否在每一端都已授权迁移。

  • 检查每一端使用的协议是否相同。

  • 检查聚类分析) 的 TCP 端口 6600 和 3343 (是否在两端侦听。

  • 通过运行 Compare-VM 命令检查兼容性问题。 提供 VM 和目标主机的名称。 例如:

    PowerShell

    Compare-VM -Name <vm_name> -DestinationHost <host_name>
  • 检查是否有任何组策略对象阻止迁移。 验证以下策略是否至少具有默认设置。

    • 管理员

    • NT VIRTUAL MACHINE\虚拟机

    • 作为服务登录

    • NT SERVICE\ALL SERVICES

    • NT VIRTUAL MACHINE\虚拟机

    • 打开 GPEDIT。MSC 并导航到 “计算机配置\Windows 设置\安全设置\本地策略\用户权限分配”。
      打开“创建符号链接”,检查是否列出了以下用户帐户:

  • 检查防病毒排除项。 有关详细信息,请参阅 Hyper-V 主机的建议防病毒排除项。

  • 检查 Registry.pol 文件的损坏:
    运行记事本并打开 C:\Windows\System32\GroupPolicy\Machine\Registry.pol。 该文件必须以 PReg 签名开头。

  • 将包含虚拟机文件的文件夹的权限与具有相同操作系统级别的工作主机进行比较。

接下来,从以下部分查找在实时迁移问题期间遇到的事件 ID。

事件 ID 21502

有关事件 ID 21502 的信息

交换机" style="box-sizing: inherit;outline-color: inherit;cursor: pointer;overflow-wrap: normal;background-color: rgba(0, 0, 0, 0);outline-style: initial;outline-width: 0px;font-family: docons;font-size: 1rem;speak: none;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;text-align: center;direction: ltr;-webkit-font-smoothing: antialiased;line-height: 16px;display: inline-block;width: 1px;transition: opacity 0.1s linear 0s;position: absolute;inset-inline-start: -1.875rem;transform: translateY(-50%) scale(1);inset-block-start: 0.975rem;clip: rect(1px, 1px, 1px, 1px);clip-path: inset(50%);opacity: 0;border: 0px;height: 1px;padding: 0px;overflow: hidden">

实时迁移失败,因为目标节点“Host2”上不存在 VM 使用的虚拟交换机

说明

VM 的实时迁移失败。 VM 无法实时迁移,因为目标节点“Host2”上不存在 VM 使用的虚拟交换机。

操作

虚拟交换机必须在所有节点上具有相同的名称。

如果虚拟机连接到目标节点上不存在的虚拟交换机,则实时迁移在 < 10% 时失败。

为虚拟网络指定相同的名称。 刷新虚拟机配置,使网络更改反映在群集中,然后再次尝试实时迁移。

解决方案

打开 Hyper-V 管理器 控制台,然后选择“ 虚拟交换机管理器”。 如果虚拟交换机不存在,请使用其他主机中的相同名称和设置创建或重命名它。

请确保在 VM 的设置下选择正确的虚拟交换机。

实时迁移失败,因为“移动”操作未完成。 错误代码:0x80071398

说明

VM 的实时迁移失败。

操作

右键单击 “虚拟机>信息详细信息>”“显示详细信息”。 你将看到以下信息:

“移动”操作未完成。

错误代码:0x80071398

操作失败,因为指定的群集节点不是组的所有者,或者该节点不是组的可能所有者。

“移动未完成”操作错误的屏幕截图。

0x1398 5016 ERROR_HOST_NODE_NOT_GROUP_OWNER

操作失败,因为指定的群集节点不是组的所有者,或者该节点不是组的可能所有者。

解决方案

使用管理员身份运行打开Windows PowerShell,并运行以下 cmdlet:

  • Get-clusterResource -name “Virtual Machine VM1” |Get-clusterOwnerNode

  • Get-clusterResource -name “虚拟机配置 VM1” |Get-clusterOwnerNode

所有者节点必须具有所有群集节点。

或者,打开“角色”下的“故障转移群集管理器 (FCM) ,选择虚拟机,如以下屏幕截图所示。 在底部选项卡上,选择“ 资源”,右键单击“ 虚拟机”“VM1”,选择“ 高级策略 ”选项卡。检查是否选择了所有节点。 对“虚拟机配置 VM1”执行相同操作。 请确保 VM 在所有节点上具有相同的虚拟交换机。

未能获取目标节点“Host2”的网络地址:群集网络不适用于此操作。 (0x000013AB)

说明

“VM”的实时迁移失败。

未能获取目标节点“Host2”的网络地址:群集网络不适用于此操作。 (0x000013AB) 。

操作

0x13ab 5035 ERROR_NETWORK_NOT_AVAILABLE

群集网络不适用于此操作。 winerror.h

解决方案

使用“以管理员身份运行”打开Windows PowerShell并运行以下 cmdlet:

PowerShell
Get-ClusterNetwork

Get-ClusterNetwork 命令结果的屏幕截图。

确保未配置群集网络,并且已选择 “允许在此网络上进行群集网络通信 ”。 有关详细信息,请参阅 在故障转移群集上配置网络优先级

解决方法

目前,实时跨站点迁移在 Azure Stack HCI 22H2 及更高版本中不起作用。 若要解决此问题,请使用以下解决方案之一:

  • 使用快速迁移执行跨站点迁移。

  • 将实时迁移首选网络设置为包含群集所有节点的单个子网 (延伸 VLAN) 。

实时迁移失败,错误代码 (0x8007271D)

说明

实时迁移失败, (0x8007271D) 。

操作

作为 Win32 错误代码“0x271d”

0x271d 10013 WSAEACCES

尝试以访问权限禁止的方式访问套接字。

解决方案

下面介绍如何解决此问题:

  1. 检查防火墙设置和防病毒排除。

  2. 通过运行以下 cmdlet 检查聚类分析) 的 TCP 端口 6600 和 3343 (是否在两端侦听:

    控制台

    C:\>netstat -ano | findstr /I /C:"6600"

未能创建分区:系统资源不足,无法完成请求的服务。 (0x800705AA)

说明

实时迁移在 10% 之前失败,在虚拟机联机期间快速迁移失败。

操作

目标节点中的 RAM 不足

在目标节点上,Hyper-V-Worker 事件:未能创建分区:系统资源不足,无法完成请求的服务。 (0x800705AA)

解决方案

减少分配给虚拟机的内存,或关闭目标节点上的某些虚拟机。

无法还原,出现错误  找不到指定文件的虚拟磁盘支持提供程序”。 (0xC03A0014)

说明

“VM”的实时迁移失败。

“VM”的虚拟机迁移操作在迁移目标“HYP1”失败。

“VM”合成 SCSI 控制器:无法还原,出现错误“找不到指定文件的虚拟磁盘支持提供程序”。 (0xC03A0014) 。

“VM”:附件“C:\ClusterStorage\library\SW_DVD9_NTRL_SQL_Svr_Standard_Edtn_2019Dec2019_64Bit_English_OEM_VL_X22-22109。ISO 无法打开,因为错误:“找不到指定文件的虚拟磁盘支持提供程序。” (0xC03A0014) 。

操作

需要删除 ISO。

0xc03a0014 -1069940716 ERROR_VIRTDISK_PROVIDER_NOT_FOUND

找不到指定文件的虚拟磁盘支持提供程序。

解决方案

检查 DVD 文件下的 VM 设置,确保选中“ 无” 选项,如下所示:

屏幕截图显示“媒体”区域中选择了“无”选项。

实时迁移失败,因为“测试”在迁移源“HOST3”中失败。

说明

“VM”的实时迁移失败。

“测试”的虚拟机迁移操作在迁移源“HOST3”中失败。

虚拟机管理服务未能建立与主机“host2”的虚拟机迁移的连接:无法建立连接,因为目标计算机主动拒绝连接。 (0x8007274D)

无法发送虚拟机迁移的数据:远程主机强行关闭了现有连接。 (0x80072746)

未能与主机“S1”建立连接:连接尝试失败,因为连接方在一段时间后未正确响应,或建立连接失败,因为连接的主机无法响应。 (0x8007274C)

操作

0x274d 10061 WSAECONNREFUSED

无法建立连接,因为目标计算机主动拒绝连接

0x2746 10054 WSAECONNRESET

远程主机强行关闭了现有连接。

解决方案

通过运行以下 cmdlet 检查用于聚类分析) 的 TCP 端口 6600 和 3343 (是否在两端侦听:

控制台
netstat -ano | findstr /I /C:"6600"

通过运行以下 cmdlet 检查群集网络指标:

PowerShell
Get-ClusterNetwork

有关更多信息,请参阅下面的网站:

实时迁移失败,因为目标计算机上的硬件与此虚拟机的硬件要求不兼容

说明

无法将虚拟机移动到目标计算机。 目标计算机上的硬件与此虚拟机的硬件要求不兼容。

操作

检查兼容性设置。

解决方案

下面介绍如何解决此问题:

  1. 打开 Hyper-V 管理器 控制台,然后选择“ 虚拟机>设置>处理器>兼容性 > 确定”。

    屏幕截图显示了 Hyper-V 管理器控制台中的选项。

  2. 使用“以管理员身份运行”打开Windows PowerShell并运行以下 cmdlet:

    PowerShell

     PS C:\> Set-VMProcessor TestVM -CompatibilityForMigrationEnabled $true

由于“虚拟机名称”使用主机“节点 1 上不支持的特定于处理器的功能,因此实时迁移失败。

说明

虚拟机“虚拟机名称”使用主机“节点 1”上不支持的特定于处理器的功能。

操作

若要允许将此虚拟机迁移到具有不同处理器的服务器,请修改虚拟机设置以限制虚拟机使用的处理器功能。

解决方案

下面介绍如何解决此问题:

  1. 检查是否标记了处理器兼容性。 打开 Hyper-V 管理器 控制台,选择 “虚拟机设置>处理器>兼容性”。

  2. 确保主机的 BIOS 具有相同设置。

  3. 确保 Spectre 或 Meltdown 修补程序公开 CPU 的不同功能。 有关详细信息,请参阅 保护来宾虚拟机免受 CVE-2017-5715 (分支目标注入) 

  4. 运行 Get-SpeculationControlSettings cmdlet 并检查结果。 它应该在所有节点上都相同。

实时迁移失败,因为“虚拟机名称”在迁移源“源主机名”上失败

说明

在迁移源“源主机名”中,“虚拟机名称”的虚拟机迁移操作失败

操作

虚拟机管理服务禁用了虚拟机迁移连接的侦听器。

解决方案

使用“以管理员身份运行”打开命令提示符,并运行以下 cmdlet:

控制台
gpupdate /force

如果无法成功更新计算机策略,则会收到以下错误消息:

处理组策略失败。 Windows 无法对 组策略 对象 LocalGPO 应用基于注册表的策略设置。 在解决此事件之前,不会解析组策略设置。 有关导致失败的文件名和路径的详细信息,请查看事件详细信息。

在这种情况下,请还原备份或将路径 C:\Windows\System32\ 中的 GroupPolicy 文件夹从工作服务器还原到有问题的服务器。

实时迁移失败,因为“vm1”无法初始化内存:内存不足 (0x8007000E)

说明

“Virtual Machine vm1”的实时迁移失败。

“vm1”的虚拟机迁移操作在迁移目标“S2D1”失败。

“vm1”无法初始化内存: (0x8007000E) 内存不足。

操作

性能问题。

解决方案

检查目标主机上的可用内存。

未能与主机名称建立连接:安全包中没有可用的凭据0x8009030E

说明

虚拟机迁移操作在迁移源处失败。 未能与主机名称建立连接:安全包0x8009030E中没有可用的凭据。

操作

0x8009030e -2146893042 SEC_E_NO_CREDENTIALS

安全包中没有可用的凭据。

解决方案

下面介绍如何解决此问题:

屏幕截图显示了解决此问题的步骤。

有关详细信息,请参阅 Windows Server 2016 中的通过约束委派与 Kerberos 进行实时迁移

未能与主机“DESTINATION-SERVER”建立连接:无法识别提供给包的凭据 (0x8009030D)

说明

虚拟机迁移操作在迁移源处失败。

未能与主机“DESTINATION-SERVER”建立连接:无法识别提供给包的凭据 (0x8009030D) 。

虚拟机管理服务未能在源主机上对虚拟机迁移的连接进行身份验证:没有合适的凭据可用。 请确保已在迁移的源主机上启动该操作,或者源主机配置为使用 Kerberos 对迁移连接进行身份验证,并且为 Active Directory 中的主机启用了约束委派。

操作

0x8009030d -2146893043 SEC_E_UNKNOWN_CREDENTIALS 无法识别提供给包的凭据。

解决方案

下面介绍如何解决此问题:

  1. 为两台 Hyper-V 主机上的实时迁移启用 Kerberos 身份验证。 为此,请在“身份验证协议”下选择“ Hyper-V 设置>实时迁移>高级功能>使用 Kerberos”。

  2. 按照以下步骤为两个 Hyper-V 主机设置约束委派:

    1. 打开 “Active Directory 用户和计算机”,找到 Hyper-V 主计算机帐户。 打开“ 属性 ”对话框,然后选择“ 委派 ”选项卡。

    2. 选择“ 仅信任此计算机委派到指定服务 ”和“ 使用任何身份验证协议 ”选项。

    3. 选择“ 添加”,然后选择另一台 Hyper-V 主机的计算机帐户。

    4. 添加迁移存储) 所需的 cifs (,以及迁移虚拟机) 所需的 Microsoft 虚拟系统迁移服务 (。

最长等待 15 分钟,让 Keberos 票证超时。或者运行 KLIST PURGE -li 0x3e7 cmdlet。

未能在迁移目标创建计划内虚拟机:登录失败

说明

“虚拟机 VM 名称”的实时迁移失败。

未能在迁移目标创建计划内虚拟机:登录失败:未在此计算机上向用户授予请求的登录类型。 (0x80070569)

在 Windows Server 2012 Hyper-V 主机上运行的虚拟机可能无法启动。 你可能会收到类似于以下示例的错误消息:

错误0x80070569 (“VM_NAME”无法启动工作进程:登录失败:未在此计算机上向用户授予请求的登录类型。)

操作

0x569 1385 ERROR_LOGON_TYPE_NOT_GRANTED

登录失败:未在此计算机上向用户授予请求的登录类型

此外,执行恢复检查点并尝试使用 ConvertToReferencePoint 方法将其转换为引用点时,转换可能会失败。 你可能会收到类似于以下示例的错误消息:

未能将 VHD 附件“VHDX_NAME”写入“VM_NAME”:帐户限制阻止此用户登录。 例如,不允许使用空白密码、登录时间有限或已强制实施策略限制。 (0x8007052f)

0x52f 1327 ERROR_ACCOUNT_RESTRICTION 帐户限制阻止此用户登录。 例如:不允许空白密码、登录时间有限或已强制实施策略限制。

解决方案

有关详细信息,请参阅 在基于 Windows Server 2012 的计算机上启动或实时迁移 Hyper-V 虚拟机可能会失败并出现错误0x80070569

未能为主机“HOST3”的虚拟机迁移建立连接:连接尝试失败

说明

虚拟机管理服务无法为主机“HOST3”的虚拟机迁移建立连接:连接尝试失败,因为连接方在一段时间后未正确响应,或者建立连接失败,因为连接的主机无法响应。 (0x8007274C) 。

操作

0x274c 10060 WSAETIMEDOUT

连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机无法响应而建立连接失败。

解决方案

下面介绍如何解决此问题:

  1. 检查 C:\Windows\System32\GroupPolicy\Machine 路径下 Registry.pol 的各种损坏。

  2. 在记事本中打开文件。 它必须以 PReg 签名开头。

无法实时迁移,因为目标主体名称不正确。 (0x80090322)

说明

虚拟机管理服务无法为虚拟机迁移建立与主机“HOST5”的连接:目标主体名称不正确。 (0x80090322) 。

操作

迁移是跨群集的,但根据实时迁移网络顺序,选择了专用网络。

0x80090322 -2146893022 SEC_E_WRONG_PRINCIPAL

目标主体名称不正确。

解决方案

更改跨群集的实时迁移网络顺序,并在迁移后重新更改它。

无法实时迁移,因为“VM01”的虚拟机迁移操作在迁移源“Node3”上失败

说明

“SCVMM VM01”的实时迁移失败

“VM01”的虚拟机迁移操作在迁移源“Node3”失败。

虚拟机管理服务启动了虚拟机“VM01”到目标主机“Node11”的实时迁移。

操作

NetApp 存储

无法获取文件“<\\NetApp12\vol03\V01\虚拟机\D...17.VMRS>“,错误 59! 返回缓存的写入时间。

无法从流中读取二进制格式的配置数据。

HRESULT = 0x80048054

0x3b 59 ERROR_UNEXP_NET_ERR发生意外的网络错误。

解决方案

在 上启用或禁用oplocks和租用oplocksqtree 如果在oplocks存储系统级别启用了 和 租约oplocks,请通过运行相应的 cmdlet 在个人qtree上启用或禁用oplocks和租用oplocks

  • qtree oplocks qtree_name enable

  • qtree oplocks qtree_name disable

如果 cifs.oplocks.enable 选项设置为 “开”,则 qtree oplocks 的 qtree cmdlet 将立即生效。 如果 cifs.oplocks.enable 选项设置为“关闭”,则在将选项更改为“”之前,qtree oplocks该命令才会生效。

下面介绍如何解决此问题:

  1. 将 NetApp 文件服务器替换为基于 Windows 2016 的文件服务器。 或者,将 NetApp 文件更新到最新的 Ontap 9.*。 版本。

  2. 确保使用最新的累积更新更新基于Windows Server 2016的 Hyper-V 节点。 应用 CU 2019 年 2 月 或更高版本后,类似的问题将得到解决。

迁移源“CLU8N1”的“虚拟机 VM1”实时迁移失败,错误代码80042001和 8007000D

说明

“虚拟机 VM1”的实时迁移失败。

“VM1”的虚拟机迁移操作在迁移源“CLU8N1”失败。

在 Windows 2019 (RS5) Hyper-V 群集中的节点之间运行 SMB 实时迁移时,指向特定节点的所有 VM 上都会发生故障:

“VM1”的虚拟机迁移操作在迁移源“CLU8N1”失败。

操作

筛选 VM 名称上的错误代码80042001和 8007000D,以收集源上的 VML 跟踪。

在 RS5 下,由于 HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName: ComputerName: ComputerName 不为大写,因此所有 VM 到特定节点的实时迁移在源上失败。

解决方案

确保有一个REG_SZ值 ComputerName,其名称以大写形式显示。

事件 ID 20413

说明

实时迁移在 90%~100% 时失败,在虚拟机联机配置期间快速迁移失败。

操作

群集中的节点分配了不同的系统驱动器号。

解决方案

在目标节点上,Hyper-V VMMS 事件显示以下错误消息:

虚拟机管理服务未能在“localpath>”注册虚拟机“<vmID>”<的配置:系统找不到路径。

将所有节点设置为在群集上使用相同的系统驱动程序号。

事件 ID 20417

说明

虚拟机管理服务成功完成了虚拟机“VM”的实时迁移,意外的长时间停电时间为 63.1 秒。

操作

尝试实时迁移时,消息来自性能较低的网络。

解决方案

确保有足够的带宽可用于实时迁移。

尝试在实时迁移期间减少内存。 有关详细信息,请参阅 虚拟机实时迁移概述

事件 ID 21024

说明

实时迁移和快速迁移都成功,但虚拟机在迁移后会失去网络连接。

操作

即使正确配置了网络设置,虚拟机在迁移后也会失去网络连接。

解决方案

确保虚拟机网络设置正确。

检查源虚拟网络和目标虚拟网络是否位于同一子网中。 如果 不是,请运行 ipconfig /renew cmdlet 以恢复网络连接。 或者,如果使用静态 IP 地址,请将新的 IP 地址分配给虚拟机。

事件 ID 21125

说明

目标节点上的实时迁移配置设置失败。

操作

请确保源和目标节点上的虚拟网络名称相同,然后再次尝试实时迁移。

解决方案

下面介绍如何解决此问题:

  1. 在源和目标节点上打开 Hyper-V 管理器 控制台。

  2. 选择“虚拟网络管理器”。

  3. 验证虚拟网络名称在源节点和目标节点之间是否匹配。 虚拟交换机必须具有相同的名称。

  4. 单击“确定”关闭“虚拟网络管理器”窗口。

  5. 右键单击源节点上的虚拟机,然后选择 “设置”。

  6. 验证虚拟机是否已配置为使用正确的虚拟网络。

  7. 单击“ 确定” 关闭“ 虚拟机设置” 窗口。

  8. 关闭源和目标节点上的 Hyper-V 管理器 控制台。

  9. 在源节点上打开 故障转移群集管理器 控制台。

  10. 展开“角色”,然后选择虚拟机。

  11. 在“ 操作 ”窗格中,单击“ 更多操作>刷新虚拟机配置”。

  12. 在目标节点上执行虚拟机的实时迁移。

事件 ID 21501

说明

“VM”的实时迁移失败。

“VM”的虚拟机迁移操作在迁移源“Host5”中失败。

无法对虚拟机“VM”执行迁移,因为达到虚拟机迁移限制“2”,请等待正在进行的迁移操作完成。

操作

等待完成其他实时迁移或增加同时实时迁移的数量。

解决方案

若要解决此问题,请打开 Hyper-V 管理器 控制台,单击“ Hyper-V 设置>实时迁移>同时实时迁移”。

 备注

更改此数字时,请考虑主机性能。

数据收集

下面介绍如何在联系Microsoft 支持部门之前收集信息:

  1. 在所有节点上下载 基于 TSS Windows CMD 的通用故障排除脚本工具集 ,并将其解压缩到 C:\tss_tool 文件夹中。

  2. 使用“以管理员身份运行”打开命令提示符,并将其移动到 C:\tss_tool 文件夹。

  3. 通过在源节点和目标节点上运行 cmdlet 来启动跟踪。

    控制台

    TSS rOn VML:verbose
  4. 执行问题的重现步骤,并按照说明在完成重现步骤后停止跟踪。

     备注

    收集两个节点上的跟踪。

  5. 下载 psSDP 工具以从源节点和目标节点收集日志。

  6. 解压缩文件并在两个节点上运行以下 cmdlet:

    控制台

    .\GetpsSDP.ps1 HyperV -localNodeOnly
  7. 收集所有日志。 zip 并在工作区中上传集合。