VHD を Azure にアップロードするか、他のリージョンにマネージド ディスクをコピーする - Azure CLI

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット

この記事では、ローカル コンピューターから Azure マネージド ディスクに VHD をアップロードする方法や、AzCopy を使用してマネージド ディスクを別のリージョンにコピーする方法について説明します。 このプロセス (直接アップロード) を使用すると、VHD を最大 32 TiB のサイズで直接マネージド ディスクにアップロードすることができます。 現在、直接アップロードは Ultra Disks、Premium SSD v2、Premium SSD、Standard SSD、Standard HDD でサポートされています。

Azure の IaaS VM 向けにバックアップ ソリューションを提供している場合は、直接アップロードを使用して顧客のバックアップをマネージド ディスクに復元する必要があります。 Azure の外部のソースから VHD をアップロードする場合、速度はご利用のローカル帯域幅によって異なります。 Azure VM からアップロードまたはコピーを行う場合、帯域幅は標準の HDD と同じになります。

Microsoft Entra ID を使用してアップロードをセキュリティで保護する

Microsoft Entra ID を使用してリソース アクセスを制御している場合は、それを使用して Azure マネージド ディスクのアップロードを制限できるようになりました。 この機能は、すべてのリージョンで GA オファリングとして利用できます。 ユーザーがディスクをアップロードしようとすると、Azure により、要求しているユーザーの ID が Microsoft Entra ID で検証されて、ユーザーが必要なアクセス許可を持っていることが確認されます。 システム管理者は、さらに高い Azure アカウントまたはサブスクリプションのレベルでポリシーを設定して、ディスクまたはディスク スナップショットのアップロードを許可する前に、アップロードに必要なアクセス許可を Microsoft Entra の ID が持っていることを確認できます。 Microsoft Entra ID でアップロードをセキュリティ保護する方法についてご質問がある場合は、azuredisks@microsoft .com までメールでお問い合わせください

前提条件

制限

  • VHD を空のスナップショットにアップロードすることはできません。
  • Azure Backup では、Microsoft Entra ID でセキュリティ保護されたディスクは現在サポートされていません。
  • Azure Site Recovery では、Microsoft Entra ID でセキュリティ保護されたディスクは現在サポートされていません。

RBAC ロールを割り当てる

Microsoft Entra ID を使用してセキュリティで保護されたマネージド ディスクにアクセスするには、要求するユーザーに、マネージド ディスクのデータ オペレーター ロール、または次のアクセス許可を持つカスタム ロールが必要です。

  • Microsoft.Compute/disks/download/action
  • Microsoft.Compute/disks/upload/action
  • Microsoft.Compute/snapshots/download/action
  • Microsoft.Compute/snapshots/upload/action

ロールの割り当ての詳細な手順については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。 カスタム ロールを作成または更新するには、「Azure CLI を使用して Azure カスタム ロールを作成または更新する」を参照してください。

はじめに

GUI を使用してディスクをアップロードする場合は、Azure Storage Explorer を使用します。 詳細については、次を参照してください。Azure Storage Explorer を使用して Azure マネージド ディスクを管理する

前提条件

ご利用の VHD を Azure にアップロードするには、このアップロード プロセス用に構成された空のマネージド ディスクを作成する必要があります。 作成する前に、それらのディスクについて把握しておく必要がある追加情報があります。

この種類のマネージド ディスクには、2 つの固有の状態があります。

  • ReadToUpload。ディスクはアップロードを受け取る準備ができていますが、Secure Access Signature (SAS) が生成されていないことを意味します。
  • ActiveUpload。ディスクはアップロードを受け取る準備ができており、SAS が生成済みであることを意味します。

注意

これらのいずれかの状態にある間は、実際のディスクの種類に関係なく、マネージド ディスクには Standard HDD 料金が課金されます。 たとえば、P10 は S10 として課金されます。 これは、revoke-access がマネージド ディスク上で呼び出される (ディスクを VM にアタッチするために必要な処理) まで当てはまります。

空のマネージド ディスクを作成する

アップロード用に空の標準 HDD を作成するには、事前に、アップロードする VHD のファイル サイズ (バイト単位) が必要です。 これを取得するには、wc -c <yourFileName>.vhd または ls -al <yourFileName>.vhd を使用できます。 この値は、 --upload-size-bytes パラメーターを指定するときに使用します。

アップロード用の空の標準 HDD を作成するには、disk create コマンドレットに、 --for-upload パラメーターと --upload-size-bytes パラメーターの両方を指定します。

<yourdiskname><yourresourcegroupname><yourregion> をご自身で選んだ値に置き換えます。 --upload-size-bytes パラメーターには例の値 34359738880 が含まれており、それを適切な値に置き換えます。

重要

OS ディスクを作成する場合は、--hyper-v-generation <yourGeneration>az disk create に追加します。

Microsoft Entra ID を使ってアップロードをセキュリティ保護している場合は、-dataAccessAuthmode 'AzureActiveDirectory' を追加します。 Ultra Disk または Premium SSD v2 にアップロードする場合は、ターゲット ディスクの正しいセクター サイズを選択する必要があります。 論理セクター サイズが 4k の VHDX ファイルを使用している場合は、ターゲット ディスクを 4k に設定する必要があります。 論理セクター サイズが 512 の VHD ファイルを使用している場合は、ターゲット ディスクを 512 に設定する必要があります。

論理セクター サイズが 512k の VHDX ファイルはサポートされていません。

##For Ultra Disk or Premium SSD v2, add --logical-sector-size and specify either 512 or 4096, depending on if you're using a VHD or VHDX

az disk create -n <yourdiskname> -g <yourresourcegroupname> -l <yourregion> --os-type Linux --for-upload --upload-size-bytes 34359738880 --sku standard_lrs

別の種類のディスクをアップロードする場合は、standard_lrspremium_lrspremium_zrsstandardssd_lrsstandardssd_zrspremiumv2_lrs、または ultrassd_lrs に置き換えます。

(省略可能) ディスクへのアクセスを許可する

Microsoft Entra ID を使ってアップロードをセキュリティ保護してい場合は、RBAC アクセス許可を割り当てて、ディスクへのアクセスを許可し、書き込み可能な SAS を生成する必要があります。

az role assignment create --assignee "{assignee}" \
--role "{Data Operator for Managed Disks}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{diskName}"

書き込み可能な SAS を生成する

アップロード プロセス用に構成された空のマネージド ディスクを作成したので、そこに VHD をアップロードすることができます。 VHD をそのディスクにアップロードするには、書き込み可能な SAS をアップロード先として参照できるように用意する必要があります。

空のマネージド ディスクの書き込み可能な SAS を生成するには、<yourdiskname><yourresourcegroupname> を置き換えてから、次のコマンドを使用します。

az disk grant-access -n <yourdiskname> -g <yourresourcegroupname> --access-level Write --duration-in-seconds 86400

戻り値のサンプル:

{
  "accessSas": "https://md-impexp-t0rdsfgsdfg4.blob.core.windows.net/w2c3mj0ksfgl/abcd?sv=2017-04-17&sr=b&si=600a9281-d39e-4cc3-91d2-923c4a696537&sig=xXaT6mFgf139ycT87CADyFxb%2BnPXBElYirYRlbnJZbs%3D"
}

VHD または VHDX をアップロードする

空のマネージド ディスク用の SAS が用意できたので、それを使用して、マネージド ディスクをアップロード コマンドのアップロード先として設定できます。

AzCopy v10 を使用して、生成した SAS URI を指定してローカルの VHD または VHDX ファイルをマネージド ディスクにアップロードします。

このアップロードのスループットは、同等の Standard HDD と同じです。 たとえば、S4 と同等のサイズの場合、最大 60 MiB/秒のスループットが得られます。 ただし、S70 と同等のサイズの場合、最大 500 MiB/秒のスループットが得られます。

AzCopy.exe copy "c:\somewhere\mydisk.vhd" "sas-URI" --blob-type PageBlob

アップロードが完了し、ディスクにこれ以上データを書き込む必要がなくなったら、SAS を無効にします。 SAS を無効にすると、マネージド ディスクの状態が変わり、そのディスクを VM にアタッチできるようになります。

<yourdiskname><yourresourcegroupname> を置き換えたうえで、次のコマンドを使ってディスクを使用可能にします。

az disk revoke-access -n <yourdiskname> -g <yourresourcegroupname>

マネージド ディスクをコピーする

ダイレクト アップロードを行うと、マネージド ディスクをコピーするプロセスも簡略化されます。 同じリージョン内またはリージョン間で (別のリージョンへ) コピーできます。

次のスクリプトでは、これが自動的に実行されます。このプロセスは前述の手順と似ていますが、既存のディスクに対して作業しているため、いくつかの違いがあります。

重要

Azure のマネージド ディスクのディスク サイズ (バイト単位) を指定する場合は、512 のオフセットを追加する必要があります。 これは、Azure からディスク サイズが返されるときにフッターが省略されるためです。 この操作を行わないと、コピーは失敗します。 次のスクリプトでは、この操作が自動的に行われています。

<sourceResourceGroupHere><sourceDiskNameHere><targetDiskNameHere><targetResourceGroupHere><yourTargetLocationHere> (場所の値の例: uswest2) を実際の値に置き換えたら、次のスクリプトを実行してマネージド ディスクをコピーします。

ヒント

OS ディスクを作成する場合は、--hyper-v-generation <yourGeneration>az disk create に追加します。

sourceDiskName=<sourceDiskNameHere>
sourceRG=<sourceResourceGroupHere>
targetDiskName=<targetDiskNameHere>
targetRG=<targetResourceGroupHere>
targetLocation=<yourTargetLocationHere>
#Expected value for OS is either "Windows" or "Linux"
targetOS=<yourOSTypeHere>

sourceDiskSizeBytes=$(az disk show -g $sourceRG -n $sourceDiskName --query '[diskSizeBytes]' -o tsv)

az disk create -g $targetRG -n $targetDiskName -l $targetLocation --os-type $targetOS --for-upload --upload-size-bytes $(($sourceDiskSizeBytes+512)) --sku standard_lrs

targetSASURI=$(az disk grant-access -n $targetDiskName -g $targetRG  --access-level Write --duration-in-seconds 86400 --query [accessSas] -o tsv)

sourceSASURI=$(az disk grant-access -n $sourceDiskName -g $sourceRG --duration-in-seconds 86400 --query [accessSas] -o tsv)

azcopy copy $sourceSASURI $targetSASURI --blob-type PageBlob

az disk revoke-access -n $sourceDiskName -g $sourceRG

az disk revoke-access -n $targetDiskName -g $targetRG

次のステップ

これでマネージド ディスクに VHD が正常にアップロードされたので、ディスクを既存の VM にデータ ディスクとして接続するか、ディスクを OS ディスクとして VM に接続して、新しい VM を作成することができます。

その他の質問がある場合は、FAQ のマネージド ディスクのアップロードに関するセクションを参照してください。