Compartir a través de

排查 Azure 到 Azure VM 复制错误 - 保护错误

本文介绍如何排查在 Azure Site Recovery 中将 Azure 虚拟机 (VM) 从一个区域复制和恢复到另一个区域期间出现的常见错误。 有关支持的配置的详细信息,请参阅 support matrix for replicating Azure VMs(复制 Azure VM 的支持矩阵)。

有多个磁盘可用于保护(错误代码 153039)

可能的原因

  • 最近在保护后将一个或多个磁盘添加到虚拟机。
  • 在保护虚拟机之后初始化了一个或多个磁盘。

解决方法

若要使 VM 的复制状态再次恢复正常,可以选择保护磁盘或消除警告。

保护磁盘

  1. 转到“复制的项” VM 名称 >“磁盘”。

  2. 选择未受保护的磁盘,然后选择“启用复制”:

    在 VM 磁盘上启用复制。

消除警告

  1. 转到“复制的项” VM 名称。

  2. 选择“概述”部分选择警告,然后选择“确定”。

    消除新磁盘警告。

无法选择 VM 进行保护

可能的原因

虚拟机安装的扩展处于失败或无响应状态

解决方法

转到“虚拟机”“设置”>“扩展”,并检查是否有任何扩展处于失败状态。 卸载所有失败的扩展,然后重试保护虚拟机。

当 GRUB 使用设备名称时未启用保护(错误代码 151126)

可能的原因

Linux Grand Unified Bootloader (GRUB) 配置文件(“/boot/grub/menu.lst”、“/boot/grub/grub.cfg”、“/boot/grub2/grub.cfg”或“/etc/default/grub”)可能为 参数指定了实际设备名而非全局唯一标识符 (UUID) 值。 Site Recovery 需要 UUID,因为设备名称可能会更改。 重启后,VM 在故障转移时可能不会使用相同的名称,从而导致出现问题。

以下示例摘自 GRUB 文件的代码行,其中显示了设备名称而不是所需的 UUID:

  • 文件 /boot/grub2/grub.cfg

    linux /boot/vmlinuz-3.12.49-11-default root=/dev/sda2 ${extra_cmdline} resume=/dev/sda1 splash=silent quiet showopts

  • 文件: /boot/grub/menu.lst

    kernel /boot/vmlinuz-3.0.101-63-default root=/dev/sda2 resume=/dev/sda1 splash=silent crashkernel=256M-:128M showopts vga=0x314

解决方法

将每个设备名称替换为相应的 UUID:

  1. 执行 blkid <device name> 命令来查找设备的 UUID。 例如:

    blkid /dev/sda1
    /dev/sda1: UUID="6f614b44-433b-431b-9ca1-4dd2f6f74f6b" TYPE="swap"
    blkid /dev/sda2
    /dev/sda2: UUID="62927e85-f7ba-40bc-9993-cc1feeb191e4" TYPE="ext3"
    
  2. 请将设备名称替换为其 UUID,采用 root=UUID=<UUID>resume=UUID=<UUID> 格式。 例如,在替换后,/boot/grub/menu.lst 中的行将如以下行所示:

    kernel /boot/vmlinuz-3.0.101-63-default root=UUID=62927e85-f7ba-40bc-9993-cc1feeb191e4 resume=UUID=6f614b44-433b-431b-9ca1-4dd2f6f74f6b splash=silent crashkernel=256M-:128M showopts vga=0x314

  3. 重试保护。

由于不存在 GRUB 设备,保护失败(错误代码 151124)

可能的原因

GRUB 配置文件(/boot/grub/menu.lst、/boot/grub/grub.cfg、/boot/grub2/grub.cfg 或 /etc/default/grub)可能包含参数 。 这些参数指定了在启动时要发现的逻辑卷管理器 (LVM) 设备。 如果这些 LVM 设备不存在,则受保护的系统本身不会启动,而是停滞在启动过程。 故障转移 VM 上也会出现相同的问题。 以下是几个示例:

  • RHEL7 上的 /boot/grub2/grub.cfg 文件:

    linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/rhel_mup--rhel7u6-root ro crashkernel=128M\@64M rd.lvm.lv=rootvg/root rd.lvm.lv=rootvg/swap rhgb quiet LANG=en_US.UTF-8

  • RHEL7 上的 /etc/default/grub 文件:

    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rootvg/root rd.lvm.lv=rootvg/swap rhgb quiet

  • RHEL6 上的 /boot/grub/menu.lst 文件:

    kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=36dd8b45-e90d-40d6-81ac-ad0d0725d69e rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=rootvg/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=rootvg/lv_swap rd_NO_DM rhgb quiet

在每个示例中,GRUB 都必须检测卷组 root 中名为 swaprootvg 的两个 LVM 设备。

解决方法

如果 LVM 设备不存在,请创建该设备,或者从 GRUB 配置文件中删除该设备对应的参数。 然后重试启用保护。

如果存在副本托管磁盘,则不会启用保护

当副本托管磁盘已存在,但目标资源组中不包含预期的标记时,会发生此错误。

可能的原因

如果虚拟机过去受保护,但禁用复制时未删除副本磁盘,则可能会出现此问题。

解决方法

删除错误消息中指出的副本磁盘,然后重试失败的保护作业。

启动保护失败,因为安装程序无法找到根磁盘(错误代码 151137)

对于使用 Azure 磁盘加密 (ADE) 对 OS 磁盘进行加密的 Linux 计算机,会发生此错误。 这只是代理版本 9.35 中的有效问题。

可能的原因

安装程序无法找到托管根文件系统的根磁盘。

解决方法

请执行以下步骤来修复此问题。

  1. 使用以下命令在 RHEL 计算机上的目录 /var/lib/waagent 下查找代理位

    # find /var/lib/ -name Micro\*.gz

    预期输出:

    /var/lib/waagent/Microsoft.Azure.RecoveryServices.SiteRecovery.LinuxRHEL7-1.0.0.9139/UnifiedAgent/Microsoft-ASR_UA_9.35.0.0_RHEL7-64_GA_30Jun2020_release.tar.gz

  2. 创建一个新目录,并将目录更改为此新目录。

  3. 使用以下命令提取在第一步中找到的代理文件:

    tar -xf <Tar Ball File>

  4. 打开文件 prereq_check_installer.json 并删除以下行。 在此之后保存该文件。

       {
          "CheckName": "SystemDiskAvailable",
          "CheckType": "MobilityService"
       },
    
  5. 使用以下命令调用安装程序:

    ./install -d /usr/local/ASR -r MS -q -v Azure

  6. 如果安装程序成功,请重试“启用复制”作业。

后续步骤

将 Azure VM 复制到另一个 Azure 区域