VMware VM 的规模化迁移

本文可帮助您了解如何使用脚本通过无代理方法来迁移大量 VMware 虚拟机 (VM)。 要规模化迁移,请使用 Azure Migrate PowerShell 模块

可在 GitHub 上的 Azure PowerShell 示例存储库中下载 Azure Migrate VMware 迁移自动化脚本。 使用这些脚本,可以通过无代理迁移方法将 VMware VM 迁移到 Azure。 此处介绍了这些脚本中使用的 Azure Migrate PowerShell 命令。

当前限制

  • 这些脚本支持迁移附带所有磁盘的 VMware VM。 如果要有选择地复制附加到 VMware VM 的磁盘,则可以更新脚本。
  • 这些脚本支持使用评估建议。 如果未使用评估建议,则附加到 VMware VM 的所有磁盘都将迁移到相同的托管磁盘类型(标准或高级)。 如果要在同一 VM 上使用多种类型的托管磁盘,则可以更新脚本。

先决条件

安装 Azure Migrate PowerShell 模块

Azure Migrate PowerShell 模块以预览版提供。 需要使用以下命令安装 PowerShell 模块。

Install-Module -Name Az.Migrate 

CSV 输入文件

完成所有先决条件后,需要创建一个 CSV 文件,其中包含要迁移的每台源 VM 的数据。 所有脚本都设计为在同一 CSV 文件上工作。 脚本文件夹中提供了一个示例 CSV 模板以供参考。 CSV 文件是可配置的,因此你可以使用评估建议,甚至可以指定是否不会为特定 VM 触发特定操作。

注意

同一 CSV 文件可用于迁移多个 Azure Migrate 项目中的 Vm。

CSV 文件架构

列标题 说明
AZMIGRATEPROJECT_SUBSCRIPTION_ID 提供 Azure Migrate 项目订阅 ID。
AZMIGRATEPROJECT_RESOURCE_GROUP_NAME 提供 Azure Migrate 资源组名称。
AZMIGRATEPROJECT_NAME 提供要迁移服务器的 Azure Migrate 项目的名称。
SOURCE_MACHINE_NAME 提供 Azure Migrate 项目中已发现 VM 的友好名称(显示名称)。
AZMIGRATEASSESSMENT_NAME 提供需要用于迁移的评估的名称。
AZMIGRATEGROUP_NAME 提供用于 Azure Migrate 评估的组的名称。
TARGET_RESOURCE_GROUP_NAME 提供 VM 需要迁移到的 Azure 资源组的名称。
TARGET_VNET_NAME 提供已迁移的 VM 应使用的 Azure 虚拟网络的名称。
TARGET_SUBNET_NAME 提供已迁移的 VM 应在目标虚拟网络中使用的子网的名称。 如果留空,则将使用“默认”子网。
TARGET_MACHINE_NAME 提供已迁移的 VM 应在 Azure 中使用的名称。 如果保留为空白,则将使用源计算机名称。
TARGET_MACHINE_NAME 提供 VM 应在 Azure 中使用的库存单位 (SKU)。 要将 VM 迁移到 Azure 中的 D2_v2 VM,请在此字段中将值指定为“Standard_D2_v2”。 如果使用评估,则将根据评估建议得出此值。
LICENSE_TYPE 指定是否要将 Azure 混合权益用于 Windows Server VM。 使用值”WindowsServer”便可利用 Azure 混合权益。 否则请留空或使用“NoLicenseType”。
OS_DISK_ID 提供要迁移的 VM 的 OS 磁盘 ID。 要使用的磁盘 ID 是使用 Get-AzMigrateServer cmdlet 检索到的磁盘的唯一标识符 (UUID) 属性。 如果未提供任何值,则脚本将使用 VM 的第一个磁盘作为 OS 磁盘。
TARGET_DISKTYPE 提供要用于 Azure 中 VM 的所有磁盘的磁盘类型。 对于高级托管磁盘,请使用“Premium_LRS”,对于标准 SSD 磁盘,请使用“StandardSSD_LRS”,对于标准 HDD 磁盘,请使用“Standard_LRS”。 如果选择使用评估,则脚本将使用 VM 的每个磁盘的推荐磁盘类型来确定优先级。 如果不使用评估,也没有指定任何值,则默认情况下,该脚本将使用标准 HDD 磁盘。
AVAILABILITYZONE_NUMBER 指定要用于已迁移 VM 的可用性区域编号。 如果不想使用可用性区域,可以留空。
AVAILABILITYSET_NAME 指定要用于已迁移 VM 的可用性集的名称。 如果不想使用可用性集,可以留空。
TURNOFF_SOURCESERVER 如果要在迁移时关闭源 VM,请指定“Y”。 否则,请使用“N”。 如果留空,则脚本将值视为“N”。
TESTMIGRATE_VNET_NAME 指定要用于测试迁移的虚拟网络的名称。
UPDATED_TARGET_RESOURCE_GROUP_NAME 如果要更新由 Azure 中已迁移的 VM 使用的资源组,请指定 Azure 资源组的名称,否则留空。
UPDATED_TARGET_VNET_NAME 如果要更新由 Azure 中已迁移的 VM 使用的虚拟网络,请指定 Azure 虚拟网络的名称,否则留空。
UPDATED_TARGET_MACHINE_NAME 如果要更新 Azure 中已迁移 VM 使用的名称,请指定要使用的新名称,否则留空。
UPDATED_TARGET_MACHINE_SIZE 如果要更新 Azure 中已迁移 VM 使用的 SKU,请指定要使用的新 SKU,否则留空。
UPDATED_AVAILABILITYZONE_NUMBER 如果要更新要由 Azure 中的已迁移 VM 使用的可用性区域,请指定要使用的新可用性区域,否则留空。
UPDATED_AVAILABILITYSET_NAME 如果要更新要由 Azure 中的已迁移 VM 使用的可用性集,请指定要使用的新可用性集,否则留空。
UPDATE_NIC1_ID 指定要更新的 NIC 的 ID。 如果留空,则脚本假定值为发现的 VM 的第一个 NIC。 如果不想更新 VM 的 NIC,请将包含 NIC 名称的所有字段留空。
UPDATED_TARGET_NIC1_SELECTIONTYPE 指定要用于该 NIC 的值。 使用“Primary”、“Secondary”或“DoNotCreate”指定此 NIC 是应在迁移的 VM 上创建为主 NIC、辅助 NIC 还是不创建 NIC。 只能将一个 NIC 指定为 VM 的主要的 NIC。 如果不想更新,则留空。
UPDATED_TARGET_NIC1_SUBNET_NAME 指定要用于已迁移 VM 上的 NIC 的子网名称。 如果不想更新,则留空。
UPDATED_TARGET_NIC1_IP 如果要使用静态 IP,请指定要由已迁移 VM 上的 NIC 使用的 IPv4 地址。 如果要自动分配 IP,请使用“auto”。 如果不想更新,则留空。
UPDATE_NIC2_ID 指定要更新的 NIC 的 ID。 如果留空,则脚本假定值为发现的 VM 的第二个 NIC。 如果不想更新 VM 的 NIC,请将包含 NIC 名称的所有字段留空。
UPDATED_TARGET_NIC2_SELECTIONTYPE 指定要用于该 NIC 的值。 使用“Primary”、“Secondary”或“DoNotCreate”指定此 NIC 是应在迁移的 VM 上创建为主 NIC、辅助 NIC 还是不创建 NIC。 只能将一个 NIC 指定为 VM 的主要的 NIC。 如果不想更新,则留空。
UPDATED_TARGET_NIC2_SUBNET_NAME 指定要用于已迁移 VM 上的 NIC 的子网名称。 如果不想更新,则留空。
UPDATED_TARGET_NIC2_IP 如果要使用静态 IP,请指定要由已迁移 VM 上的 NIC 使用的 IPv4 地址。 如果要自动分配 IP,请使用“auto”。 如果不想更新,则留空。
OK_TO_UPDATE 使用“Y" 指示运行 AzMigrate_UpdateMachineProperties 脚本时是否需要更新 VM 属性。 使用“N”或留空。
OK_TO_MIGRATE 使用“Y”指示在运行 AzMigrate_StartMigration 脚本时是否应迁移 VM。 如果你不想迁移 VM,请使用“N”或留空。
OK_TO_USE_ASSESSMENT 使用“Y”指示在运行 AzMigrate_StartReplication 脚本时,VM 是否应使用评估建议开始复制。 这将覆盖 csv 文件中的 TARGET_MACHINE_SIZE 和 TARGET_DISKTYPE 值。 如果不想使用评估建议,请使用“N”或留空。
OK_TO_TESTMIGRATE 使用“Y”指示在运行 AzMigrate_StartTestMigration 脚本时是否应测试迁移 VM。 如果你不想测试迁移 VM,请使用“N”或留空。
OK_TO_RETRIEVE_REPLICATIONSTATUS 使用“Y”指示在运行 AzMigrate_ReplicationStatus 脚本时是否应更新 VM 的复制状态。 如果不想更新复制状态,请使用“N”或留空。
OK_TO_CLEANUP 使用“Y”指示在运行 AzMigrate_StopReplication 脚本时是否应清除 VM 的复制。 使用“N”或留空。
OK_TO_TESTMIGRATE_CLEANUP 使用“Y”指示在运行 AzMigrate_CleanUpTestMigration 脚本时是否应清除 VM 的测试迁移。 使用“N”或留空。

脚本执行

CSV 准备就绪后,可以执行以下步骤来迁移本地 VMware VM。

步骤编号 脚本名称 说明
1 AzMigrate_StartReplication.ps1 为 csv 中列出的所有 VM 启用复制,该脚本将创建一个 CSV 输出和一份日志以用于故障排除。
2 AzMigrate_ReplicationStatus.ps1 检查复制状态,该脚本会创建一个 csv 输出,其中包含每个 VM 的状态以及一个日志文件以用于故障排除。
3 AzMigrate_UpdateMachineProperties.ps1 VM 完成了初始复制之后,将使用此脚本更新 VM 的目标属性(计算和网络属性)。 该脚本将创建一个 CSV 输出,其中包含每个 VM 的作业详细信息。
4 AzMigrate_StartTestMigration.ps1 为 CSV 中列出的配置为进行测试迁移的所有 VM 启动测试故障转移。 该脚本将创建一个 CSV 输出,其中包含每个 VM 的作业详细信息。
5 AzMigrate_CleanUpTestMigration.ps1 手动验证经过测试故障转移的 VM 后,请使用此脚本为配置为测试迁移清除的 csv 中列出的所有 VM 清理测试故障转移 VM。 该脚本将创建一个 CSV 输出,其中包含每个 VM 的作业详细信息。
6 AzMigrate_StartMigration.ps1 为 csv 中列出的配置为进行迁移的所有 VM 启动迁移。 该脚本将创建一个 CSV 输出,其中包含每个 VM 的作业详细信息。
7 AzMigrate_StopReplication.ps1 成功迁移 VM 后或者出于其他原因要取消复制时,停止复制 VM。 该脚本将创建一个 CSV 输出,其中包含每个 VM 的作业详细信息。

以下脚本由其他脚本调用以完成所有的 Azure Migrate 操作,如启用复制、启动测试迁移、更新 VM 属性等。 确保所有脚本都出现在同一文件夹/路径中。

步骤编号 脚本名称 说明
1 AzMigrate_Shared.ps1 通用脚本,功能包括检索评估属性(通过 API)、发现的VM 和复制 VM。
2 AzMigrate_CSV_Processor.ps1 通用脚本,功能包括加载、读取和打印日志(用于 csv 文件操作)。
3 AzMigrate_Logger.ps1 为生成 Azure Migrate 自动化操作的日志文件而调用的公共脚本。 日志文件的格式为 log.Scriptname.Datetime.txt。

除上述内容外,该文件夹还包含 AzMigrate_Template.ps1,该文件包含用于为不同 Azure 迁移操作构建自定义脚本的框架。

脚本执行语法

下载脚本后,可以按如下所示执行脚本。

如果要执行脚本以使用 Input.csv 文件为 VM 启动复制,请使用以下语法。

".\AzMigrate_StartReplication.ps1" .\Input.csv 

要了解有关使用 Azure PowerShell 通过 Azure Migrate 迁移 VMware VM 的更多信息,请遵循教程