Unggah VHD ke Azure atau salin disk terkelola ke region lain - Azure PowerShell

Berlaku untuk:✔️ ️ VM Windows

Artikel ini menjelaskan cara mengunggah VHD dari komputer lokal Anda ke disk yang dikelola Azure atau menyalin disk terkelola ke wilayah lain, menggunakan modul Azure PowerShell. Proses mengunggah disk terkelola, juga disebut sebagai pengunggahan langsung, memungkinkan Anda mengunggah VHD hingga ukuran 32 TiB langsung ke disk terkelola. Saat ini, unggahan langsung didukung untuk Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, dan HDD Standar.

Jika Anda menyediakan solusi cadangan untuk mesin virtual IaaS di Azure, Anda harus menggunakan unggahan langsung untuk memulihkan cadangan pelanggan ke disk yang dikelola. Saat mengunggah VHD dari sumber eksternal ke Azure, kecepatan bergantung pada bandwidth lokal Anda. Saat mengunggah atau menyalin dari mesin virtual Azure, bandwidth Anda akan sama dengan HDD standar.

Unggahan aman dengan ID Microsoft Entra

Jika Anda menggunakan ID Microsoft Entra untuk mengontrol akses sumber daya, Anda sekarang dapat menggunakannya untuk membatasi pengunggahan disk terkelola Azure. Fitur ini tersedia sebagai penawaran GA di semua wilayah. Saat pengguna mencoba mengunggah disk, Azure memvalidasi identitas pengguna yang meminta di ID Microsoft Entra, dan mengonfirmasi bahwa pengguna memiliki izin yang diperlukan. Pada tingkat yang lebih tinggi, administrator sistem dapat menetapkan kebijakan di tingkat akun Azure atau langganan untuk memastikan bahwa identitas Microsoft Entra memiliki izin yang diperlukan untuk diunggah sebelum mengizinkan disk atau rekam jepret disk diunggah. Jika Anda memiliki pertanyaan tentang mengamankan unggahan dengan ID Microsoft Entra, hubungi email ini: azuredisks@microsoft .com

Prasyarat

Batasan

  • VHD tidak dapat diunggah ke snapshot kosong.
  • Azure Backup saat ini tidak mendukung disk yang diamankan dengan ID Microsoft Entra.
  • Azure Site Recovery saat ini tidak mendukung disk yang diamankan dengan ID Microsoft Entra.

Menetapkan peran RBAC

Untuk mengakses disk terkelola yang diamankan dengan ID Microsoft Entra, pengguna yang meminta harus memiliki peran Operator Data untuk Disk Terkelola, atau peran kustom dengan izin berikut:

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

Untuk langkah-langkah mendetail tentang menetapkan peran, lihat Menetapkan peran Azure menggunakan Azure PowerShell. Untuk membuat atau memperbarui peran kustom, lihat Membuat atau memperbarui peran kustom Azure menggunakan Azure PowerShell.

Mulai

Ada dua cara agar Anda dapat mengunggah VHD dengan modul Azure PowerShell: Anda dapat menggunakan perintah Add-AzVHD, yang akan mengotomatiskan sebagian besar proses untuk Anda, atau Anda dapat melakukan pengunggahan secara manual dengan AzCopy.

Untuk SSD Premium, SSD Standar, dan HDD Standar, Anda umumnya harus menggunakan Add-AzVHD. Namun, jika Anda mengunggah ke Ultra Disk, atau Premium SSD v2, atau jika Anda perlu mengunggah VHD yang lebih besar dari 50 GiB, Anda harus mengunggah VHD atau VHDX secara manual dengan AzCopy. VHD 50 GiB dan pengunggahan yang lebih besar lebih cepat menggunakan AzCopy dan Add-AzVhd saat ini tidak mendukung pengunggahan ke Ultra Disk atau Premium SSD v2.

Untuk panduan tentang cara menyalin disk terkelola dari satu wilayah ke wilayah lain, lihat Menyalin disk terkelola.

Menggunakan Add-AzVHD

Prasyarat

  • Pasang modul Azure PowerShell.
  • VHD telah disiapkan untuk Azure, disimpan secara lokal.
    • Pada Windows: Anda tidak perlu mengonversi VHD ke VHDx, mengonversinya menjadi ukuran tetap, atau mengubah ukurannya untuk menyertakan offset 512 byte. Add-AZVHD melakukan fungsi ini untuk Anda.
      • Hyper-V harus diaktifkan agar Add-AzVHD dapat melakukan fungsi ini.
    • Di Linux: Anda harus melakukan tindakan ini secara manual. Lihat Mengubah Ukuran VHD untuk detailnya.

Mengunggah VHD

(Opsional) Memberikan akses ke disk

Jika ID Microsoft Entra digunakan untuk memberlakukan pembatasan pengunggahan pada langganan atau di tingkat akun, Add-AzVHD hanya berhasil jika dicoba oleh pengguna yang memiliki peran RBAC yang sesuai atau izin yang diperlukan. Anda harus menetapkan izin RBAC untuk memberikan akses ke disk dan menghasilkan SAS yang dapat ditulis.

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName "Data Operator for Managed Disks" `
-Scope /subscriptions/<subscriptionId>

Menggunakan Add-AzVHD

Contoh berikut mengunggah VHD dari mesin lokal Anda ke disk terkelola Azure baru menggunakan Add-AzVHD. Ganti <your-filepath-here>, <your-resource-group-name>,<desired-region>, dan <desired-managed-disk-name> dengan parameter Anda:

Catatan

Jika Anda menggunakan ID Microsoft Entra untuk memberlakukan pembatasan pengunggahan, tambahkan DataAccessAuthMode 'AzureActiveDirectory' ke akhir perintah Anda Add-AzVhd .

# Required parameters
$path = <your-filepath-here>.vhd
$resourceGroup = <your-resource-group-name>
$location = <desired-region>
$name = <desired-managed-disk-name>

# Optional parameters
# $Zone = <desired-zone>
# $sku=<desired-SKU>
# -DataAccessAuthMode 'AzureActiveDirectory'
# -DiskHyperVGeneration = V1 or V2. This applies only to OS disks.

# To use $Zone or #sku, add -Zone or -DiskSKU parameters to the command
Add-AzVhd -LocalFilePath $path -ResourceGroupName $resourceGroup -Location $location -DiskName $name

Pengunggahan manual

Prasyarat

Untuk mengunggah VHD ke Azure, Anda harus membuat disk terkelola kosong yang dikonfigurasi untuk proses pengunggahan ini. Sebelum membuatnya, ada beberapa informasi tambahan yang harus Anda ketahui tentang disk ini.

Disk terkelola semacam ini memiliki dua kondisi unik:

  • ReadToUpload, yang berarti disk siap menerima unggahan, tetapi tidak ada tanda tangan akses aman (SAS) yang dihasilkan.
  • ActiveUpload, yang berarti disk siap untuk menerima unggahan dan SAS telah dihasilkan.

Catatan

Untuk kondisi apa pun, disk terkelola akan ditagih dengan harga HDD standar, terlepas dari jenis disk yang sebenarnya. Contohnya, P10 akan ditagih sebagai S10. Ini akan berlaku sampai revoke-access diperintahkan pada disk terkelola, yang diperlukan untuk melampirkan disk ke VM.

Buat disk terkelola kosong

Sebelum dapat membuat HDD standar kosong untuk pengunggahan, Anda memerlukan ukuran file VHD yang ingin Anda unggah, dalam byte. Contoh kode akan mengurusnya untuk Anda, tetapi untuk melakukannya sendiri Anda dapat menggunakan: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Nilai ini digunakan saat menentukan parameter -UploadSizeInByte.

Sekarang, pada shell lokal Anda, buat HDD standar kosong untuk diunggah dengan menentukan pengaturan Unggah di parameter -CreateOption serta parameter -UploadSizeInBytes di cmdlet New-AzDiskConfig. Kemudian perintahkan New-AzDisk untuk membuat disk.

Ganti <yourdiskname>, <yourresourcegroupname>, dan <yourregion> lalu jalankan perintah berikut:

Penting

Jika Anda membuat disk OS, tambahkan -HyperVGeneration '<yourGeneration>' ke New-AzDiskConfig.

Jika Anda menggunakan ID Microsoft Entra untuk mengamankan unggahan Anda, tambahkan -dataAccessAuthMode 'AzureActiveDirectory' ke New-AzDiskConfig.
Saat mengunggah ke Disk Ultra atau Premium SSD v2, Anda perlu memilih ukuran sektor disk target yang benar. Jika Anda menggunakan file VHDX dengan ukuran sektor logis 4k, disk target harus diatur ke 4k. Jika Anda menggunakan file VHD dengan ukuran sektor logis 512, disk target harus diatur ke 512.

File VHDX dengan ukuran sektor logis 512k tidak didukung.

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

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

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

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

Jika Anda ingin mengunggah jenis disk yang berbeda, ganti Standard_LRS dengan Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS, atau UltraSSD_LRS.

Menghasilkan SAS yang dapat ditulis

Setelah membuat disk terkelola kosong yang dikonfigurasi untuk proses pengunggahan, Anda dapat mengunggah VHD ke sana. Untuk mengunggah VHD ke disk, Anda memerlukan SAS yang dapat ditulis, sehingga Anda dapat mereferensikannya sebagai tujuan unggahan Anda.

Untuk menghasilkan SAS yang dapat ditulis dari disk terkelola kosong Anda, ganti <yourdiskname> dan <yourresourcegroupname>, lalu gunakan perintah berikut:

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

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

Mengunggah VHD atau VHDX

Sekarang setelah memiliki SAS untuk disk terkelola kosong, Anda dapat menggunakannya untuk mengatur disk terkelola sebagai tujuan untuk perintah pengunggahan.

Gunakan AzCopy v10 untuk mengunggah file VHD atau VHDX lokal Anda ke disk terkelola dengan menentukan URI SAS yang Anda buat.

Pengunggahan ini memiliki throughput yang sama dengan HDD standar yang setara. Contohnya, jika Anda memiliki ukuran yang setara dengan S4, Anda akan memiliki throughput hingga 60 MiB/s. Tetapi, jika Anda memiliki ukuran yang setara dengan S70, Anda akan memiliki throughput hingga 500 MiB/ s.

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

Setelah pengunggahan selesai, dan Anda tidak perlu menulis data lagi ke disk, cabut SAS. Pencabutan SAS akan mengubah status disk terkelola dan memungkinkan Anda untuk melampirkan disk ke VM.

Ganti <yourdiskname> dan <yourresourcegroupname>, lalu jalankan perintah berikut:

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

Menyalin disk terkelola

Pengunggahan langsung juga menyederhanakan proses penyalinan disk terkelola. Anda dapat menyalin dalam wilayah yang sama atau menyalin disk terkelola Anda ke wilayah lainnya.

Skrip berikut akan melakukan hal ini untuk Anda, prosesnya mirip dengan langkah-langkah yang dijelaskan sebelumnya, dengan beberapa perbedaan karena Anda menggunakan disk yang ada.

Penting

Anda perlu menambahkan offset 512 saat menyediakan ukuran disk dalam byte disk terkelola dari Azure. Ini dikarenakan Azure menghilangkan footer saat menampilkan ukuran disk. Salinan akan gagal jika Anda tidak melakukan ini. Skrip berikut ini sudah melakukan tindakan ini untuk Anda.

Ganti <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourOSTypeHere> dan <yourTargetLocationHere> (contoh nilai lokasinya adalah uswest2) dengan nilai Anda, lalu jalankan skrip berikut untuk menyalin disk terkelola.

Tip

Jika Anda membuat disk OS, tambahkan -HyperVGeneration '<yourGeneration>' ke New-AzDiskConfig.


$sourceRG = <sourceResourceGroupHere>
$sourceDiskName = <sourceDiskNameHere>
$targetDiskName = <targetDiskNameHere>
$targetRG = <targetResourceGroupHere>
$targetLocate = <yourTargetLocationHere>
$targetVmGeneration = "V1" # either V1 or V2
#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' -HyperVGeneration $targetVmGeneration

$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 

Langkah berikutnya

Setelah berhasil mengunggah VHD ke disk terkelola, Anda dapat melampirkan disk ke VM dan mulai menggunakannya.

Untuk mempelajari cara melampirkan disk data ke VM, lihat artikel kami tentang subjek: Lampirkan disk data ke Windows VM dengan PowerShell. Untuk menggunakan disk sebagai disk OS, lihat Buat VM Windows dari disk khusus.

Jika Anda memiliki pertanyaan tambahan, lihat bagian tentang mengunggah disk terkelola di FAQ.