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 までメールでお問い合わせください
前提条件
- Azure CLI のインストールを実行します。
制限
- 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 マネージド ディスクを管理する
前提条件
- 最新バージョンの AzCopy v10 をダウンロードします。
- Azure CLI のインストールを実行します。
- オンプレミスから VHD をアップロードする場合: ローカルに保存され、Azure 用に準備された固定サイズの VHD。
- または、コピー操作を実行する場合は、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_lrs を premium_lrs、premium_zrs、standardssd_lrs、standardssd_zrs、premiumv2_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 をアップロード先として参照できるように、用意する必要があります。
重要
2025 年 2 月 15 日に、ディスクとスナップショットの Shared Access Signature (SAS) のアクセス タイムは最大 60 日に制限されます。 有効期限が 60 日を超える SAS を生成しようとすると、エラーが発生します。 有効期限が 60 日を超える既存のディスクまたはスナップショット SAS は、作成日から 60 日後に動作を停止する可能性があり、認可中に 403 エラーが発生します。
マネージド ディスクまたはスナップショット SAS の有効期限が 60 日を超える場合は、アクセスを取り消し、60 日間 (5,184,000 秒) 以下のアクセスを要求する新しい SAS を生成します。 有効期限が短い SAS を使用して全体的なセキュリティを強化します。 サービスの中断を防ぐために、2025 年 2 月 15 日より前にこれらの変更を行います。 次のリンクを使用して、新しい SAS を検索、取り消し、要求できます。
- ディスクにアクティブな SAS があるかどうかを確認するには、REST API、 Azure CLI、または Azure PowerShell モジュールを使用して、DiskState プロパティを調べます。
- SAS を取り消すには、REST API、Azure CLI、または Azure PowerShell モジュールのいずれかを使用します。
- SAS を作成するには、REST API、Azure CLI、または Azure PowerShell モジュールのいずれかを使用し、アクセス期間を 5,184,000 秒以下に設定します。
空のマネージド ディスクの書き込み可能な 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 のマネージド ディスクのアップロードに関するセクションを参照してください。