管理ディスク (Managed Disks) のサブスクリプション間やリソース グループ間の移行について
こんにちは。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 :
- Azure Managed Disks Deep Dive, Lessons Learned and Benefits | "Image Sharing" の部分をご参考ください。
https://blogs.msdn.microsoft.com/igorpag/2017/03/14/azure-managed-disks-deep-dive-lessons-learned-and-benefits/
その後の特殊化 VM 作成までの手順は、以下の URL をご参考ください。
VHD より管理ディスクを作成し、VM を作成する場合 :
- 既存の VHD を管理ディスク (Managed Disk) に変換し、VM をデプロイする
https://blogs.technet.microsoft.com/jpaztech/2017/05/01/convertvhdtomanageddiskdeployvm/
VHD より VM を作成する場合 :
- 特殊化 VHD ファイルから ARM 環境へ仮想マシンをデプロイする Azure PowerShell
https://blogs.technet.microsoft.com/jpaztech/2017/05/24/deployfromspecializedvhd-powershell/
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 :
- Managed Disks - az disk | az disk grant-access
/en-us/cli/azure/disk#grant-access
- Blob storage copy operations - az storage blob copy
/en-us/cli/azure/storage/blob/copy
その後の特殊化 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 については以下の記事をご参考ください。
- Azure CLI 2.0 あれこれ 入門編
https://blogs.technet.microsoft.com/jpaztech/2017/04/28/azure-cli-2-0-helloworld/
- Azure CLI 2.0 あれこれ 活用編
https://blogs.technet.microsoft.com/jpaztech/2017/06/01/azure-cli-2-0-advanced/