在本文中,你将了解如何使用 Azure PowerShell Azure Migrate:服务器迁移,通过无代理方法,迁移发现的 VMware 虚拟机 (VM)。
学习如何:
- 在 Azure Migrate 项目中检索发现的 VMware VM。
- 开始复制 VM。
- 更新用于复制 VM 的属性。
- 监视复制。
- 运行测试迁移,确保一切按预期正常进行。
- 运行完整的 VM 迁移。
注意
教程中演示了方案的最简单部署路径,使你能够快速设置概念证明。 教程尽可能使用默认选项,不会演示所有可能的设置和路径。
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
开始学习本教程之前,应做好以下准备:
- 在开始本教程之前完成教程:使用服务器评估发现 VMware VM,将 Azure 和 VMware 做好迁移准备。
- 完成教程:评估 VMware VM 以迁移到 Azure VM,然后再将这些虚拟机迁移到 Azure。
- 安装 Az PowerShell 模块。
Azure Migrate PowerShell 模块作为 Azure PowerShell (Az
) 的一部分提供。 运行 Get-InstalledModule -Name Az.Migrate
命令,检查计算机上是否已安装 Azure Migrate PowerShell 模块。
使用 Connect-AzAccount -Environment AzureChinaCloud cmdlet 登录到 Azure 订阅。
Connect-AzAccount -Environment AzureChinaCloud
使用 Get-AzSubscription cmdlet 获取你有权访问的 Azure 订阅的列表。 使用 Set-AzContext cmdlet 选择要用于 Azure Migrate 项目的 Azure 订阅。
Set-AzContext -SubscriptionId 00000000-0000-0000-0000-000000000000
Azure Migrate 项目用于存储从正在评估或迁移的环境中收集的发现、评估和迁移元数据。 在项目中,你可以跟踪发现的资产、协调评估并执行迁移。
作为先决条件的一部分,应已创建 Azure Migrate 项目。 使用 Get-AzMigrateProject cmdlet 检索 Azure Migrate 项目的详细信息。 需要指定 Azure Migrate 项目的名称 (Name
) 和 Azure Migrate 项目的资源组名称 (ResourceGroupName
)。
# Get resource group of the Azure Migrate project
$ResourceGroup = Get-AzResourceGroup -Name MyResourceGroup
# Get details of the Azure Migrate project
$MigrateProject = Get-AzMigrateProject -Name MyMigrateProject -ResourceGroupName $ResourceGroup.ResourceGroupName
# View Azure Migrate project details
Write-Output $MigrateProject
Azure Migrate and Modernize 使用轻型 Azure Migrate 设备。 作为先决条件的一部分,已将 Azure Migrate 设备部署为 VMware VM。
若要在 Azure Migrate 项目中检索特定的 VMware VM,请指定 Azure Migrate 项目的名称 (ProjectName
)、Azure Migrate 项目的资源组 (ResourceGroupName
) 和 VM 名称 (DisplayName
)。
# Get a specific VMware VM in an Azure Migrate project
$DiscoveredServer = Get-AzMigrateDiscoveredServer -ProjectName $MigrateProject.Name -ResourceGroupName $ResourceGroup.ResourceGroupName -DisplayName MyTestVM | Format-Table DisplayName, Name, Type
# View discovered server details
Write-Output $DiscoveredServer
我们将迁移此 VM,作为本教程的一部分内容。
还可以使用 ProjectName
和 ResourceGroupName
参数检索 Azure Migrate 项目中的所有 VMware VM。
# Get all VMware VMs in an Azure Migrate project
$DiscoveredServers = Get-AzMigrateDiscoveredServer -ProjectName $MigrateProject.Name -ResourceGroupName $ResourceGroup.ResourceGroupName
如果在 Azure Migrate 项目中有多个设备,则可以使用 ProjectName
、ResourceGroupName
和 ApplianceName
参数检索使用特定 Azure Migrate 设备发现的所有 VM。
# Get all VMware VMs discovered by an Azure Migrate Appliance in an Azure Migrate project
$DiscoveredServers = Get-AzMigrateDiscoveredServer -ProjectName $MigrateProject.Name -ResourceGroupName $ResourceGroup.ResourceGroupName -ApplianceName MyMigrateAppliance
Azure Migrate:服务器迁移利用多个 Azure 资源迁移 VM。 Azure Migrate:服务器迁移在与项目所在的资源组中提供以下资源。
- 服务总线:“Azure Migrate: 服务器迁移”使用服务总线将复制业务流程消息发送到设备。
- 网关存储帐户:“Azure Migrate:服务器迁移使用网关存储帐户存储有关所要复制的 VM 的状态信息。
- 日志存储帐户:Azure Migrate 设备将 VM 的复制日志上传到日志存储帐户。 Azure Migrate 将复制信息应用到副本托管磁盘。
- 密钥保管库:Azure Migrate 设备使用密钥保管库管理服务总线的连接字符串,以及复制中使用的存储帐户的访问密钥。
在 Azure Migrate 项目中复制第一个 VM 之前,请运行以下命令来预配复制基础结构。 此命令将预配并配置前面的资源,以便你可以开始迁移 VMware VM。
注意
一个 Azure Migrate 项目只支持迁移到一个 Azure 区域。 运行此脚本后,就不能更改要将 VMware VM 迁移到的目标区域。
如果在 Azure Migrate 项目中配置新设备,则需要运行 Initialize-AzMigrateReplicationInfrastructure
命令。
在本文中,我们将初始化复制基础结构,以便可以将 VM 迁移到 China North 2
区域。
# Initialize replication infrastructure for the current Migrate project
Initialize-AzMigrateReplicationInfrastructure -ResourceGroupName $ResourceGroup.ResourceGroupName -ProjectName $MigrateProject. Name -Scenario agentlessVMware -TargetRegion "chinanorth2"
在完成发现并初始化复制基础结构后,可以开始将 VMware VM 复制到 Azure。 最多可以同时运行 500 个复制。
若要指定复制属性,请使用下表。
参数 | 类型 | 描述 |
---|---|---|
目标订阅和资源组 | 必需 | 通过使用 TargetResourceGroupId 参数提供资源组 ID,指定 VM 应迁移到的订阅和资源组。 |
目标虚拟网络和子网 | 必需 | 分别使用 TargetNetworkId 和 TargetSubnetName 参数指定 VM 应迁移到的 Azure 虚拟网络实例的 ID 和子网的名称。 |
计算机 ID | 必需 | 指定需要复制和迁移的已发现计算机的 ID。 使用 InputObject 为复制指定发现的 VM 对象。 |
目标 VM 名称 | 必需 | 使用 TargetVMName 参数指定要创建的 Azure VM 的名称。 |
目标 VM 大小 | 必需 | 使用 TargetVMSize 参数指定要用于复制 VM 的 Azure VM 大小。 例如,要将 VM 迁移到 Azure 中的 D2_v2 VM,请将 TargetVMSize 的值指定为 Standard_D2_v2 。 |
许可证 | 必需 | 若要为活动软件保障或 Windows Server 订阅涵盖的 Windows Server 计算机使用 Azure 混合权益,请将 LicenseType 参数的值指定为“WindowsServer”。 否则,请将值指定为“NoLicenseType”。 |
OS 磁盘 | 必需 | 指定载有操作系统引导加载程序和安装程序的磁盘的唯一标识符。 要使用的磁盘 ID 是使用 Get-AzMigrateDiscoveredServer cmdlet 检索到的磁盘的唯一标识符 (UUID) 属性。 |
磁盘类型 | 必需 | 指定要使用的磁盘类型。 |
基础结构冗余 | 可选 | 指定基础结构冗余选项,如下所示: - 可用性区域:将迁移的计算机固定到区域中的特定可用性区域。 使用此选项可跨可用性区域分配形成多节点应用程序层的服务器。 仅当为迁移选择的目标区域支持可用性区域时,此选项才可用。 若要使用可用性区域,请为 TargetAvailabilityZone 参数指定可用性区域值。 - 可用性集:将迁移的计算机放入可用性集。 若要使用此选项,所选的目标资源组必须具有一个或多个可用性集。 若要使用可用性集,请为 TargetAvailabilitySet 参数指定可用性集 ID。 |
启动诊断存储帐户 | 可选 | 若要使用启动诊断存储帐户,请为 TargetBootDiagnosticStorageAccount 参数指定 ID。 - 用于启动诊断的存储帐户应位于要将 VM 迁移到的同一订阅中。 - 默认情况下,没有为此参数设置值。 |
Tags | 可选 | 向迁移的 VM、磁盘和 NIC 添加标记。 使用 Tag 向 VM、磁盘和 NIC 添加标记或:- 使用 VMTag 向迁移的 VM 添加标记。- 使用 DiskTag 向磁盘添加标记。 - 使用 NicTag 向网络接口添加标记。 例如,将所需的标记添加到变量 $tags ,并在所需的参数中传递变量:$tags = @{Organization="Contoso"} 。 |
在本教程中,我们将复制发现的 VM 的所有磁盘,并为 Azure 中的 VM 指定一个新名称。 我们将发现的服务器的第一个磁盘指定为 OS 磁盘,并将所有磁盘作为标准 HDD 进行迁移。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
# Retrieve the resource group that you want to migrate to
$TargetResourceGroup = Get-AzResourceGroup -Name MyTargetResourceGroup
# Retrieve the Azure virtual network and subnet that you want to migrate to
$TargetVirtualNetwork = Get-AzVirtualNetwork -Name MyVirtualNetwork
# Start replication for a discovered VM in an Azure Migrate project
$MigrateJob = New-AzMigrateServerReplication -InputObject $DiscoveredServer -TargetResourceGroupId $TargetResourceGroup.ResourceId -TargetNetworkId $TargetVirtualNetwork.Id -LicenseType NoLicenseType -OSDiskID $DiscoveredServer.Disk[0].Uuid -TargetSubnetName $TargetVirtualNetwork.Subnets[0].Name -DiskType Standard_LRS -TargetVMName MyMigratedTestVM -TargetVMSize Standard_DS2_v2
# Track job status to check for completion
while (($MigrateJob.State -eq 'InProgress') -or ($MigrateJob.State -eq 'NotStarted')){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$MigrateJob = Get-AzMigrateJob -InputObject $MigrateJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $MigrateJob.State
还可以选择性地复制发现的 VM 的磁盘,方法是使用 New-AzMigrateDiskMapping cmdlet,并将其作为 New-AzMigrateServerReplication cmdlet 中 DiskToInclude
参数的输入。 还可以使用 New-AzMigrateDiskMapping cmdlet 为要复制的每个磁盘指定不同的目标磁盘类型。
为 New-AzMigrateDiskMapping cmdlet 的以下参数指定值:
- DiskId:指定要迁移的磁盘的唯一标识符。 要使用的磁盘 ID 是使用 Get-AzMigrateDiscoveredServer cmdlet 检索到的磁盘的 UUID 属性。
- IsOSDisk:如果要迁移的磁盘是 VM 的 OS 磁盘,则指定
true
。 否则,指定false
。 - DiskType:指定要在 Azure 中使用的磁盘类型。
在下面的示例中,我们将只复制发现的 VM 的两个磁盘。 我们将指定 OS 磁盘,并为要复制的每个磁盘使用不同的磁盘类型。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
# View disk details of the discovered server
Write-Output $DiscoveredServer.Disk
# Create a new disk mapping for the disks to be replicated
$DisksToReplicate = @()
$OSDisk = New-AzMigrateDiskMapping -DiskID $DiscoveredServer.Disk[0].Uuid -DiskType StandardSSD_LRS -IsOSDisk true
$DataDisk = New-AzMigrateDiskMapping -DiskID $DiscoveredServer.Disk[1].Uuid -DiskType Premium_LRS -IsOSDisk false
$DisksToReplicate += $OSDisk
$DisksToReplicate += $DataDisk
# Retrieve the resource group that you want to migrate to
$TargetResourceGroup = Get-AzResourceGroup -Name MyTargetResourceGroup
# Retrieve the Azure virtual network and subnet that you want to migrate to
$TargetVirtualNetwork = Get-AzVirtualNetwork -Name MyVirtualNetwork
# Start replication for the VM
$MigrateJob = New-AzMigrateServerReplication -InputObject $DiscoveredServer -TargetResourceGroupId $TargetResourceGroup.ResourceId -TargetNetworkId $TargetVirtualNetwork.Id -LicenseType NoLicenseType -DiskToInclude $DisksToReplicate -TargetSubnetName $TargetVirtualNetwork.Subnets[0].Name -TargetVMName MyMigratedTestVM -TargetVMSize Standard_DS2_v2
# Track job status to check for completion
while (($MigrateJob.State -eq 'InProgress') -or ($MigrateJob.State -eq 'NotStarted')){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$MigrateJob = Get-AzMigrateJob -InputObject $MigrateJob
}
# Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $MigrateJob.State
复制发生在以下情况下:
- “开始复制”作业成功完成后,计算机将开始初始复制到 Azure。
- 在初始复制期间,会创建一个 VM 快照。 该快照中的磁盘数据将复制到 Azure 中的副本托管磁盘。
- 初始复制完成后,增量复制将会开始。 对本地磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。
使用 Get-AzMigrateServerReplication cmdlet 跟踪复制的状态。
# List replicating VMs and filter the result for selecting a replicating VM. This cmdlet will not return all properties of the replicating VM.
$ReplicatingServer = Get-AzMigrateServerReplication -ProjectName $MigrateProject.Name -ResourceGroupName $ResourceGroup.ResourceGroupName -MachineName MyTestVM
# Retrieve all properties of a replicating VM
$ReplicatingServer = Get-AzMigrateServerReplication -TargetObjectID $ReplicatingServer.Id
可以跟踪输出中的“迁移状态”和“迁移状态说明”属性 。
- 对于初始复制,“迁移状态”和“迁移状态说明”属性的值将分别为
InitialSeedingInProgress
和Initial replication
。 - 对于增量复制,“迁移状态”和“迁移状态说明”属性的值将分别为
Replicating
和Ready to migrate
。 - 完成迁移后,“迁移状态”和“迁移状态说明”属性的值将分别为
Migration succeeded
和Migrated
。
AllowedOperation : {DisableMigration, TestMigrate, Migrate}
CurrentJobId : /Subscriptions/xxx/resourceGroups/xxx/providers/Micr
osoft.RecoveryServices/vaults/xxx/replicationJobs/None
CurrentJobName : None
CurrentJobStartTime : 1/1/1753 1:01:01 AM
EventCorrelationId : 9d435c55-4660-41a5-a8ed-dd74213d85fa
Health : Normal
HealthError : {}
Id : /Subscriptions/xxx/resourceGroups/xxx/providers/Micr
osoft.RecoveryServices/vaults/xxx/replicationFabrics/xxx/replicationProtectionContainers/xxx/
replicationMigrationItems/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_5009e941-3e40-
39b2-1e14-f90584522703
LastTestMigrationStatus :
LastTestMigrationTime :
Location :
MachineName : MyTestVM
MigrationState : InitialSeedingInProgress
MigrationStateDescription : Initial replication
Name : 10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_5009e941-3e40-39b2-1e14-f90584522703
PolicyFriendlyName : xxx
PolicyId : /Subscriptions/xxx/resourceGroups/xxx/providers/Micr
osoft.RecoveryServices/vaults/xxx/replicationPolicies/xxx
ProviderSpecificDetail : Microsoft.Azure.PowerShell.Cmdlets.Migrate.Models.Api20180110.VMwareCbtMigrationDetails
TestMigrateState : None
TestMigrateStateDescription : None
Type : Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems
有关复制进度的详细信息,请运行以下 cmdlet:
Write-Output $replicatingserver.ProviderSpecificDetail
可以使用输出中的“初始种子设定进度百分比”属性跟踪初始复制进度。
"DataMoverRunAsAccountId": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.OffAzure/VMwareSites/xxx/runasaccounts/xxx",
"FirmwareType": "BIOS",
"InitialSeedingProgressPercentage": 20,
"InstanceType": "VMwareCbt",
"LastRecoveryPointReceived": "\/Date(1601733591427)\/",
"LicenseType": "NoLicenseType",
"MigrationProgressPercentage": null,
"MigrationRecoveryPointId": null,
"OSType": "Windows",
"PerformAutoResync": "true",
复制发生在以下情况下:
- “开始复制”作业成功完成后,计算机将开始初始复制到 Azure。
- 在初始复制期间,会创建一个 VM 快照。 该快照中的磁盘数据将复制到 Azure 中的副本托管磁盘。
- 初始复制完成后,增量复制将会开始。 对本地磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。
可以通过使用 Get-AzMigrateJob cmdlet 来监视作业的状态。
# Retrieve the updated status for a job
$job = Get-AzMigrateJob -InputObject $job
Azure Migrate:服务器迁移允许更改复制 VM 的目标属性,例如名称、大小、资源组、NIC 配置等。
可以为 VM 更新以下属性。
参数 | 类型 | 描述 |
---|---|---|
VM 名称 | 可选 | 使用 TargetVMName 参数指定要创建的 Azure VM 的名称。 |
VM 大小 | 可选 | 使用 TargetVMSize 参数指定要用于复制 VM 的 Azure VM 大小。 例如,要将 VM 迁移到 Azure 中的 D2_v2 VM,请将 TargetVMSize 的值指定为 Standard_D2_v2 。 |
虚拟网络 | 可选 | 使用 TargetNetworkId 参数指定 VM 应迁移到的 Azure 虚拟网络的 ID。 |
资源组 | 可选 | 可以使用 New-AzMigrateNicMapping cmdlet 指定 IC 配置。 然后对象的输入将传递给 Set-AzMigrateServerReplication cmdlet 中的 NicToUpdate 参数。 - 更改 IP 分配:若要为 NIC 指定静态 IP,请使用 TargetNicIP 参数提供要用作 VM 静态 IP 的 IPv4 地址。 若要为 NIC 动态分配 IP,请提供 auto 作为 TargetNicIP 参数的值。 - 为 TargetNicSelectionType 参数使用值 Primary 、Secondary 或 DoNotCreate 来指定 NIC 应该是主要的、次要的还是不应在迁移的 VM 上创建。 只能将一个 NIC 指定为 VM 的主要的 NIC。 - 要使 NIC 成为主要 NIC,还需要指定其他应设为次要的 NIC 或不在迁移的 VM 上创建的 NIC。 - 若要更改 NIC 的子网,请使用 TargetNicSubnet 参数指定子网的名称。 |
网络接口 | 可选 | 使用 TargetVMName 参数指定要创建的 Azure VM 的名称。 |
可用性区域 | 可选 | 若要使用可用性区域,请为 TargetAvailabilityZone 参数指定可用性区域值。 |
可用性集 | 可选 | 若要使用可用性集,请为 TargetAvailabilitySet 参数指定可用性集 ID。 |
Tags | 可选 | 若要更新标记,请使用以下参数 UpdateTag 或 UpdateVMTag 、UpdateDiskTag 、UpdateNicTag 以及更新标记操作类型 UpdateTagOperation 或 UpdateVMTagOperation 、UpdateDiskTagOperation 、UpdateNicTagOperation 。 更新标记操作采用以下值:Merge、Delete 和 Replace。 使用 UpdateTag 跨虚拟机、磁盘和 NIC 更新所有标记。 使用 UpdateVMTag 更新 VM 标记。 使用 UpdateDiskTag 更新磁盘标记。 使用 UpdateNicTag 更新 NIC 标记。 使用 UpdateTagOperation 跨 VM、磁盘和 NIC 更新所有标记的操作。 使用 UpdateVMTagOperation 更新 VM 标记。 使用 UpdateDiskTagOperation 更新磁盘标记。 使用 UpdateNicTagOperation 更新 NIC 标记。 “replace”选项将整个现有标记集替换为新的集。 “merge”选项允许添加具有新名称的标记,以及使用现有名称更新标记的值。 “delete”选项允许根据特定名称或名称/值对选择性地删除标记。 |
磁盘 | 可选 | 对于 OS 磁盘: - 使用 TargetDiskName 参数更新 OS 磁盘的名称。 若要更新多个磁盘,请执行以下操作: - 使用 Set-AzMigrateDiskMapping 将磁盘名称设置为变量 $DiskMapping 。 然后使用 DiskToUpdate 参数并传递变量。 要在 Set-AzMigrateDiskMapping 中使用的磁盘 ID 是使用 Get-AzMigrateDiscoveredServer cmdlet 检索到的磁盘的 UUID 属性。 |
NIC 名称 | 可选 | 使用 New-AzMigrateNicMapping 将 NIC 名称设置为变量 $NICMapping 。 然后使用 NICToUpdate 参数并传递变量。 |
Get-AzMigrateServerReplication cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
# List replicating VMs and filter the result for selecting a replicating VM. This cmdlet will not return all properties of the replicating VM.
$ReplicatingServer = Get-AzMigrateServerReplication -ProjectName $MigrateProject.Name -ResourceGroupName $ResourceGroup.ResourceGroupName -MachineName MyTestVM
# Retrieve all properties of a replicating VM
$ReplicatingServer = Get-AzMigrateServerReplication -TargetObjectID $ReplicatingServer.Id
# View NIC details of the replicating server
Write-Output $ReplicatingServer.ProviderSpecificDetail.VMNic
在下面的示例中,我们会更新 NIC 配置,方法是将第一个 NIC 作为主要的 NIC 并为其分配一个静态 IP。 我们为迁移丢弃第二个 NIC,更新目标 VM 的名称和大小并自定义 NIC 名称。
# Specify the NIC properties to be updated for a replicating VM.
$NicMapping = @()
$NicMapping1 = New-AzMigrateNicMapping -NicId $ReplicatingServer.ProviderSpecificDetail.VMNic[0].NicId -TargetNicIP ###.###.###.### -TargetNicSelectionType Primary TargetNicName "ContosoNic_1"
$NicMapping2 = New-AzMigrateNicMapping -NicId $ReplicatingServer.ProviderSpecificDetail.VMNic[1].NicId -TargetNicSelectionType DoNotCreate - TargetNicName "ContosoNic_2"
$NicMapping += $NicMapping1
$NicMapping += $NicMapping2
# Update the name, size and NIC configuration of a replicating server
$UpdateJob = Set-AzMigrateServerReplication -InputObject $ReplicatingServer -TargetVMSize Standard_DS13_v2 -TargetVMName MyMigratedVM -NicToUpdate $NicMapping
在下面的示例中,我们将自定义磁盘名称。
# Customize the Disk names for a replicating VM
$OSDisk = Set-AzMigrateDiskMapping -DiskID "6000C294-1217-dec3-bc18-81f117220424" -DiskName "ContosoDisk_1"
$DataDisk1= Set-AzMigrateDiskMapping -DiskID "6000C292-79b9-bbdc-fb8a-f1fa8dbeff84" -DiskName "ContosoDisk_2"
$DiskMapping = $OSDisk, $DataDisk1
# Update the disk names for a replicating server
$UpdateJob = Set-AzMigrateServerReplication InputObject $ReplicatingServer DiskToUpdate $DiskMapping
在下面的示例中,我们会向复制 VM 添加标记。
# Update all tags across virtual machines, disks, and NICs.
Set-azmigrateserverreplication UpdateTag $UpdateTag UpdateTagOperation Merge/Replace/Delete
# Update virtual machines tags
Set-azmigrateserverreplication UpdateVMTag $UpdateVMTag UpdateVMTagOperation Merge/Replace/Delete
使用以下示例跟踪作业状态。
# Track job status to check for completion
while (($UpdateJob.State -eq 'InProgress') -or ($UpdateJob.State -eq 'NotStarted')){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$UpdateJob = Get-AzMigrateJob -InputObject $UpdateJob
}
# Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $UpdateJob.State
增量复制开始后,在开始以 Azure 为目标的完整迁移之前,可以针对 VM 运行完整迁移。 强烈建议在迁移之前,针对每台计算机至少进行一次迁移测试。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
- 运行测试迁移可检查迁移是否按预期方式工作。 测试迁移不会影响本地计算机,该计算机仍在运行并继续复制。
- 测试迁移通过使用复制的数据创建 Azure VM 来模拟迁移。 测试通常会迁移到 Azure 订阅中的非生产虚拟网络。
- 可以使用复制的测试 Azure VM 来验证迁移、执行应用测试,并解决完整迁移之前出现的任何问题。
通过使用 TestNetworkID
参数指定虚拟网络的 ID,来选择要用于测试的 Azure 虚拟网络。
# Retrieve the Azure virtual network created for testing
$TestVirtualNetwork = Get-AzVirtualNetwork -Name MyTestVirtualNetwork
# Start test migration for a replicating server
$TestMigrationJob = Start-AzMigrateTestMigration -InputObject $ReplicatingServer -TestNetworkID $TestVirtualNetwork.Id
# Track job status to check for completion
while (($TestMigrationJob.State -eq 'InProgress') -or ($TestMigrationJob.State -eq 'NotStarted')){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$TestMigrationJob = Get-AzMigrateJob -InputObject $TestMigrationJob
}
# Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $TestMigrationJob.State
测试完成后,请使用 Start-AzMigrateTestMigrationCleanup cmdlet 清理测试迁移。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
# Clean-up test migration for a replicating server
$CleanupTestMigrationJob = Start-AzMigrateTestMigrationCleanup -InputObject $ReplicatingServer
# Track job status to check for completion
while (($CleanupTestMigrationJob.State -eq "InProgress") -or ($CleanupTestMigrationJob.State -eq "NotStarted")){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$CleanupTestMigrationJob = Get-AzMigrateJob -InputObject $CleanupTestMigrationJob
}
# Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $CleanupTestMigrationJob.State
验证测试迁移是否按预期方式工作后,可以使用以下 cmdlet 迁移复制服务器。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
如果不想关闭源服务器,则不要使用 TurnOffSourceServer
参数。
# Start migration for a replicating server and turn off source server as part of migration
$MigrateJob = Start-AzMigrateServerMigration -InputObject $ReplicatingServer -TurnOffSourceServer
# Track job status to check for completion
while (($MigrateJob.State -eq 'InProgress') -or ($MigrateJob.State -eq 'NotStarted')){
#If the job hasn't completed, sleep for 10 seconds before checking the job status again
sleep 10;
$MigrateJob = Get-AzMigrateJob -InputObject $MigrateJob
}
#Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded".
Write-Output $MigrateJob.State
完成迁移后,停止本地计算机的复制,并使用以下 cmdlet 清除 VM 的复制状态信息。 cmdlet 将返回一个作业,跟踪该作业可监视操作的状态。
# Stop replication for a migrated server $StopReplicationJob = Remove-AzMigrateServerReplication -InputObject $ReplicatingServer
# Track job status to check for completion while (($StopReplicationJob.State -eq 'InProgress') -or ($StopReplicationJob.State -eq 'NotStarted')){ #If the job hasn't completed, sleep for 10 seconds before checking the job status again sleep 10; $StopReplicationJob = Get-AzMigrateJob -InputObject $StopReplicationJob } # Check if the Job completed successfully. The updated job state of a successfully completed job should be "Succeeded". Write-Output $StopReplicationJob.State
执行任何迁移后的应用调整,例如更新数据库连接字符串和 Web 服务器配置。
对 Azure 中当前运行的迁移应用程序执行最终的应用程序和迁移验收测试。
将流量交接到已迁移的 Azure VM 实例。
从本地 VM 清单中删除本地 VM。
从本地备份中删除本地 VM。
更新所有内部文档,以显示新的位置和 Azure VM 的 IP 地址。
- 为增强恢复能力,请采取以下措施:
- 为提高安全性,请采取以下措施:
使用 Microsoft Defender for Cloud - 即时管理锁定和限制入站流量访问。
使用网络安全组限制流入管理终结点的网络流量。
部署 Azure 磁盘加密以帮助保护磁盘,并保护数据以防被盗和未经授权的访问。
- 对于监视和管理:
- 考虑部署 Microsoft 成本管理以监视资源使用率和支出。