クラシック環境から ARM 環境への仮想マシンの移行方法


こんにちは。Azureサポートチームの小久保です。
本日は、別のサブスクリプションの環境に仮想ネットワーク、仮想マシンを移行する方法をご紹介します。
今回、ご紹介する環境は、Azure サービス マネージャー (以下、ASM) 環境から Azure リソース マネージャー (以下、ARM) 環境への移行となっております。

ご参考


ASM 環境から ASM 環境への移行の場合は以下をご確認ください。

 

ARM 環境から ARM 環境への移行の場合は以下をご確認ください。

 

利用する場面


  • 開発用のサブスクリプションで作成した仮想マシンを本番環境用のサブスクリプションへ移行したい。
  • VHD の保存されているストレージ アカウントを移動したい。
  • ストレージ アカウントをプレミアム ストレージに変更したい。

 

前提条件


  • 移行を前提としているため、一般化していない (特殊化状態の) 仮想マシンのシナリオをご紹介します。

 

構成と作業の流れ


    1. 仮想マシンの停止
    2. 移行先のサブスクリプションに、ストレージアカウントの作成
    3. 移行先のサブスクリプションに、仮想ネットワークの作成
    4. AzCopyにて、OS ディスク、データディスクの VHDファイルの移行
      ※データディスクが存在しない場合は、OS ディスクのみ移行します。
    5. 移行した OS ディスクより、仮想マシンの作成

    Constitution3

     

    事前準備


    AzCopy ツールを利用するため、 Microsoft Azure Storage Tools を以下よりダウンロードし、
    お手元のコンピューターにインストールをお願いします。

     

    作業手順

    1. クラシック ポータル(https://manage.windowsazure.com/) より、仮想マシンを停止します。

    stopvmclassic

    2. 移行先のサブスクリプションに、ストレージアカウントを作成します。
    ストレージ アカウントを選択後、[+追加] をクリックします。
    addstorage

    新規作成するストレージアカウントの情報を入力し、「作成」ボタンをクリックします。
    ※アカウントの種類は汎用を選択します。
    ※サブスクリプションは移行先のサブスクリプションを選択します。

    addstorageproperty2

    3. 移行先のサブスクリプションに、仮想ネットワークを作成します。
    仮想ネットワークを選択後、[+追加] をクリックします。
    addvnet

    新規作成する仮想ネットワークの情報を入力し、「作成」ボタンをクリックします。
    ※サブスクリプションは移行先のサブスクリプションを選択します。
    addvnetproperty2

    4. AzCopy を利用し、移行先のストレージアカウントへ VHD ファイルをコピーします。
    管理者権限にてコマンドプロンプトを起動し、AzCopy のディレクトリに移動し、AzCopy コマンドを実行します。
    ※同じデータセンター内での VHD ファイルの移動は無償ですが、データセンターを跨いだ VHD ファイルの移動は有償となります為、ご注意ください。

    コマンド例:

    cd C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy
    

    コマンド基本構文:

    azcopy.exe /source:<コピー元コンテナーの URL> /dest:<コピー先コンテナーの URL> /SourceKey:<コピー元ストレージ アカウントのアクセス キー> /destKey:<コピー先ストレージ アカウントのアクセス キー> /pattern:"<VHD ファイル名>.vhd"

    ※コンテナーの URL は [ストレージアカウント] ー> [概要] ー> [BLOB] ー> コンテナーの・・・を右クリックし、[プロパティ]よりご確認ください。
    VHD_URL2

    ※ASM の場合、アクセスキーは [ストレージ] ー> [アクセスキーの管理] よりご確認ください。
    accesskeyclassic

    ※ARM の場合、アクセスキーは [ストレージアカウント] ー> [アクセスキー] よりご確認ください。
    accesskeynew

    ※ VHD ファイル名は、コピー元のファイル名をご指定ください。

    AzCopy の利用方法については、以下の記事もご参照ください。

    AzCopy コマンド ライン ユーティリティを使用してデータを転送する
    https://azure.microsoft.com/ja-jp/documentation/articles/storage-use-azcopy/

    azcopy – BLOB へファイルをやったり取ったり

    http://blogs.technet.com/b/ksasaki/archive/2012/11/09/azcopy-blob.aspx

     

      5. コピーした VHD ファイルをもとに、Azure PowerShell を使用して、仮想マシンを作成します。

      ※以下のスクリプトで仮想マシンを作成する際は、上記で作成したリソースグループ、仮想ネットワークをご指定ください。

      既存の VHD から Windows 仮想マシンを作成する方法 (参照元:http://www.syuheiuda.com/?p=3489)

      #設定項目
      $SubscriptionId = "<サブスクリプション ID>"
      $ResourceGroupName = "<リソース グループ名>"
      $Location = "<リージョン>"
      $VhdUri = "<OS ディスクの VHD フルパス>"
      $VmName = "<仮想マシン名>"
      $VmSize = "<VM サイズ>"
      $VnetName = "<仮想ネットワーク名>"
      $SubnetName = "<サブネット名>"
      $Nic1Name = "<NIC 名>"
      $AvailabilitySetName = "<可用性セット名>"
      
      # ログインおよびサブスクリプションの指定
      Login-AzureRmAccount
      Select-AzureRmSubscription -SubscriptionId $SubscriptionId
      
      #対象の仮想ネットワーク、サブネット情報を取得
      $Vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $VnetName
      $Subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $Vnet
      
      # 対象の可用性セット情報を取得
      $AvailabilitySet = Get-AzureRmAvailabilitySet -Name $AvailabilitySetName -ResourceGroupName $ResourceGroupName
      
      # 仮想マシンの設定を定義
      $VmConfig = New-AzureRmVMConfig -Name $VmName -VMSize $VmSize
      $VmConfig = Set-AzureRmVMOSDisk -VM $VmConfig -VhdUri $VhdUri -Name "OSDisk" -CreateOption attach -Windows -Caching ReadWrite
      $VmConfig.AvailabilitySetReference = $AvailabilitySet.Id
      
      #NIC を作成、追加
      $Nic1 = New-AzureRmNetworkInterface -Name $Nic1Name -ResourceGroupName $ResourceGroupName -Location $Location -Subnet $Subnet
      $Nic1 = Get-AzureRmNetworkInterface -ResourceGroupName $ResourceGroupName -Name $Nic1Name
      $VmConfig = Add-AzureRmVMNetworkInterface -VM $VmConfig -NetworkInterface $Nic1
      $VmConfig.NetworkProfile.NetworkInterfaces.Item(0).Primary = $true
      
      #仮想マシンを作成
      New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VmConfig -Verbose

       

      ※ 2016/10/27: PowerShell のサンプルに追記・修正をいたしました。


      Comments (0)

      Skip to main content