次の方法で共有


VMware VM を Azure に移行する (エージェントレス) - PowerShell

この記事では、移行およびモダン化用に Azure PowerShell を使用して、検出された VMware 仮想マシン (VM) をエージェントレス方式で移行する方法について説明します。

学習内容は次のとおりです。

  • Azure Migrate プロジェクト内の検出された VMware VM を取得します。
  • VM のレプリケートを開始します。
  • VM をレプリケートするためのプロパティを更新します。
  • レプリケーションを監視します。
  • すべてが想定どおりに動作していることを確認するためにテスト移行を実行します。
  • 完全な VM 移行を実行します。

Note

チュートリアルでは、概念実証をすばやく設定できるように、シナリオの最も簡単なデプロイ パスを示します。 チュートリアルでは、可能な限り既定のオプションを使用しており、使用可能な設定とパスをすべて示しているわけではありません。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

前提条件

このチュートリアルを始める前に、次の準備が必要です。

Azure Migrate PowerShell モジュールをインストールする

Azure Migrate PowerShell モジュールは Azure PowerShell (Az) の一部として利用できます。 Get-InstalledModule -Name Az.Migrate コマンドを実行して、Azure Migrate PowerShell モジュールがコンピューターにインストールされているかどうかを確認します。

Azure サブスクリプションにサインインします。

Connect-AzAccount コマンドレットを使用して、Azure サブスクリプションにサインインします。

Connect-AzAccount

Azure サブスクリプションを選択します。

Get-AzSubscription コマンドレットを使用して、アクセスできる Azure サブスクリプションのリストを取得します。 Set-AzContext コマンドレットを使用して、使用する Azure Migrate プロジェクトを含む Azure サブスクリプションを選択します。

Set-AzContext -SubscriptionId 00000000-0000-0000-0000-000000000000

Azure Migrate プロジェクトを取得する

Azure Migrate のプロジェクトは、評価または移行しようとしている環境から収集された検出、評価、移行のメタデータを格納するために使用されます。 プロジェクト内で、検出された資産を追跡し、評価を調整して、移行を実行することができます。

前提条件の一部として、Azure Migrate プロジェクトが既に作成されています。 Get-AzMigrateProject コマンドレットを使用して、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 プロジェクト内の検出された VM を取得する

Azure Migrate & 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 プロジェクト内に複数のアプライアンスがある場合は、ProjectNameResourceGroupNameApplianceName の各パラメーターを使用することで、特定の 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 リソースを VM の移行に利用します。 移行およびモダン化によって、プロジェクトと同じリソース グループに次のリソースがプロビジョニングされます。

  • サービス バス: 移行およびモダン化では、サービス バスを使用して、レプリケーション オーケストレーション メッセージをアプライアンスに送信します。
  • ゲートウェイ ストレージ アカウント: 移行およびモダン化では、ゲートウェイ ストレージ アカウントを使用して、レプリケートされる VM に関する状態情報を保存します。
  • ログ ストレージ アカウント: Azure Migrate アプライアンスでは、VM のレプリケーション ログをログ ストレージ アカウントにアップロードします。 Azure Migrate により、レプリケーション情報がレプリカ マネージド ディスクに適用されます。
  • キー コンテナー: Azure Migrate アプライアンスでは、キー コンテナーを使用して、サービス バスの接続文字列と、レプリケーションで使用されるストレージ アカウントのアクセス キーを管理します。

Azure Migrate プロジェクト内の最初の VM をレプリケートする前に、次のコマンドを実行してレプリケーション インフラストラクチャをプロビジョニングします。 このコマンドを使用して、VMware VM の移行を開始できるように、前述のリソースをプロビジョニングして構成します。

Note

1 つの Azure Migrate プロジェクトによって、1 つの Azure リージョンへの移行のみがサポートされます。 このスクリプトを実行すると、VMware VM の移行先となるターゲット リージョンを変更できなくなります。 Azure Migrate プロジェクト内に新しいアプライアンスを構成する場合は、Initialize-AzMigrateReplicationInfrastructure コマンドを実行する必要があります。

この記事では、VM を Central US リージョンに移行できるように、レプリケーション インフラストラクチャを初期化します。

# Initialize replication infrastructure for the current Migrate project
Initialize-AzMigrateReplicationInfrastructure -ResourceGroupName $ResourceGroup.ResourceGroupName -ProjectName $MigrateProject. Name -Scenario agentlessVMware -TargetRegion "CentralUS" 

VM をレプリケートする

レプリケーションインフラストラクチャの検出と初期化が完了したら、Azure への VMware VM のレプリケーションを開始できます。 最大 500 件のレプリケーションを同時に実行できます。

レプリケーションのプロパティを指定するには、次の表を使用します。

パラメーター 説明
ターゲットのサブスクリプションとリソース グループ 必須 TargetResourceGroupId パラメーターを使用してリソース グループ ID を指定することにより、VM の移行先となるサブスクリプションとリソース グループを指定します。
ターゲットの仮想ネットワークとサブネット 必須 TargetNetworkId パラメーターと TargetSubnetName パラメーターを使用して、VM の移行先となる Azure 仮想ネットワーク インスタンスの ID とサブネットの名前をそれぞれ指定します。
マシン ID Mandatory レプリケートして移行する必要がある検出済みマシンの 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 ディスク Mandatory オペレーティング システムのブートローダーとインストーラーがあるディスクの一意識別子を指定します。 使用するディスク ID は、Get-AzMigrateDiscoveredServer コマンドレットを使用して取得したディスクの一意識別子 (UUID) プロパティです。
ディスクの種類 Mandatory 使用するディスクの種類を指定します。
インフラストラクチャの冗長性 省略可能 次のようにインフラストラクチャ冗長オプションを指定します。

- 可用性ゾーン: 移行したマシンをリージョン内の特定の可用性ゾーンに固定します。 このオプションを使用して、複数ノードのアプリケーション層を形成するサーバーを可用性ゾーン間で分散させます。 このオプションは、移行用に選択したターゲット リージョンで可用性ゾーンがサポートされている場合にのみ使用できます。 可用性ゾーンを使用するには、TargetAvailabilityZone パラメーターに可用性ゾーンの値を指定します。
- 可用性セット: 移行したマシンを可用性セットに配置します。 このオプションを使用するには、選択したターゲット リソース グループに 1 つ以上の可用性セットが必要です。 可用性セットを使用するには、TargetAvailabilitySet パラメーターに可用性セット ID を指定します。
ブート診断ストレージ アカウント 省略可能 ブート診断ストレージ アカウントを使用するには、TargetBootDiagnosticStorageAccount パラメーターに ID を指定します。
- ブート診断に使用するストレージ アカウントは、VM の移行先と同じサブスクリプションに存在する必要があります。
- 既定では、このパラメーターに値は設定されません。
Tags 省略可能 移行した VM、ディスク、NIC にタグを追加します。
VM、ディスク、NIC にタグを追加するには、Tag を使用します。または
- 移行した VM にタグを追加するには、VMTag を使用します。
- ディスクにタグを追加するには、DiskTag を使用します。
- ネットワーク インターフェイスにタグを追加するには、NicTag を使用します。
たとえば、必要なタグを変数 $tags に追加し、その変数を必要なパラメーターに渡します。$tags = @{Organization=”Contoso”}

すべてのディスクを使用して VM をレプリケートする

このチュートリアルでは、検出された VM のすべてのディスクをレプリケートし、Azure での VM の新しい名前を指定します。 検出されたサーバーの最初のディスクを OS ディスクとして指定して、すべてのディスクを Standard HDD として移行します。 OS ディスクは、オペレーティング システムのブートローダーとインストーラーがあるディスクです。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

# 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 コマンドレットを使用し、それを New-AzMigrateServerReplication コマンドレットの DiskToInclude パラメーターへの入力として指定することにより、検出された VM のディスクを選択的にレプリケートすることもできます。 New-AzMigrateDiskMapping コマンドレットを使用して、レプリケートする個々のディスクごとに異なるターゲット ディスクの種類を指定することもできます。

New-AzMigrateDiskMapping コマンドレットの次のパラメーターの値を指定します。

  • DiskId: 移行するディスクの一意識別子を指定します。 使用するディスク ID は、Get-AzMigrateDiscoveredServer コマンドレットを使用して取得したディスクの UUID プロパティです。
  • IsOSDisk: 移行するディスクが VM の OS ディスクである場合は true を指定します。 そうでない場合は、false を指定します。
  • DiskType: Azure で使用するディスクの種類を指定します。

次の例では、検出された VM の 2 つのディスクのみをレプリケートします。 OS ディスクを指定し、レプリケートするディスクごとに異なるディスクの種類を使用します。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

# 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 コマンドレットを使用して、レプリケーションの状態を追跡します。

# 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

出力の移行状態 (MigrationState) および移行状態の説明 (MigrationStateDescription) プロパティを追跡できます。

  • 初期レプリケーションでは、[移行状態] プロパティと [移行状態の説明] プロパティの値は、それぞれ InitialSeedingInProgressInitial replication になります。
  • 差分レプリケーションの実行中、[移行状態] プロパティと [移行状態の説明] プロパティの値は、それぞれ ReplicatingReady to migrate になります。
  • 移行が完了すると、[移行状態] プロパティと [移行状態の説明] プロパティの値は、それぞれ Migration succeededMigrated になります。
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

レプリケーションの進行状況の詳細を確認するには、次のコマンドレットを実行します。

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 コマンドレットを使用して、ジョブの状態を監視できます。

# Retrieve the updated status for a job
$job = Get-AzMigrateJob -InputObject $job

レプリケートする VM のプロパティを更新する

移行およびモダン化を使用すると、レプリケートする 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 コマンドレットを使用して NIC の構成を指定できます。 このオブジェクトは、Set-AzMigrateServerReplication コマンドレットの NicToUpdate パラメーターへの入力として渡されます。

- IP 割り当ての変更: NIC の静的 IP を指定するには、TargetNicIP パラメーターを使用して、VM の静的 IP として使用する IPv4 アドレスを指定します。 NIC の IP を動的に割り当てるには、TargetNicIP パラメーターの値として auto を指定します。
- 値 PrimarySecondary または DoNotCreateTargetNicSelectionType パラメーターに使用して、移行した VM 上で NIC をプライマリにするか、セカンダリにするか、作成しないかを指定します。 VM のプライマリ NIC として指定できる NIC は 1 つだけです。
- NIC をプライマリにするには、移行した VM 上でセカンダリにする他の NIC を指定するか、作成しないかも指定する必要があります。
- NIC のサブネットを変更するには、TargetNicSubnet パラメーターを使用してサブネットの名前を指定します。
ネットワーク インターフェイス 省略可能 TargetVMName パラメーターを使用して、作成する Azure VM の名前を指定します。
可用性ゾーン 省略可能 可用性ゾーンを使用するには、TargetAvailabilityZone パラメーターに可用性ゾーンの値を指定します。
可用性セット 省略可能 可用性セットを使用するには、TargetAvailabilitySet パラメーターに可用性セット ID を指定します。
Tags 省略可能 タグの更新では、次のパラメーターを使用します。UpdateTag または UpdateVMTagUpdateDiskTagUpdateNicTag、およびタグの更新操作の種類 UpdateTagOperation または UpdateVMTagOperationUpdateDiskTagOperationUpdateNicTagOperation。 タグの更新操作では、次の値を受け取ります。Merge、Delete、および Replace。
VM、ディスク、NIC にわたってすべてのタグを更新するには、UpdateTag を使用します。
VM のタグを更新するには、UpdateVMTag を使用します。
ディスクのタグを更新するには、UpdateDiskTag を使用します。
NIC のタグを更新するには、UpdateNicTag を使用します。
VM、ディスク、NIC にわたってすべてのタグの操作を更新するには、UpdateTagOperation を使用します。
VM のタグを更新するには、UpdateVMTagOperation を使用します。
ディスクのタグを更新するには、UpdateDiskTagOperation を使用します。
NIC のタグを更新するには、UpdateNicTagOperation を使用します。

replace オプションを使用すると、既存のタグのセット全体が新しいセットに置き換えられます。
merge オプションを使用すると、新しい名前でタグを追加したり、既存の名前を使用してタグの値を更新したりできます。
delete オプションを使用すると、特定の名前、または名前と値のペアに基づいてタグを選択的に削除できます。
ディスク 省略可能 OS ディスクの場合:
- TargetDiskName パラメーターを使用して OS ディスクの名前を更新します。

複数のディスクを更新する場合:
- Set-AzMigrateDiskMapping を使用して、ディスク名を変数 $DiskMapping に設定します。 次に、DiskToUpdate パラメーターを使用して、変数を渡します。

Set-AzMigrateDiskMapping で使用するディスク ID は、Get-AzMigrateDiscoveredServer コマンドレットを使用して取得したディスクの UUID プロパティです。
NIC の名前 省略可能 New-AzMigrateNicMapping を使用して、NIC の名前を変数 $NICMapping に設定します。 次に、NICToUpdate パラメーターを使用して、変数を渡します。

Get-AzMigrateServerReplication コマンドレットにより、操作の状態を監視するために追跡できるジョブが返されます。

# 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

次の例では、1 番目の NIC をプライマリにし、それに静的 IP を割り当てて、NIC の構成を更新します。 移行のために 2 番目の 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 のテスト移行を実行できます。 各マシンで少なくとも 1 回は、移行前にテスト移行を実行することを強くお勧めします。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

  • テスト移行を実行すると、移行が想定どおりに動作することを確認できます。 テスト移行を行ってもオンプレミス マシンは影響を受けずに引き続き動作し、レプリケーションが続行されます。
  • テスト移行では、レプリケートされたデータを使用して 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 コマンドレットを使用してテスト移行をクリーンアップします。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

# 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

VM の移行

テスト移行が想定どおりに動作することを確認したら、次のコマンドレットを使用して、レプリケートするサーバーを移行できます。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

移行元サーバーの電源がオフにならないようにするには、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

移行を完了する

  1. 移行が完了したら、次のコマンドレットを使用して、オンプレミス マシンのレプリケーションを停止し、VM のレプリケーション状態情報をクリーンアップします。 コマンドレットは、操作の状態を監視するために追跡できるジョブを返します。

    # 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
    
  2. データベース接続文字列、および Web サーバー構成の更新など、移行後のアプリの微調整を実行します。

  3. Azure で現在実行されている移行後のアプリケーション上で、最終的なアプリケーションと移行の受け入れのテストを実行します。

  4. 移行された Azure VM インスタンスにトラフィックを切り替えます。

  5. ローカル VM インベントリからオンプレミスの VM を削除します。

  6. ローカル バックアップからオンプレミスの VM を削除します。

  7. Azure VM の新しい場所と IP アドレスを示すように内部ドキュメントを更新します。

移行後のベスト プラクティス