管理ディスク (Managed Disks) のサブスクリプション間やリソース グループ間の移行について

a-wataka

こんにちは。Azure サポートチームの高橋です。

今回は、管理ディスク (Managed Disks) のサブスクリプション間やリソース グループ間の移行についてご案内します。

※本情報の内容(添付文書、リンク先などを含む)は、更新日時点でのものであり、予告なく変更される場合があります。

※[2019/01/07 追記]注意: VHDとしてエクスポートする際は仮想マシンの停止が必要です。

現時点では、管理ディスク (Managed Disks) は、サブスクリプション間やリソース グループ間の移行に対応しておりません。

そのため、管理ディスクのサブスクリプション間やリソース グループ間の移行を考える際には、管理ディスクを一度、非管理ディスクの VHD にエクスポートするひと手間が必要です。

ポータル (https://portal.azure.com/) から、管理ディスクを VHD にエクスポートすることも可能ですが、エクスポートに際し、生成した URL にアクセスするとローカルに VHD をダウンロードする動作となり、Azure 環境で本 VHD を使用する場合には、ローカルにダウンロードした VHD を Azure ストレージにアップロードするという非効率な手順となります。

 

Azure PowerShell や Azure CLI 2.0 を使用しますとローカルに VHD をダウンロードすることなく、他のサブスクリプションや他のリソース グループのストレージ アカウントに直接、VHD としてエクスポートすることが可能です。

管理ディスクを VHD にエクスポート後にも元の管理ディスクは削除されたりせず、リソースとして残ります。

なお、Azure PowerShell / Azure CLI 2.0 どちらにおいてもコマンド実行前に仮想マシンの状態を "停止済み (割り当て解除)" に変更していただきますようお願いいたします。

Azure PowerShell の場合


# コピー元の情報

# ログイン

Login-AzureRmAccount

Select-AzureRmSubscription -SubscriptionId "サブスクリプション ID"

 

# ディスクの情報

$sourcergname = "コピー元のリソース グループ名"

$diskname = "コピーするディスク リソース名"

 

# SAS URL の作成

$mdiskURL = Grant-AzureRmDiskAccess -ResourceGroupName $sourcergname -DiskName $diskname -Access Read -DurationInSecond 3600

 

# コピー先の情報

# ログイン

Login-AzureRmAccount

Select-AzureRmSubscription -SubscriptionId "サブスクリプション ID"

 

# コピー先の各種パラメーター

$targetrgname = "コピー先のリソース グループ名"

$storageacccountname = "コピー先のストレージ アカウント名"

$countainername = "コピー先のコンテナー名"

 

$storageacccountkey = Get-AzureRmStorageAccountKey -ResourceGroupName $targetrgname -Name $storageacccountname

$storagectx = New-AzureStorageContext -StorageAccountName $storageacccountname -StorageAccountKey $storageacccountkey[0].Value

$targetcontainer = Get-AzureStorageContainer -Name $countainername -Context $storagectx

 

$destdiskname = "VHD 名.vhd"

$sourceSASurl = $mdiskURL.AccessSAS

 

# コピー

$ops = Start-AzureStorageBlobCopy -AbsoluteUri $sourceSASurl -DestBlob $destdiskname -DestContainer $targetcontainer.Name -DestContext $storagectx

Get-AzureStorageBlobCopyState -Container $targetcontainer.Name -Blob $destdiskname -Context $storagectx -WaitForComplete

 

ご参考 URL :

 

その後の特殊化 VM 作成までの手順は、以下の URL をご参考ください。

 

VHD より管理ディスクを作成し、VM を作成する場合 :

 

VHD より VM を作成する場合 :

 

Azure CLI 2.0 の場合 


1. 以下のコマンドを実行し、ログインします。

az login

 

2. 以下のコマンドを実行し、VHD としてエクスポートする "ディスク" リソースとリソース グループ名を指定し、SAS を生成します。

az disk grant-access --duration-in-seconds 3600 --name <ディスク名> --resource-group <リソースグループ名>

 

コマンド実行例 : )

az disk grant-access --duration-in-seconds 3600 --name JPVMWinOSDisk --resource-group Win-RG

 

以下のような実行結果が出力されます。

実行結果例 : )

{

"accessSas": "https://cd-nl1mdfkb4x0x.blob.core.windows.net/dc1hzqq2ghdr/abcd?sv=2016-05-31&sr=b&si=c64a658b-0c53-410d-8c23-82c03d8c7123&sig=sjPUgp3P6D5bATvGAvoY5sN7hH%2F%2FWNzMFQDot6iKbrI%2A"

}

 

3. 以下のコマンドを実行し、生成した SAS を利用して、指定したストレージに VHD としてエクスポートします。

az storage blob copy start --account-name <コピー先ストレージ アカウント名> --account-key <コピー先ストレージのアクセス キー> --destination-container <コピー先のコンテナー名> --destination-blob <コピー後の VHD 名>.vhd --source-uri "生成した accessSas の URL"

 

コマンド実行例 : )

az storage blob copy start --account-name win10rg559 --account-key 1111111v3Dxe1ykt7ChG2WIfEAFykZhkkCKVX3lLDC0bIN1CKcIpSMHgz4FkKvVWD1D9S3Td1SRNfgdtG4ZRug== --destination-container vhds --destination-blob myosdisk.vhd --source-uri "https://cd-nl1mdfkb4x0x.blob.core.windows.net/dc1hzqq2ghdr/abcd?sv=2016-05-31&sr=b&si=c64a658b-0c53-410d-8c23-82c03d8c7123&sig=sjPUgp3P6D5bATvGAvoY5sN7hH%2F%2FWNzMFQDot6iKbrI%2A"

 

ご参考 URL :

 

 

その後の特殊化 VM 作成の手順は、以下をご参考ください。

 

VHD より管理ディスクを作成し、VM を作成する場合 :

1. VHD より管理ディスクを作成します。

az disk create --resource-group "リソース グループ名" --name "作成する管理ディスク名" --source "VHD のフル URL" --sku "Premium_LRS or Standard_LRS"

コマンド実行例 : )

az disk create --resource-group wataka-RG --name CliManagedDisk --source https://win10rg559.blob.core.windows.net/vhds/myosdisk.vhd --sku Standard_LRS

 

2. VM を作成します。

az vm create --name "VM 名" --resource-group "リソース グループ名" --attach-os-disk "管理ディスク名" --size "VM のサイズ" --os-type "Windows or Linux"

コマンド実行例 : )

az vm create --name cliVM --resource-group wataka-RG --attach-os-disk CliManagedDisk --size Standard_D1 --os-type Windows

 

VHD より VM を作成する場合 :

az vm create --name "VM 名" --resource-group "リソース グループ名" --attach-os-disk "VHD のフル URL" --use-unmanaged-disk --size "VM のサイズ" --os-type "Windows or Linux"

 

コマンド実行例 : )

az vm create --name cliVM2 --resource-group wataka-RG  --attach-os-disk https://win10rg559.blob.core.windows.net/vhds/myosdisk.vhd --use-unmanaged-disk --size Standard_D1 --os-type Windows

 

Azure CLI 2.0 については以下の記事をご参考ください。