排查通过 Azure Migrate 将 Hyper-V VM 迁移到 Azure 本地的问题(预览版)

适用于:Azure 本地版本 23H2

本文介绍如何排查使用 Azure Migrate 将 Hyper-V VM 迁移到 Azure 本地时可能会遇到的任何潜在问题。

重要

此功能目前处于预览状态。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

检查所需的服务是否正在运行

确保源设备 VM 和目标设备 VM 具有正常的配置,其方法是确保以下服务正在运行。

以管理员身份打开 PowerShell,并为源设备和目标设备括号中列出的每个服务运行以下命令,以验证它们是否正在运行:

Get-Service -Name <name_of_service>

在源设备 VM 上:

  • Microsoft Azure 网关服务(asrgwy
  • Microsoft Azure Hyper-V 发现服务(amhvdiscoverysvc
  • Azure Site Recovery 管理服务(asrmgmtsvc

在目标设备 VM 上:

  • Microsoft Azure 网关服务(asrgwy
  • Azure Site Recovery 管理服务(asrmgmtsvc

可在 C:\ProgramData\Microsoft Azure\Config 中找到配置数据。

收集日志和信息

如果遇到任何问题,请在开具支持票证之前收集以下信息,并与Microsoft 支持部门团队共享这些问题进行分析。

  • 来自 Azure Migrate 设备的日志
  • 问题的说明或反馈
  • 订阅 ID
  • 租户 ID
  • Azure Migrate 项目名称
  • Azure Migrate 项目区域或地理位置
  • 有关复制和迁移中问题的 VM 名称
  • 部署或作业 ID 的相关性 ID

以下部分介绍如何基于操作或问题类型收集此信息。

对于来自 Azure 门户 的用户触发的操作

若要排查用户触发的操作问题,需要相关 ID 或作业 ID。

获取部署的相关 ID

创建或删除迁移项目、创建设备项目、实体和存储帐户等操作失败,错误在迁移项目资源组的“部署”部分中显示为失败。 每个部署操作还有一个 关联 ID ,可用于故障排除。

会话中其他失败的操作显示为通知或旧历史记录中的活动日志。

按照以下步骤在 Azure 门户 中标识部署的相关 ID:

  1. 转到 Azure Migrate 项目的资源组,然后转到 “概述”。 在右窗格中,选择显示失败和成功部署的超链接。

    Azure 门户中的 Azure Migrate 项目资源组>概述的屏幕截图。

  2. 确定要为其指定相关 ID 的部署,并选择部署名称。

    Azure 门户中的 Azure Migrate 项目资源组>部署的屏幕截图。

  3. 查找相关 ID。

    Azure Migrate 项目资源组>部署>Azure 门户中的部署>概述的屏幕截图。

获取复制或迁移的作业 ID

创建和删除受保护项(也称为创建和删除复制)和计划的故障转移(也称为迁移)等操作也会在门户的 Azure 本地迁移部分中列为作业

在这些情况下, 还需要收集作业 ID

按照以下步骤获取作业 ID:

  1. 在Azure 门户的 Azure Migrate 项目中,转到“迁移工具”下的“概述”。

    Azure 门户中的 Azure Migrate 项目>迁移工具>概述的屏幕截图。

  2. 在左窗格中,转到 Azure 本地迁移 > 作业

  3. 标识要为其指定作业 ID 的作业,并选择作业名称。

    Azure Migrate 项目>迁移工具>概述 > Azure 本地迁移>作业>中的Azure 门户。

  4. 查找作业 ID

    Azure Migrate 项目>迁移工具>概述 > Azure 本地迁移>作业>:作业>在Azure 门户中创建或更新受保护的项。

对于计划的复制操作

计划操作中的失败(例如每小时复制周期失败)在门户的 Azure 本地迁移部分下列为 事件

若要排查复制问题,请收集以下信息:

  • 事件中显示的错误详细信息,包括时间、错误 ID、错误消息、VM ID。
  • 如果可能,Azure 门户的屏幕截图。

有关门户中的 UX 问题

若要排查门户中的 UX 问题,请收集以下信息:

  • 来自Azure 门户的屏幕截图。
  • 在浏览器开发人员模式下记录操作。 导出 HAR 文件并将其共享。

对于设备注册问题

若要排查设备注册问题,请收集以下信息:

  • 设备上 C:\ProgramData\MicrosoftAzure\Logs 上的所有可用日志

对于发现问题

若要排查发现问题,请收集以下信息:

  • 源设备上 C:\ProgramData\MicrosoftAzure\Logs\HyperV\Discovery 上的所有可用日志。

有关详细信息,请参阅 “发现疑难解答”。

对于特殊问题

如果需要,Microsoft 支持部门还可以请求组件事件查看器日志或系统事件日志,例如 Hyper-V 日志和 SMB 日志。

常见问题和解决方法

Azure Migrate 项目创建失败

根本原因

如果未向 Azure Migrate 注册 Azure 订阅,或者用户不具有创建项目所需的权限,则 Azure Migrate 项目创建失败。

建议的解决方案

检查下列各项:

  • 请确保在 Azure AD 租户上具有 应用程序管理员 角色。
  • 请确保在 Azure 订阅上具有 参与者用户访问管理员 角色。
  • 请确保选择 Azure Migrate 项目创建支持的区域之一。 有关支持区域的列表,请参阅 支持的地理位置

目标系统验证在设备上失败

根本原因

目标系统无法验证,因为默认情况下 FQDN 无法从设备解析 DNS。

“添加群集信息”页的屏幕截图。

建议的解决方案

通过编辑位于 C:\Windows\System32\drivers\etc\hosts 的主机文件,手动将 Azure 本地 IP 映射到其相应的 FQDN。

使用以下格式添加新行,其中包含系统 IP 和 FQDN: <群集 IP><群集 FQDN>。

从源设备配置管理器中删除或更改目标系统信息不起作用。

在源设备配置管理器中提供信息时,输入目标系统名称后无法更改。

建议的解决方法 按照以下步骤从源设备配置管理器中删除或更改目标系统:

  1. 在源设备上,打开资源管理器。 转到 C:\ProgramData\Microsoft Azure\CredStore 并删除 TargetClusterCredentials.json

  2. 重新加载设备配置管理器,并且你可以输入目标系统的新值。

注意

如果已开始复制,则不建议采用此解决方法。

仅当设备未注册的情况下才能使用此解决方法。 如果设备已注册,则必须 从项目中删除设备。 然后,你应生成新的项目密钥并重新安装设备。

目标设备注册失败

根本原因

目标设备注册失败。

建议的解决方案

刷新页面,然后再次尝试注册。

目标设备问题

根本原因

在某些情况下,你可能需要从项目中删除目标设备。 例如,如果要将设备移动到其他订阅或区域。 这将要求你删除目标设备并在新的订阅或区域中创建新设备。

建议的解决方案

要从项目中删除目标设备,请遵照以下步骤:

  1. 以管理员身份运行 PowerShell。

  2. 运行以下命令以删除设备:

    .\AzureMigrateInstaller.ps1 -RemoveAzMigrate
    

VM 复制失败

根本原因

由于以下一个或多个原因,VM 复制可能会失败:

  • 群集共享卷或存储容器已满。
  • VM 不具有高度可用性。 所有 VM 必须高度可用,才能发现复制和迁移。 如果 VM 不具有高度可用性,这些 VM 不会显示在列表中并被排除在迁移之外。

建议的解决方案

要启用复制和迁移,请确保群集共享卷或存储容器有足够的空间。

此外,要迁移非 HA VM,请遵照以下步骤:

  1. 首先需要使 VM 高度可用。 有关详细信息,请参阅使 Hyper-V VM 高度可用。
  2. 等待发现代理同步数据。

或者,转到 Azure Migrate 并选择“刷新以手动刷新服务器、数据库和 Web 应用,以帮助加快发现代理同步。

复制或迁移失败,错误值不能为 null

根本原因

复制或迁移失败,并出现以下错误消息:

值不能为 null。 参数名称: FetchingHyperVDiskPropertiesFailed.

组件无法从源 Hyper-V 主机提取磁盘属性。 如果基础群集虚拟磁盘处于脱机状态或磁盘未处于正常状态,则可能会出现这种情况。

建议的解决方案

  1. 确保群集磁盘正常运行,并验证是否可以提取磁盘属性。

  2. 在源设备上,以管理员身份运行 PowerShell。 将内容 {} 替换为实际值后,请运行以下步骤。

    $ImageMgmtService = Get-WmiObject -Class "Msvm_ImageManagementService" -Namespace "root\virtualization\v2" -ComputerName "{HyperVHostOwningTheVM}" -Credential {$CredentialsToHyperVHost}
    
    $ImageMgmtService.GetVirtualHardDiskSettingData("{DiskPathShownInTheMessage}").
    
  3. 在返回的输出中,验证属性 MaxInternalSizeParentPath XML 中 SettingData 是否合适。

已迁移 VM 上的磁盘处于脱机状态

根本原因

迁移的 Windows VM 上的磁盘可能无法联机。

迁移会创建一个新的 VHD/VHDX,这会为迁移的 VM 上的 Windows OS 生成新磁盘。 OS 将此视为新驱动器并应用 SAN 策略。 然后,OS 不会使磁盘联机,因为它被视为共享磁盘。

建议的解决方案

若要解决此问题,请选择以下选项之一:

  • 将 SAN 策略设置为 OnlineAll 已迁移的 Windows VM。 重新启动 VM。 这应该会使所有磁盘联机。 有关详细说明,请参阅如何 配置 SAN 策略以使磁盘联机

  • 在已迁移的 VM 上手动将驱动器联机。

迁移失败,无法删除快照错误

根本原因

由于以下错误,无法迁移:

错误:无法删除 ID 为 ID 的快照

系统上的 Hyper-V VM 手动操作失败并出现相同的错误,无法在此服务器上执行 VM 上的手动操作。

建议的解决方案

若要缓解此错误,请确保 VM 正常运行。

连接到源设备,并尝试执行以下步骤,确保迁移顺利。

  1. 获取错误信息中的 VM ID。

    $VmId= '146a690f-2e88-4c54-a662-c4e7da70b5e9'
    
  2. 确保 get-VM 正常工作,并从源设备返回信息。

    Get-VM -Id $VmId 
    
  3. 确保 get-VHD 正常工作并返回正确的信息。

    Get-VHD -VMId $VmId
    
  4. 如果快照创建操作失败,请确保手动创建快照在 VM 上正常工作。

    Get-VM -Id $VmId | Checkpoint-VM 
    
  5. 如果快照删除操作失败,请确保手动删除快照在 VM 上正常工作。

    Get-VMCheckpoint -Id "TemporarilyCreatedCheckpointIdGuid" | Remove-VMSnapshot
    

关闭 Hyper-V 主机上的 VM 失败

根本原因

在计划的故障转移期间,VM 通过 WMI 调用在源 Hyper-V 主机上关闭。 会看到错误 ID:1000001或错误消息:发生了内部错误。

建议的解决方案

可以通过 PowerShell 在源 Hyper-V 主机上手动关闭 VM。

# Replace Guid '146..' In below command with actual VM ID.
$Vm = Get-WmiObject -Namespace root\virtualization\v2  -Query "Select * From Msvm_ComputerSystem Where Name ='146a690f-2e88-4c54-a662-c4e7da70b5ef'"

$ShutdownIC = Get-WmiObject -Namespace root\virtualization\v2  -Query "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_ShutdownComponent"

$ShutdownIC.InitiateShutdown("TRUE", "Need to shutdown")

后续步骤

根据迁移的阶段,可能需要查看以下文章之一来排查问题: