排查 Azure 到 Azure VM 复制错误
本文介绍如何排查在 Azure Site Recovery 中将 Azure 虚拟机 (VM) 从一个区域复制和恢复到另一个区域期间出现的常见错误。 有关支持的配置的详细信息,请参阅 support matrix for replicating Azure VMs(复制 Azure VM 的支持矩阵)。
Azure 资源配额问题(错误代码 150097)
确保启用订阅,以在计划用作灾难恢复 (DR) 区域的目标区域中创建 Azure VM。 你的订阅需要有足够的配额来创建所需大小的 VM。 默认情况下,Site Recovery 会选择与源 VM 大小相同的目标 VM 大小。 如果匹配的大小不可用,Site Recovery 会自动选择最接近的可用大小。
如果没有任何大小可支持源 VM 配置,将显示以下消息:
Replication couldn't be enabled for the virtual machine <VmName>.
可能的原因
- 你的订阅 ID 未启用,因此无法在目标区域位置创建任何 VM。
- 你的订阅 ID 未启用或没有足够的配额,因此无法在目标区域位置创建特定大小的 VM。
- 对于目标区域位置中的订阅 ID,找不到与源 VM 网络接口卡 (NIC) 计数 (2) 匹配的适当目标 VM 大小。
解决问题
联系 Azure 计费支持启用订阅,以便在目标位置中创建所需大小的 VM。 然后重试失败的操作。
如果目标位置存在容量约束,请禁用到该位置的复制。 然后在订阅具有足够配额的其他位置启用复制,以创建所需大小的 VM。
受信任的根证书(错误代码 151066)
如果 VM 上不存在所有最新的受信任根证书,则为 Site Recovery 启用复制的作业可能会失败。 如果没有这些证书,VM 发出的 Site Recovery 服务调用的身份验证和授权会失败。
如果“启用复制”作业失败,将显示以下消息:
Site Recovery configuration failed.
可能的原因
虚拟机上不存在用于授权和身份验证的必需受信根证书。
解决问题
Windows
对于运行 Windows 操作系统的 VM,请安装最新的 Windows 更新,以便所有受信任的根证书均存在于 VM 上。 按照组织中典型的 Windows 更新管理或证书更新管理过程进行操作,在 VM 上获取最新的根证书和更新的证书吊销列表。
- 在断开连接的环境中,请按照组织中的标准 Windows 更新过程执行操作并获取证书。
- 如果 VM 上不存在所需证书,则对 Site Recovery 服务的调用会因安全原因而失败。
要验证问题是否已解决,请在 VM 中使用浏览器转到 login.chinacloudapi.cn
。
有关详细信息,请参阅配置受信任根和不允许的证书。
Linux
按照 Linux 操作系统版本分发商提供的指导,在 VM 上获取最新的受信任根证书和最新的证书吊销列表。
由于 SUSE Linux 使用符号链接,若要维护证书列表,请按照以下步骤进行操作:
以 root 用户身份登录。 哈希符号 (
#
) 是默认的命令提示符。若要更改目录,请运行以下命令:
cd /etc/ssl/certs
检查 Symantec 根 CA 证书是否存在:
ls VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem
如果未找到 Symantec 根 CA 证书,请运行以下命令来下载该文件。 检查是否有任何错误,对于网络故障执行建议的操作。
wget https://docs.broadcom.com/docs-and-downloads/content/dam/symantec/docs/other-resources/verisign-class-3-public-primary-certification-authority-g5-en.pem -O VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem
检查 Baltimore 根 CA 证书是否存在:
ls Baltimore_CyberTrust_Root.pem
如果未找到 Baltimore 根 CA 证书,请运行以下命令来下载该证书:
wget https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem -O Baltimore_CyberTrust_Root.pem
检查 DigiCert_Global_Root_CA 证书是否存在:
ls DigiCert_Global_Root_CA.pem
如果未找到 DigiCert_Global_Root_CA,请运行以下命令来下载该证书:
wget http://www.digicert.com/CACerts/DigiCertGlobalRootCA.crt openssl x509 -in DigiCertGlobalRootCA.crt -inform der -outform pem -out DigiCert_Global_Root_CA.pem
若要为新下载的证书更新证书使用者哈希,请运行 rehash 脚本:
c_rehash
若要检查是否为证书创建了使用者哈希作为符号链接,请运行以下命令:
ls -l | grep Baltimore
lrwxrwxrwx 1 root root 29 Jan 8 09:48 3ad48a91.0 -> Baltimore_CyberTrust_Root.pem -rw-r--r-- 1 root root 1303 Jun 5 2014 Baltimore_CyberTrust_Root.pem
ls -l | grep VeriSign_Class_3_Public_Primary_Certification_Authority_G5
-rw-r--r-- 1 root root 1774 Jun 5 2014 VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem lrwxrwxrwx 1 root root 62 Jan 8 09:48 facacbc6.0 -> VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem
ls -l | grep DigiCert_Global_Root
lrwxrwxrwx 1 root root 27 Jan 8 09:48 399e7759.0 -> DigiCert_Global_Root_CA.pem -rw-r--r-- 1 root root 1380 Jun 5 2014 DigiCert_Global_Root_CA.pem
使用文件名 b204d74a.0 创建文件 VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem 的副本 :
cp VeriSign_Class_3_Public_Primary_Certification_Authority_G5.pem b204d74a.0
使用文件名 653b494a.0 创建文件 Baltimore_CyberTrust_Root.pem 的副本 :
cp Baltimore_CyberTrust_Root.pem 653b494a.0
使用文件名 3513523f.0 创建文件 DigiCert_Global_Root_CA.pem 的副本 :
cp DigiCert_Global_Root_CA.pem 3513523f.0
检查这些文件是否存在:
ls -l 653b494a.0 b204d74a.0 3513523f.0
-rw-r--r-- 1 root root 1774 Jan 8 09:52 3513523f.0 -rw-r--r-- 1 root root 1303 Jan 8 09:52 653b494a.0 -rw-r--r-- 1 root root 1774 Jan 8 09:52 b204d74a.0
出站 URL 或 IP 范围(错误代码 151037 或 151072)
要使 Site Recovery 复制正常工作,需要从 VM 到特定 URL 的出站连接。 如果 VM 位于防火墙后或使用网络安全组 (NSG) 规则来控制出站连接,则可能会遇到以下问题之一。 虽然我们继续支持通过 URL 进行出站访问,但不再支持使用 IP 范围的允许列表。
可能的原因
- 由于域名系统 (DNS) 解析失败,无法建立到 Site Recovery 终结点的连接。
- 在重新保护期间,当你对虚拟机进行故障转移但无法从灾难恢复 (DR) 区域访问 DNS 服务器时,此问题较为常见。
解决问题
如果使用的是自定义 DNS,请确保可以从灾难恢复区域访问 DNS 服务器。
若要检查 VM 是否使用自定义 DNS 设置,请执行以下操作:
- 打开“虚拟机”并选择 VM。
- 导航到 VM 的“设置”并选择“网络”。
- 在“虚拟网络/子网”中,选择相应链接以打开虚拟网络的资源页。
- 转到“设置”,然后选择“DNS 服务器” 。
尝试从虚拟机访问 DNS 服务器。 如果 DNS 服务器无法访问,请通过对 DNS 服务器进行故障转移或创建 DR 网络与 DNS 之间站点的行来使其可访问。
注意
如果使用专用终结点,请确保 VM 可解析专用 DNS 记录。
问题 2:Site Recovery 配置失败 (151196)
可能的原因
无法建立到 Office 365 身份验证和标识 IP4 终结点的连接。
解决问题
Azure Site Recovery 需要具有对 Office 365 IP 范围的访问权限才能进行身份验证。 如果使用 Azure 网络安全组 (NSG) 规则/防火墙代理控制 VM 的出站网络连接,请确保使用基于 Microsoft Entra 服务标记的 NSG 规则来允许访问 Microsoft Entra ID。 我们不再支持基于 IP 地址的 NSG 规则。
问题 3:Site Recovery 配置失败 (151197)
可能的原因
无法建立到 Azure Site Recovery 服务终结点的连接。
解决问题
如果使用 Azure 网络安全组 (NSG) 规则/防火墙代理来控制 VM 的出站网络连接,请确保使用服务标记。 我们不再支持通过 NSG 对 Azure Site Recovery 使用 IP 地址的允许列表。
问题 4:当网络流量使用本地代理服务器时复制失败 (151072)
可能的原因
自定义代理设置无效,并且移动服务代理未在 Internet Explorer 中自动检测到代理设置。
解决问题
出行服务代理通过 Windows 上的 Internet Explorer 和 Linux 上的
/etc/environment
检测代理设置。如果只想对移动服务设置代理,可在位于以下路径的 ProxyInfo.conf 中提供代理详细信息:
- Linux:
/usr/local/InMage/config/
- Windows:
C:\ProgramData\21Vianet Azure Site Recovery\Config
- Linux:
ProxyInfo.conf 应包含采用以下 INI 格式的代理设置。
[proxy] Address=http://1.2.3.4 Port=567
注意
移动服务代理仅支持不进行身份验证的代理。
详细信息
若要指定所需的 URL 或所需的 IP 范围,请遵循关于 Azure 到 Azure 复制中的网络中的指导。
在 VM 中找不到磁盘(错误代码 150039)
必须对附加到 VM 的新磁盘进行初始化。 如果找不到该磁盘,将显示以下消息:
Azure data disk <DiskName> <DiskURI> with logical unit number <LUN> <LUNValue> was not mapped to a corresponding disk being reported from within the VM that has the same LUN value.
可能的原因
- 新的数据磁盘已附加到 VM,但未初始化。
- VM 中的数据磁盘未正确报告附加到 VM 的磁盘的逻辑单元号 (LUN) 值。
解决问题
确保数据磁盘已初始化,然后重试该操作。
- Linux:在 Linux 中初始化新的数据磁盘。
如果问题仍然存在,请联系支持部门。
有多个磁盘可用于保护(错误代码 153039)
可能的原因
- 最近在保护后将一个或多个磁盘添加到虚拟机。
- 在保护虚拟机之后初始化了一个或多个磁盘。
解决问题
若要使 VM 的复制状态再次恢复正常,可以选择保护磁盘或消除警告。
保护磁盘
转到“复制的项”> VM 名称 >“磁盘”。
选择未受保护的磁盘,然后选择“启用复制”:
消除警告
转到“复制的项”> VM 名称。
选择“概述”部分选择警告,然后选择“确定”。
从保管库中删除 VM 的操作已完成,但出现提示信息(错误代码 150225)
在保护虚拟机时,Site Recovery 会在源虚拟机上创建链接。 去除保护或禁用复制时,Site Recovery 会在完成清理作业的过程中删除这些链接。 如果虚拟机存在资源锁,清理作业将会完成但会显示一些信息。 该信息指出,虚拟机已从恢复服务保管库中删除,但某些过期链接无法从源计算机中清理。
如果你今后不打算再次保护此虚拟机,可以忽略此警告。 但是,如果你今后需要保护此虚拟机,请按照本部分中的步骤清理这些链接。
警告
如果不执行清理:
- 通过恢复服务保管库启用复制时,不会列出虚拟机。
- 如果尝试使用“虚拟机”>“设置”>“灾难恢复”来保护 VM,该操作会失败并出现消息“无法启用复制,因为 VM 上存在过期的资源链接”。
解决问题
注意
在执行以下步骤时,Site Recovery 不会删除源虚拟机或以任何方式影响它。
删除 VM 或 VM 资源组的锁。 例如,在下图中,必须删除名为
MoveDemo
的 VM 上的资源锁:下载用于删除过时的 Site Recovery 配置的脚本。
运行脚本 Cleanup-stale-asr-config-Azure-VM.ps1。 提供订阅 ID、VM 资源组和 VM 名称作为参数。
如果系统提示你提供 Azure 凭据,请提供这些凭据。 然后验证该脚本是否正常运行,而不会出现任何失败。
未在具有陈旧资源的 VM 上启用复制(错误代码 150226)
可能的原因
虚拟机上存在以前的 Site Recovery 保护中使用的过时配置。
如果你使用 Site Recovery 为 Azure VM 启用了复制,然后执行了以下操作,则 Azure VM 上可能会出现过时的配置:
- 禁用了复制,但源 VM 存在资源锁。
- 在未显式禁用 VM 上的复制的情况下删除了 Site Recovery 保管库。
- 在未显式禁用 VM 上的复制的情况下删除了包含 Site Recovery 保管库的资源组。
解决问题
注意
在执行以下步骤时,Site Recovery 不会删除源虚拟机或以任何方式影响它。
删除 VM 或 VM 资源组的锁。 例如,在下图中,必须删除名为
MoveDemo
的 VM 上的资源锁:下载用于删除过时的 Site Recovery 配置的脚本。
运行脚本 Cleanup-stale-asr-config-Azure-VM.ps1。 提供订阅 ID、VM 资源组和 VM 名称作为参数。
如果系统提示你提供 Azure 凭据,请提供这些凭据。 然后验证该脚本是否正常运行,而不会出现任何失败。
无法在“启用复制”作业中选择 VM 或资源组
问题 1:资源组和源 VM 位于不同的位置
Site Recovery 当前要求源区域资源组和虚拟机应位于同一位置。 否则,在尝试应用保护时将无法找到虚拟机或资源组。
一种解决方法是,从 VM 而不是从恢复服务保管库启用复制。 转到“源 VM”>“属性”>“灾难恢复”并启用复制。
问题 2:资源组不是所选订阅的一部分
如果资源组不是给定订阅的一部分,则可能无法在保护时找到该资源组。 确保该资源组属于正在使用的订阅。
问题 3:过时的配置
如果 Azure VM 上存在过时的 Site Recovery 配置,你可能看不到要为其启用复制的 VM。 如果你使用 Site Recovery 为 Azure VM 启用了复制,然后执行了以下操作,则可能会出现这种情况:
- 在未显式禁用 VM 上的复制的情况下删除了 Site Recovery 保管库。
- 在未显式禁用 VM 上的复制的情况下删除了包含 Site Recovery 保管库的资源组。
- 禁用了复制,但源 VM 存在资源锁。
解决问题
注意
请确保在使用本部分所述的脚本之前更新 AzureRM.Resources
模块。 在执行以下步骤时,Site Recovery 不会删除源虚拟机或以任何方式影响它。
删除 VM 或 VM 资源组中的锁(如果有)。 例如,在下图中,必须删除名为
MoveDemo
的 VM 上的资源锁:下载用于删除过时的 Site Recovery 配置的脚本。
运行脚本 Cleanup-stale-asr-config-Azure-VM.ps1。 提供订阅 ID、VM 资源组和 VM 名称作为参数。
如果系统提示你提供 Azure 凭据,请提供这些凭据。 然后验证该脚本是否正常运行,而不会出现任何失败。
无法选择 VM 进行保护
可能的原因
虚拟机安装的扩展处于失败或无响应状态
解决问题
转到“虚拟机”>“设置”>“扩展”,并检查是否有任何扩展处于失败状态。 卸载所有失败的扩展,然后重试保护虚拟机。
VM 预配状态无效(错误代码 150019)
若要在 VM 上启用复制,预配状态必须是“成功”。 执行以下步骤来检查预配状态:
- 在 Azure 门户中,从“所有服务”中选择“资源浏览器”。
- 展开“订阅”列表并选择你的订阅。
- 展开“资源组”并选择 VM 的资源组。
- 展开“资源”列表并选择你的 VM。
- 在右侧的实例视图中检查“预配状态”字段。
解决问题
- 如果“预配状态”为“失败”,请联系支持人员并提供详细信息以排除故障。
- 如果“预配状态”为“正在更新”,则可能是正在部署另一扩展。 检查 VM 上是否有任何正在进行的操作,等待它们完成,然后重试失败的 Site Recovery 作业来启用复制。
无法选择目标 VM
问题 1:VM 附加到了已映射至目标网络的网络
在配置灾难恢复期间,如果源 VM 在某个虚拟网络中,并且同一虚拟网络中的另一个 VM 已映射到目标资源组中的某个网络,则网络选择下拉列表框默认将不可用(灰显)。
问题 2:你之前已保护了 VM,然后禁用了复制
禁用 VM 复制不会删除网络映射。 必须从保护 VM 的恢复服务保管库中删除映射。 选择“恢复服务保管库”,然后转到“管理”>“Site Recovery 基础结构”>“针对 Azure 虚拟机”>“网络映射”。
可以在完成初始设置并保护 VM 之后更改在灾难恢复设置期间配置的目标网络。 若要修改网络映射,请选择网络名称:
COM+ 或 VSS(错误代码 151025)
发生 COM+ 或卷影复制服务 (VSS) 错误时,将显示以下消息:
Site Recovery extension failed to install.
可能的原因
- 禁用了 COM+ 系统应用程序服务。
- 禁用了卷影复制服务。
解决问题
将 COM+ 系统应用程序和卷影复制服务设置为自动或手动启动模式。
在 Windows 中打开“服务”控制台。
确保 COM+ 系统应用程序和卷影复制服务的“启动类型”未设置为“已禁用”。
不支持的托管磁盘大小(错误代码 150172)
发生此错误时,将显示以下消息:
Protection couldn't be enabled for the virtual machine as it has <DiskName> with size <DiskSize> that is lesser than the minimum supported size 1024 MB.
可能的原因
磁盘小于支持的大小 (1024 MB)。
解决问题
确保磁盘大小在支持的大小范围内,然后重试该操作。
当 GRUB 使用设备名称时未启用保护(错误代码 151126)
可能的原因
Linux Grand Unified Bootloader (GRUB) 配置文件(“/boot/grub/menu.lst”、“/boot/grub/grub.cfg”、“/boot/grub2/grub.cfg”或“/etc/default/grub”)可能为 root
和 resume
参数指定了实际设备名而非全局唯一标识符 (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:
执行
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"
请将设备名称替换为其 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
重试保护。
由于不存在 GRUB 设备,保护失败(错误代码 151124)
可能的原因
GRUB 配置文件(/boot/grub/menu.lst、/boot/grub/grub.cfg、/boot/grub2/grub.cfg 或 /etc/default/grub)可能包含参数 rd.lvm.lv
或 rd_LVM_LV
。 这些参数指定了在启动时要发现的逻辑卷管理器 (LVM) 设备。 如果这些 LVM 设备不存在,则受保护的系统本身不会启动,而是停滞在启动过程。 故障转移 VM 上也会出现相同的问题。 以下是几个示例:
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 都必须检测卷组 rootvg
中名为 root
和 swap
的两个 LVM 设备。
解决问题
如果 LVM 设备不存在,请创建该设备,或者从 GRUB 配置文件中删除该设备对应的参数。 然后重试启用保护。
移动服务更新已完成但出现警告(错误代码 151083)
Site Recovery 移动服务有多个组件,其中一个称为筛选器驱动程序。 筛选器驱动程序只有在系统重启期间才会加载到系统内存中。 每当移动服务更新涉及到筛选器驱动程序的更改时,计算机才会更新,但仍会出现警告,指出某些修复措施需要重启。 之所以出现该警告,是因为仅当已加载新的筛选器驱动程序(只会在重启期间发生)时,筛选器驱动程序修复措施才会生效。
注意
这只是一条警告。 即使在新代理更新后,现有的复制也能继续正常工作。 可以选择每当需要获得新筛选器驱动程序的优势时才重启,但如果不重启,旧的筛选器驱动程序也能保持正常工作。
除了筛选器驱动程序以外,无需重启,移动服务更新中其他任何增强和修复的优势也能生效。
如果存在副本托管磁盘,则不会启用保护
当副本托管磁盘已存在,但目标资源组中不包含预期的标记时,会发生此错误。
可能的原因
如果虚拟机过去受保护,但禁用复制时未删除副本磁盘,则可能会出现此问题。
解决问题
删除错误消息中指出的副本磁盘,然后重试失败的保护作业。
启动保护失败,因为安装程序无法找到根磁盘(错误代码 151137)
对于使用 Azure 磁盘加密 (ADE) 对 OS 磁盘进行加密的 Linux 计算机,会发生此错误。 这只是代理版本 9.35 中的有效问题。
可能的原因
安装程序无法找到托管根文件系统的根磁盘。
解决问题
请执行以下步骤来修复此问题。
使用以下命令在 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
创建一个新目录,并将目录更改为此新目录。
使用以下命令提取在第一步中找到的代理文件:
tar -xf <Tar Ball File>
打开文件 prereq_check_installer.json 并删除以下行。 在此之后保存该文件。
{ "CheckName": "SystemDiskAvailable", "CheckType": "MobilityService" },
使用以下命令调用安装程序:
./install -d /usr/local/ASR -r MS -q -v Azure
如果安装程序成功,请重试“启用复制”作业。
排查和处理复制服务器上的时间更改
当源计算机的时间向前移动,然后在短时间内返回以更正此更改时,会发生此错误。 你可能不会注意到此更改,因为时间更正很快。
如何修复:若要解决此问题,请等到系统时间与扭曲的未来时间相交。 另一个选项是再次禁用和启用复制,这仅适用于转发复制(将数据从主要区域复制到次要区域),不适用于反向复制(将数据从次要区域复制到主要区域)。