本文可帮助您了解如何使用脚本通过无代理方法来迁移大量 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 和 VMware,以便进行迁移。
- 建议先完成第二篇教程以评估 VMware VM,然后再将它们迁移到 Azure。
- 必须拥有 Azure PowerShell
Az
模块。 如需安装或升级 Azure PowerShell,请遵循此 Azure PowerShell 安装和配置指南。
Azure Migrate PowerShell 模块以预览版提供。 需要使用以下命令安装 PowerShell 模块。
Install-Module -Name Az.Migrate
完成所有先决条件后,需要创建一个 CSV 文件,其中包含要迁移的每台源 VM 的数据。 所有脚本都设计为在同一 CSV 文件上工作。 脚本文件夹中提供了一个示例 CSV 模板以供参考。 CSV 文件是可配置的,因此你可以使用评估建议,甚至可以指定是否不会为特定 VM 触发特定操作。
注意
同一 CSV 文件可用于迁移多个 Azure Migrate 项目中的 Vm。
列标题 | 说明 |
---|---|
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 的更多信息,请遵循教程。