VHD を Azure にアップロードするか、他のリージョンにマネージド ディスクをコピーする - Azure PowerShellUpload a VHD to Azure or copy a managed disk to another region - Azure PowerShell

この記事では、ローカル コンピューターから Azure マネージド ディスクに VHD をアップロードする方法や、AzCopy を使用してマネージド ディスクを別のリージョンにコピーする方法について説明します。This article explains how to either upload a VHD from your local machine to an Azure managed disk or copy a managed disk to another region, using AzCopy. このプロセス (直接アップロード) を使用すると、VHD を最大 32 TiB のサイズで直接マネージド ディスクにアップロードすることもできます。This process, direct upload, also enables you to upload a VHD up to 32 TiB in size directly into a managed disk. 現在、直接アップロードは、Standard HDD、Standard SSD、および Premium SSD マネージド ディスクでサポートされています。Currently, direct upload is supported for standard HDD, standard SSD, and premium SSD managed disks. Ultra ディスクでは、まだサポートされていません。It isn't supported for ultra disks, yet.

Azure の IaaS VM 向けにバックアップ ソリューションを提供している場合は、直接アップロードを使用して顧客のバックアップをマネージド ディスクに復元することをお勧めします。If you're providing a backup solution for IaaS VMs in Azure, we recommend using direct upload to restore customer backups to managed disks. Azure の外部のソースから VHD をアップロードする場合、速度はご利用のローカル帯域幅によって異なります。When uploading a VHD from a source external to Azure, speeds would depend on your local bandwidth. Azure VM からアップロードまたはコピーを行う場合、帯域幅は標準の HDD と同じになります。When uploading or copying from an Azure VM, then your bandwidth would be the same as standard HDDs.


作業の開始Getting started

GUI を使用してディスクをアップロードする場合は、Azure Storage Explorer を使用します。If you'd prefer to upload disks through a GUI, you can do so using Azure Storage Explorer. 詳細については、次を参照してください。Azure Storage Explorer を使用して Azure マネージド ディスクを管理するFor details refer to: Use Azure Storage Explorer to manage Azure managed disks

ご利用の VHD を Azure にアップロードするには、このアップロード プロセス用に構成された空のマネージド ディスクを作成する必要があります。To upload your VHD to Azure, you'll need to create an empty managed disk that is configured for this upload process. 作成する前に、それらのディスクについて把握しておく必要がある追加情報があります。Before you create one, there's some additional information you should know about these disks.

この種類のマネージド ディスクには、2 つの固有の状態があります。This kind of managed disk has two unique states:

  • ReadToUpload。ディスクはアップロードを受け取る準備ができていますが、Secure Access Signature (SAS) が生成されていないことを意味します。ReadToUpload, which means the disk is ready to receive an upload but, no secure access signature (SAS) has been generated.
  • ActiveUpload。ディスクはアップロードを受け取る準備ができており、SAS が生成済みであることを意味します。ActiveUpload, which means that the disk is ready to receive an upload and the SAS has been generated.


これらのいずれかの状態にある間は、実際のディスクの種類に関係なく、マネージド ディスクには Standard HDD 料金が課金されます。While in either of these states, the managed disk will be billed at standard HDD pricing, regardless of the actual type of disk. たとえば、P10 は S10 として課金されます。For example, a P10 will be billed as an S10. これは、revoke-access がマネージド ディスク上で呼び出される (ディスクを VM にアタッチするために必要な処理) まで当てはまります。This will be true until revoke-access is called on the managed disk, which is required in order to attach the disk to a VM.

空のマネージド ディスクを作成するCreate an empty managed disk

アップロード用に空の標準 HDD を作成するには、アップロードする vhd のファイル サイズ (バイト単位) が必要です。Before you can create an empty standard HDD for uploading, you'll need the file size of the VHD you want to upload, in bytes. このコード例ではこのサイズを自動で取得できますが、この操作を自分で行うには、$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length を使用します。The example code will get that for you but, to do it yourself you can use: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. この値は、 -UploadSizeInBytes パラメーターを指定するときに使用します。This value is used when specifying the -UploadSizeInBytes parameter.

次に、ご利用のローカル シェル上に、アップロード用の空の標準 HDD を作成するには、New-AzDiskConfig コマンドレットにおいて、 -CreateOption パラメーターに Upload 設定を指定すると共に、 -UploadSizeInBytes パラメーターを指定します。Now, on your local shell, create an empty standard HDD for uploading by specifying the Upload setting in the -CreateOption parameter as well as the -UploadSizeInBytes parameter in the New-AzDiskConfig cmdlet. 次に、New-AzDisk を呼び出してディスクを作成します。Then call New-AzDisk to create the disk.

<yourdiskname><yourresourcegroupname><yourregion> を置き換え、次のコマンドを実行します。Replace <yourdiskname>, <yourresourcegroupname>, and <yourregion> then run the following commands:


OS ディスクを作成する場合は、-HyperVGeneration '<yourGeneration>'New-AzDiskConfig に追加します。If you are creating an OS disk, add -HyperVGeneration '<yourGeneration>' to New-AzDiskConfig.

$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length

$diskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -OsType 'Windows' -UploadSizeInBytes $vhdSizeBytes -Location '<yourregion>' -CreateOption 'Upload'

New-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -Disk $diskconfig

Premium SSD または Standard SSD をアップロードする場合は、Standard_LRSPremium_LRS または StandardSSD_LRS のいずれかに置き換えます。If you would like to upload either a premium SSD or a standard SSD, replace Standard_LRS with either Premium_LRS or StandardSSD_LRS. Ultra Disks はまだサポートされていません。Ultra disks are not yet supported.

アップロード プロセス用に構成された空のマネージド ディスクを作成したので、VHD をアップロードすることができます。Now that you've created an empty managed disk that is configured for the upload process, you can upload a VHD to it. VHD をそのディスクにアップロードするには、書き込み可能な SAS をアップロード先とし参照できるように、用意する必要があります。To upload a VHD to the disk, you'll need a writeable SAS, so that you can reference it as the destination for your upload.

空のマネージド ディスクの書き込み可能な SAS を生成するには、<yourdiskname><yourresourcegroupname> を置き換えてから、次のコマンドを使用します。To generate a writable SAS of your empty managed disk, replace <yourdiskname>and <yourresourcegroupname>, then use the following commands:

$diskSas = Grant-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -DurationInSecond 86400 -Access 'Write'

$disk = Get-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

VHD のアップロードUpload a VHD

空のマネージド ディスク用の SAS が用意できたので、それを使用して、マネージド ディスクをアップロード コマンドのアップロード先として設定できます。Now that you have a SAS for your empty managed disk, you can use it to set your managed disk as the destination for your upload command.

AzCopy v10 を使用して、生成した SAS URI を指定してローカルの VHD ファイルをマネージド ディスクにアップロードします。Use AzCopy v10 to upload your local VHD file to a managed disk by specifying the SAS URI you generated.

このアップロードのスループットは、同等の Standard HDD と同じです。This upload has the same throughput as the equivalent standard HDD. たとえば、S4 と同等のサイズの場合、最大 60 MiB/秒のスループットが得られます。For example, if you have a size that equates to S4, you will have a throughput of up to 60 MiB/s. ただし、S70 と同等のサイズの場合、最大 500 MiB/秒のスループットが得られます。But, if you have a size that equates to S70, you will have a throughput of up to 500 MiB/s.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" $diskSas.AccessSAS --blob-type PageBlob

アップロードが完了し、ディスクにこれ以上データを書き込む必要がなくなったら、SAS を無効にします。After the upload is complete, and you no longer need to write any more data to the disk, revoke the SAS. SAS を無効にすると、マネージド ディスクの状態が変わり、そのディスクを VM にアタッチできるようになります。Revoking the SAS will change the state of the managed disk and allow you to attach the disk to a VM.

<yourdiskname><yourresourcegroupname> を置き換え、次のコマンドを実行します。Replace <yourdiskname>and <yourresourcegroupname>, then run the following command:

Revoke-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

マネージド ディスクをコピーするCopy a managed disk

ダイレクト アップロードを行うと、マネージド ディスクをコピーするプロセスも簡略化されます。Direct upload also simplifies the process of copying a managed disk. 同じリージョン内にコピーするか、マネージド ディスクを別のリージョンにコピーすることができます。You can either copy within the same region or copy your managed disk to another region.

次のスクリプトでは、これが自動的に実行されます。このプロセスは前述の手順と似ていますが、既存のディスクを操作しているため、いくつかの違いがあります。The follow script will do this for you, the process is similar to the steps described earlier, with some differences, since you're working with an existing disk.


Azure のマネージド ディスクのディスク サイズ (バイト単位) を指定する場合は、512 のオフセットを追加する必要があります。You need to add an offset of 512 when you're providing the disk size in bytes of a managed disk from Azure. これは、Azure からディスク サイズが返されるときにフッターが省略されるためです。This is because Azure omits the footer when returning the disk size. この操作を行わないと、コピーは失敗します。The copy will fail if you do not do this. 次のスクリプトでは、この操作が自動的に行われています。The following script already does this for you.

<sourceResourceGroupHere><sourceDiskNameHere><targetDiskNameHere><targetResourceGroupHere><yourOSTypeHere>、および <yourTargetLocationHere> (場所の値の例: uswest2) を実際の値に置き換えたら、次のスクリプトを実行してマネージド ディスクをコピーします。Replace the <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourOSTypeHere> and <yourTargetLocationHere> (an example of a location value would be uswest2) with your values, then run the following script in order to copy a managed disk.


OS ディスクを作成する場合は、-HyperVGeneration '' を New-AzDiskConfig に追加します。If you are creating an OS disk, add -HyperVGeneration '' to New-AzDiskConfig.

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

$sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName

# Adding the sizeInBytes with the 512 offset, and the -Upload flag
$targetDiskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -osType $targetOS -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetLocate -CreateOption 'Upload'

$targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig

$sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 86400 -Access 'Read'

$targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 86400 -Access 'Write'

azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob

Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName

Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName 

次のステップNext steps

VHD をマネージド ディスクに正常にアップロードしたので、ディスクを VM にアタッチして使用を開始できます。Now that you've successfully uploaded a VHD to a managed disk, you can attach your disk to a VM and begin using it.

データ ディスクを VM にアタッチする方法については、この主題に関する記事を参照してください。PowerShell を使用してデータ ディスクを Windows VM にアタッチするTo learn how to attach a data disk to a VM, see our article on the subject: Attach a data disk to a Windows VM with PowerShell. ディスクを OS ディスクとして使用する方法については、「特殊化されたディスクからの Windows VM の作成」を参照してください。To use the disk as the OS disk, see Create a Windows VM from a specialized disk.