VHD を Azure にアップロードするか、他のリージョンにマネージド ディスクをコピーする - Azure CLI
適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット
この記事では、ローカル コンピューターから Azure マネージド ディスクに VHD をアップロードする方法や、AzCopy を使用してマネージド ディスクを別のリージョンにコピーする方法について説明します。 このプロセス (直接アップロード) を使用すると、VHD を最大 32 TiB のサイズで直接マネージド ディスクにアップロードすることができます。 現在、直接アップロードは、Standard HDD、Standard SSD、および Premium SSD マネージド ディスクでサポートされています。 Ultra ディスクでは、まだサポートされていません。
Azure の IaaS VM 向けにバックアップ ソリューションを提供している場合は、直接アップロードを使用して顧客のバックアップをマネージド ディスクに復元する必要があります。 Azure の外部のソースから VHD をアップロードする場合、速度はご利用のローカル帯域幅によって異なります。 Azure VM からアップロードまたはコピーを行う場合、帯域幅は標準の HDD と同じになります。
Azure AD を使用してアップロードをセキュリティで保護する
Azure Active Directory (Azure AD) を使用してリソース アクセスを制御している場合は、それを使用して Azure マネージド ディスクのアップロードを制限できるようになりました。 この機能は、すべてのリージョンで GA オファリングとして利用できます。 ユーザーがディスクをアップロードしようとすると、Azure により、Azure AD で要求するユーザーの ID が検証され、ユーザーが必要なアクセス許可を持っていることが確認されます。 より高いレベルで、システム管理者は、ディスクまたはディスク スナップショットをアップロードできるようにする前に、Azure アカウントまたはサブスクリプション レベルで、アップロードするために必要なアクセス許可が Azure AD ID に与えられるようにするためのポリシーを設定できます。 Azure AD でアップロードをセキュリティ保護する方法についてご質問がある場合は、azuredisks@microsoft .com までメールでお問い合わせください
前提条件
- Azure CLI のインストールを実行します。
制限
- VHD を空のスナップショットにアップロードすることはできません。
- Azure Backup では、Azure AD でセキュリティ保護されたディスクは現在サポートされていません。
RBAC ロールを割り当てる
Azure AD を使用してセキュリティで保護されたマネージド ディスクにアクセスするには、要求するユーザーに、マネージド ディスクのデータ オペレーター ロール、または次のアクセス許可を持つカスタム ロールが必要です。
- 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
に追加します。
Azure AD を使用してディスクのアップロードをセキュリティで保護する場合は、-dataAccessAuthmode 'AzureActiveDirectory'
を追加します。
az disk create -n <yourdiskname> -g <yourresourcegroupname> -l <yourregion> --os-type Linux --for-upload --upload-size-bytes 34359738880 --sku standard_lrs
Premium SSD または Standard SSD のいずれかをアップロードする場合は、standard_lrs を premium_LRS または standardssd_lrs のいずれかに置き換えます。 現時点では、Ultra ディスクはサポートされていません。
(省略可能) ディスクへのアクセスを許可する
Azure AD を使用してアップロードをセキュリティで保護する場合は、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 のアップロード
空のマネージド ディスク用の SAS が用意できたので、それを使用して、マネージド ディスクをアップロード コマンドのアップロード先として設定できます。
AzCopy v10 を使用して、生成した SAS URI を指定してローカルの VHD ファイルをマネージド ディスクにアップロードします。
このアップロードのスループットは、同等の 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 -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 を作成することができます。