本文可帮助您了解如何使用脚本通过无代理方法来迁移大量 VMware 虚拟机 (VM)。 若要缩放迁移,请使用 Azure Migrate PowerShell 模块。
Azure Migrate VMware 迁移自动化脚本可在 GitHub 上的 Azure PowerShell Samples 存储库中下载。 脚本可用于使用无代理迁移方法将 VMware VM 迁移到Azure。 这些脚本中使用的Azure Migrate PowerShell 命令记录在 here。
当前限制
- 这些脚本支持迁移附带所有磁盘的 VMware VM。 如果要有选择地复制附加到 VMware VM 的磁盘,则可以更新脚本。
- 这些脚本支持使用评估建议。 如果未使用评估建议,则附加到 VMware VM 的所有磁盘都将迁移到相同的托管磁盘类型(标准或高级)。 如果要在同一 VM 上使用多种类型的托管磁盘,则可以更新脚本。
先决条件
- 完成发现教程以准备Azure和 VMware 进行迁移。
- 建议先完成第二个教程来评估 VMware VM,然后再将其迁移到Azure。
- 必须具有 Azure PowerShell
Az模块。 如果需要安装或升级Azure PowerShell,请按照此 guide 安装和配置 Azure PowerShell。
安装 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评估的组的名称。 |
| 目标资源组名称 | 提供 VM 需要迁移到的Azure资源组的名称。 |
| TARGET_VNET_NAME | 提供迁移的 VM 应使用的Azure Virtual Network的名称。 |
| 目标子网名称 | 提供已迁移的 VM 应在目标虚拟网络中使用的子网的名称。 如果留空,将使用“默认”子网。 |
| 目标机器名称 | 提供迁移的 VM 应在Azure中使用的名称。 如果保留为空白,则将使用源计算机名称。 |
| 目标机器尺寸 | 提供 VM 应在 Azure 中使用的库存单位(SKU)。 若要将 VM 迁移到 Azure 中的 D2_v2 VM,请将此字段中的值指定为“Standard_D2_v2”。 如果使用评估,则将根据评估建议得出此值。 |
| 许可证类型 | 指定是否要对Windows Server VM 使用Azure Hybrid Benefit。 使用值“WindowsServer”来利用 Azure 混合权益。 否则请留空或使用“NoLicenseType”。 |
| 操作系统磁盘标识符 (OS_DISK_ID) | 提供要迁移的 VM 的 OS 磁盘 ID。 要使用的磁盘 ID 是使用 Get-AzMigrateServer cmdlet 检索到的磁盘的唯一标识符 (UUID) 属性。 如果未提供任何值,则脚本将使用 VM 的第一个磁盘作为 OS 磁盘。 |
| 目标_磁盘类型 | 提供要用于Azure中 VM 的所有磁盘的磁盘类型。 使用“Premium_LRS”用于高级托管磁盘,使用“StandardSSD_LRS”用于标准 SSD,使用“Standard_LRS”用于标准 HDD。 如果选择使用评估,则脚本将使用 VM 的每个磁盘的推荐磁盘类型来确定优先级。 如果不使用评估或指定任何值,脚本将默认使用标准 HDD。 |
| AVAILABILITYZONE_NUMBER 可能指的是可用区编号 | 指定要用于已迁移 VM 的可用性区域编号。 如果不想使用可用性区域,可以留空。 |
| AVAILABILITYSET_NAME | 指定要用于已迁移 VM 的可用性集的名称。 如果不想使用“可用性集”,可以将此字段留空。 |
| 关闭_SOURCE服务器 | 如果要在迁移时关闭源 VM,请指定“Y”。 否则,请使用“N”。 如果留空,则脚本将值视为“N”。 |
| TESTMIGRATE_VNET_NAME | 指定要用于测试迁移的虚拟网络的名称。 |
| 提示目标资源组名称更新 | 如果要更新Azure中迁移的 VM 要使用的资源组,请指定Azure资源组的名称,否则将其留空。 |
| UPDATED_TARGET_VNET_NAME | 如果要更新Azure中迁移的 VM 要使用的Virtual Network,请指定Azure Virtual Network的名称,否则将其留空。 |
| 更新的目标机器名称 | 如果要更新Azure中迁移的 VM 要使用的名称,请指定要使用的新名称,否则将其留空。 |
| 更新的目标机器大小 | 如果要更新Azure中迁移的 VM 要使用的 SKU,请指定要使用的新 SKU,否则将其留空。 |
| 已更新_可用区_编号 | 如果要更新Azure中迁移的 VM 要使用的可用性区域,请指定要使用的新可用性区域,否则将其留空。 |
| 更新_AVAILABILITYSET_名称 | 如果要更新Azure中迁移的 VM 要使用的可用性集,请指定要使用的新可用性集,否则将其留空。 |
| UPDATE_NIC1_ID | 指定要更新的 NIC 的 ID。 如果留空,则脚本假定值为发现的 VM 的第一个 NIC。 如果不想更新 VM 的 NIC,请将包含 NIC 名称的所有字段留空。 |
| 更新的目标网卡1选择类型 | 指定要用于该 NIC 的值。 使用“Primary”、“Secondary”或“DoNotCreate”指定此 NIC 是应在迁移的 VM 上创建为主 NIC、辅助 NIC 还是不创建 NIC。 只能将一个 NIC 指定为 VM 的主要的 NIC。 如果不想更新,则留空。 |
| 更新后的目标NIC1子网名称 | 指定要用于已迁移 VM 上的 NIC 的子网名称。 如果不想更新,则留空。 |
| 更新的目标网卡1_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。 如果不想更新,则留空。 |
| 更新的目标NIC2子网名称 | 指定要用于已迁移 VM 上的 NIC 的子网名称。 如果不想更新,则留空。 |
| 更新后的目标NIC2 IP | 如果要使用静态 IP,请指定要由已迁移 VM 上的 NIC 使用的 IPv4 地址。 如果要自动分配 IP,请使用“auto”。 如果不想更新,则留空。 |
| 可以更新 | 使用“Y" 指示运行 AzMigrate_UpdateMachineProperties 脚本时是否需要更新 VM 属性。 使用“N”,否则留空。 |
| OK_TO_MIGRATE | 使用“Y”指示在运行 AzMigrate_StartMigration 脚本时是否应迁移 VM。 如果你不想迁移 VM,请使用“N”或留空。 |
| 可使用评估 | 使用“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 Migrate 操作生成自定义脚本的框架。
脚本执行语法
下载脚本后,可以按如下所示执行脚本。
如果要执行脚本以使用 Input.csv 文件为 VM 启动复制,请使用以下语法。
".\AzMigrate_StartReplication.ps1" .\Input.csv
若要详细了解如何使用 Azure PowerShell 通过 Azure Migrate 迁移 VMware VM,请遵循 tutorial。