排查通过 Azure Migrate 将 VM 迁移到 Azure 本地时遇到的问题

适用于:Azure 本地 2503 及更高版本

本文介绍如何排查使用 Azure Migrate 将 Hyper-V(预览版)和 VMware VM 迁移到 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
  • 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。

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

建议的解决方案

如果在迁移过程中目标计算机验证步骤失败,请执行以下步骤来解决该问题:

  1. 手动将 Azure 本地 IP 映射到其相应的 FQDN:

    1. 编辑位于 C:\Windows\System32\drivers\etc\hosts 的 hosts 文件。

    2. 使用格式添加新行: <Cluster IP> <Cluster FQDN>

  2. 验证 FQDN 可访问性的方法是确保能从源设备成功 ping 系统 FQDN。

  3. 在每个目标群集节点上启用 WinRM(如果尚未启用)。 在每台计算机上运行以下 PowerShell 命令:

        Enable-PSRemoting -Force
    
  4. 测试远程 PowerShell 连接。 在源设备中,确保以下命令成功完成:

        Enter-PSSession -ComputerName <Cluster FQDN> -Credential $Cred
    
  5. 确认所需的端口已打开。 请参阅“先决条件”部分,确保源设备与 Azure 本地实例之间允许所有必要的端口。

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

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

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

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

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

Note

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

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

目标设备注册失败

根本原因

目标设备注册失败。

建议的解决方案

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

目标设备问题

根本原因

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

建议的解决方案

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

  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 和 Linux VM 上的磁盘可能无法联机。

迁移会创建一个新的 VHD/VHDX,这会为迁移的 VM 上的 OS 生成新磁盘。

对于 Windows VM,OS 将此视为新驱动器,并应用存储区域网络 (SAN) 策略。 然后,OS 不会使磁盘联机,因为它被视为共享磁盘。

建议的解决方案

对于 Windows VM

若要确保所有迁移的磁盘都联机,请将 SAN 策略设置为 OnlineAll

手动配置此设置,如下所示:

  1. 在迁移之前,在本地虚拟机(而不是主机服务器)上,打开提升的命令提示符。

  2. 输入 diskpart

  3. 输入 SAN。 如果未保留来宾操作系统的驱动器号,则会返回 Offline AllOffline Shared

  4. DISKPART 提示符下,输入 SAN Policy=OnlineAll。 此设置可确保将磁盘联机,并确保可以读取和写入这两个磁盘。

  5. 在迁移期间,可以验证磁盘是否已联机。

对于 Linux VM

更新 fstab 条目以在迁移之前使用永久性卷标识符。

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

根本原因

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

错误:无法删除 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")

迁移失败,错误:地址已经在使用中

根本原因

此错误通常在迁移配置为保留其静态 IP 地址的 VM 期间发生。 如果目标逻辑网络已为另一个网络接口分配了相同的 IP,迁移将失败并显示以下消息:

The moc-operator network interface service returned an error while reconciling: rpc error: code = Unknown desc = The address is already in use: Already Set

建议的解决方案

完成以下步骤:

  1. 导航到迁移的 VM 所面向的 Azure 本地逻辑网络。
  2. 验证预期 IP 地址当前是否未分配给另一个网络接口。
  3. 根据需要更新逻辑网络配置,以确保在重试迁移之前不存在 IP 冲突。

迁移失败后整理资源

根本原因

在某些情况下,迁移到 Azure 本地的迁移可能会在迁移阶段失败,例如在计划内故障转移期间,而不是在初始复制期间。 发生这种情况时,可能需要手动清理部分创建的资源,以确保将来的迁移尝试成功。

建议的解决方案

若要确定发生故障的位置,请在 Azure Migrate 门户中打开计划的故障转移作业。 使用作业详细信息来确定在 Azure 本地实例上创建 VM 之前还是之后发生失败。

如果在创建 VM 之前发生失败

红线上方列出的任务失败情况(准备受保护的实体任务上方)表明未创建任何目标 VM。 无需清理,可以直接重试迁移。

计划故障转移页面在创建之前的屏幕截图。

如果在创建 VM 期间或之后发生故障

红线下面列出的任务失败(包括准备受保护的实体任务及其以下任务)表示目标 VM 已部分或全部创建。 在重试迁移之前,需要手动清理。

创建后计划的故障转移页的屏幕截图。

  1. 在 Azure 门户中,导航到目标 Azure 本地实例。

  2. 找到并验证是否存在与迁移失败对应的 VM。

  3. 如果找到,请从门户中删除 VM。

    显示所选虚拟机的“删除”按钮的屏幕截图。

  4. 直接连接到 Azure 本地实例(通过 Hyper-V 管理器),并确认关联 VM 也已从本地 Hyper-V 主机中删除。 如果未删除,请手动删除 VM 资源。

  5. 请勿删除可能已创建的任何以下资源:

    • 迁移的(目标)磁盘。

    • 种子磁盘。

    • 网络接口。

    在后续迁移尝试期间,Azure Migrate 会自动重复使用这些资源。

迁移的 VM 数据磁盘在 Azure 门户中显示为 1GB

迁移附加了一个或多个数据磁盘的 VM 时,Azure 门户可能会错误地将总数据磁盘大小显示为 1 GB

根本原因

这只是显示问题,不会影响 VM 数据磁盘的实际功能或大小。

建议的解决方案

若要更正 Azure 门户中的显示问题并反映真正的数据磁盘大小,请按照 “展开数据磁盘 ”中的步骤重新应用与当前数据磁盘相同的大小(无需实际增加大小)。

这会触发门户刷新并更新 UX 以反映正确的数据磁盘大小。

后续步骤

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