通过 Hydration 为 Azure 配置本地磁盘

在故障转移之前,必须对 VM 的配置进行一些更改,以确保已迁移的 VM 在 Azure 上正常运行。 Azure Site Recovery 通过 冻结 过程处理这些配置更改。 水合过程仅适用于 Azure Site Recovery 支持的操作系统版本。 在故障转移之前,您可能需要手动执行针对未在上面列出的其他操作系统版本的所需更改。 如果在没有进行所需更改的情况下迁移 VM,VM 可能无法启动,或者你可能无法连接到迁移后的 VM。 下图显示了 Azure Site Recovery 执行冻结过程。

当用户触发 测试故障转移故障转移时,Azure Site Recovery 会执行冻结过程来准备要故障转移到 Azure 的本地 VM。 若要设置冻结过程,Azure Site Recovery 会创建一个临时 Azure VM,并附加源 VM 的磁盘以执行更改,使源 VM 为 Azure 做好准备。 临时 Azure VM 是在创建最终迁移 VM 之前在故障转移过程中创建的中间 VM。 Azure Migrate 将使用某个市场 OS 映像创建具有类似 OS 类型 (Windows/Linux) 的临时 VM。 如果本地 VM 运行 Windows,则本地 VM 的操作系统磁盘将作为数据磁盘附加到临时 VM,以执行更改。 如果是 Linux 服务器,则附加到本地 VM 的所有磁盘都将作为数据磁盘附加到临时 Azure VM。

有关冻结 VM SKU 选择的详细信息,请参阅 临时 VM(Hydration VM)的 SKU 选择

Azure Site Recovery 将创建网络接口、新的虚拟网络、子网和网络安全组(NSG)来托管临时 VM。 这些资源在客户的订阅中创建。 如果存在冲突的策略阻止创建网络项目,Azure Site Recovery 将尝试在作为复制目标设置选项的一部分提供的虚拟网络和子网中创建临时 Azure VM。

虚拟网络必须具有对目标区域存储服务标记的出站访问权限。 有关详细信息,请参阅 可用服务标记

创建虚拟机后,Azure Site Recovery 将使用 Azure 虚拟机 REST API 在临时 VM 上调用 自定义脚本扩展 。 自定义脚本扩展实用工具将在附加到临时 Azure VM 的本地 VM 磁盘上执行准备脚本,该脚本包含 Azure 就绪所需的配置。 准备脚本是从 Azure Site Recovery 拥有的存储帐户下载的。 虚拟网络的网络安全组规则将配置为允许临时 Azure VM 访问用于调用脚本的 Azure Site Recovery 存储帐户。

注释

冻结 VM 磁盘不支持客户管理的密钥 (CMK)。 平台管理的密钥 (PMK) 是默认选项。

在混合过程中执行的更改

准备脚本根据要迁移的源 VM 的 OS 类型执行以下更改。 还可以使用本部分作为指南,为不支持系统配置的操作系统版本手动准备 VM 以进行故障切换。

  1. 发现并准备 Windows OS 卷区

    在执行相关配置更改之前,准备好的脚本将验证选择的 OS 磁盘是否适合故障转移。 准备脚本将查看系统可见的所有附加卷,并在 SYSTEM 注册表配置单元文件路径中查找源 OS 卷。

    此步骤将执行以下操作:

    • 在附加到临时 VM 的 OS 磁盘上装载每个分区。

    • 装载分区后查找 \Windows\System32\Config\System 注册表文件。

    • 如果找不到这些文件,则卸载该分区,并继续搜索正确的分区。

    • 如果这些文件不在任何分区上,则可能表示选择了错误的 OS 磁盘,或者 OS 磁盘已损坏。 Azure Site Recovery 将在故障转移过程中失败,并出现相应的错误。

    注释

    如果您是手动准备服务器以进行故障转移,则不需要此步骤。

  2. 进行启动和连接相关的更改

    检测到源 OS 卷文件后,准备脚本会将 SYSTEM 注册表配置单元加载到临时 Azure VM 的注册表编辑器中,并执行以下更改以确保 VM 正常启动和连接。 如果 OS 版本不支持混合,则需要手动配置这些设置。

    1. 验证是否存在所需的驱动程序

      确保所需的驱动程序已安装并设置为在引导启动时加载。 这些 Windows 驱动程序允许服务器与硬件和其他连接设备进行通信。

      • IntelIde.sys
      • Atapi
      • Storflt
      • Storvsc
      • VMbus
    2. 将存储区域网络 (SAN) 策略设置为“全部联机”。

      此操作可确保 Azure VM 中的 Windows 卷使用的驱动器号分配与本地 VM 相同。 默认情况下,将为 Azure VM 分配驱动器 D: 用作临时存储。 这种驱动器分配会导致所有其他附加存储驱动器分配递增一个字母。 若要避免这种自动分配,并确保 Azure 将下一个可用驱动器号分配给其临时卷,请将存储区域网络 (SAN) 策略设置为“全部联机”。

      若要手动配置此设置,请执行以下操作:

      • 在本地服务器上,使用提升的权限打开命令提示符并输入 diskpart

        显示手动配置的屏幕截图。

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

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

        显示管理员命令提示符 diskpart 联机策略的屏幕截图。

  3. 设置 DHCP 启动类型

    准备脚本还会将 DHCP 服务启动类型设置为自动。 这将使迁移的 VM 能够获取 IP 地址,并在故障转移后建立连接。 请确保配置了 DHCP 服务,并且其状态为“正在运行”。

    显示如何设置 DHCP 启动类型的屏幕截图。

    若要手动编辑 DHCP 启动设置,请在 Windows PowerShell 中运行以下示例:

    Get-Service -Name Dhcp
    Where-Object StartType -ne Automatic
    Set-Service -StartupType Automatic
    
  4. 禁用 VMware 工具

    将 VMware 工具服务启动类型(如果存在)设置为“已禁用”,因为 Azure 中的 VM 不需要它们。

    注释

    若要连接到 Windows Server 2003 VM,必须在 Azure VM 上安装 Hyper-V 集成服务。 Windows Server 2003 计算机默认未安装此程序。 请参阅 本文 进行安装和故障转移的准备。

  5. 安装 Azure 来宾代理

    Azure Site Recovery 将尝试安装 Azure 虚拟机代理(VM 代理),这是一个安全的轻型进程,用于管理虚拟机(VM)与 Azure Fabric 控制器的交互。 VM 代理在启用和执行 Azure 虚拟机扩展方面起主要作用,这些扩展支持 VM 的部署后配置,例如安装和配置软件。 Azure Site Recovery 会自动在 Windows Server 2008 R2 及更高版本上安装 Windows VM 代理。

    可以使用 Windows 安装程序包手动安装 Windows VM 代理。 若要手动安装 Windows VM 代理, 请下载 VM 代理安装程序。 还可以在 GitHub Windows IaaS VM 代理版本中搜索特定版本。 VM 代理在 Windows Server 2008 (64 bit) 和更高版本上受支持。

    若要检查 Azure VM 代理是否已成功安装,请打开任务管理器,选择“详细信息”选项卡,并查找名为 WindowsAzureGuestAgent.exe 的进程。 存在该进程表示 VM 代理已安装。 还可以使用 PowerShell 检测 VM 代理。

    显示成功安装 Azure VM 代理的屏幕截图。

    执行上述更改后,系统分区将被卸载。 VM 现已准备好进行故障转移。 详细了解 Windows 服务器的更改。

清理临时 VM

执行必要的更改后,Azure Site Recovery 将启动临时 VM 并释放附加的 OS 磁盘(和数据磁盘)。 这标志着混合过程的结束。

此后,将克隆修改后的 OS 磁盘和包含复制数据的数据磁盘。 在目标区域、虚拟网络和子网中创建一个新的虚拟机,并将克隆的磁盘附加到该虚拟机。 这标志着故障转移过程完成。

故障排除

观察到的错误 详细信息
ComputeRpVmAllocationFailed / SkuNotAvailableForHydrationVM 为临时 VM 选择 SKU (冻结 VM)

在测试故障转移/故障转移期间,Azure 尝试分配临时 VM(Hydration VM)。 如果故障转移 VM 大小通过以下检查,则使用:

1. 黑名单检查 - Hydration 黑名单中的 SKU(旧版 SKU、机密型 VM SKU、没有临时存储或 Gen1 支持的 SKU)将被拒绝。
  - 旧 VM 大小的分配失败
2. 磁盘计数检查 – Windows:仅将 OS 磁盘视为数据磁盘;Linux:所有被视为数据磁盘的磁盘。 Hydration VM 必须支持 客户磁盘数量 + 2

3. 基本 SKU – Basic_* 系列优先级降低,除非没有更好的选项。

4. 区域/订阅可用性 - VM 大小必须在区域/订阅中可用。

5. 高级 IO 支持 - 如果客户使用高级存储/磁盘,则是必需的。

6. 超级SSD 支持 – 如果使用的是 UltraSSD 磁盘,SKU 必须具有 UltraSSDAvailable

7. 临时存储功能 - MaxResourceVolumeMB 必须存在。

8. 第 1 代 VM 支持 - SKU 必须支持第 1 代 VM。

9. 区域可用性 - SKU 必须存在于区域故障转移的目标区域中。

如果没有合适的故障转移 VM 大小,则通过以下检查:
- 评估位置/订阅中的所有 SKU。
- 优先考虑同一系列的 SKU。
如果问题仍未解决,则会从更广泛的池中选择第一个合适的 SKU。

重要: 通过检查 Azure VM 大小文档,验证所选 SKU 是否符合这些要求。