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
- Instal modul Azure PowerShell terbaru.
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.
Memulai
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.
- Pada Windows: Anda tidak perlu mengonversi VHD ke VHDx, mengonversinya menjadi ukuran tetap, atau mengubah ukurannya untuk menyertakan offset 512 byte.
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
- Unduh versi AzCopy v10 terbaru.
- Pasang modul Azure PowerShell.
- VHD dengan ukuran tetap telah disiapkan untuk Azure, disimpan secara lokal.
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 VHD dengan ukuran sektor logis 512, disk target harus diatur ke 512. Jika Anda menggunakan file VHDX dengan ukuran sektor logis 4k, disk target harus diatur ke 4k, dan ukuran disk target harus sesuai dengan ukuran file VHDX. Perhatikan bahwa mengunggah file VHDX akan menghasilkan ekspansi ukuran ke perataan 256 MiB berikutnya.
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.
Penting
Pada 15 Februari 2025, waktu akses Tanda Tangan Akses Bersama (SAS) untuk disk dan rekam jepret akan dibatasi hingga maksimum 60 hari. Mencoba menghasilkan SAS dengan kedaluwarsa lebih dari 60 hari menghasilkan kesalahan. Setiap SAS disk atau rekam jepret yang ada yang dibuat dengan kedaluwarsa lebih dari 60 hari dapat berhenti bekerja 60 hari setelah tanggal pembuatan dan akan mengakibatkan kesalahan 403 selama otorisasi.
Jika disk terkelola atau kedaluwarsa SAS rekam jepret lebih dari 60 hari, cabut aksesnya, dan hasilkan SAS baru yang meminta akses selama 60 hari (5.184.000 detik) atau kurang. Tingkatkan keamanan Anda secara keseluruhan dengan menggunakan SAS dengan tanggal kedaluwarsa yang lebih pendek. Lakukan perubahan ini sebelum 15 Februari 2025 untuk mencegah gangguan layanan. Tautan berikut dapat digunakan untuk menemukan, mencabut, dan meminta SAS baru.
- Untuk memeriksa apakah disk memiliki SAS aktif, Anda dapat menggunakan REST API, Azure CLI, atau modul Azure PowerShell, dan memeriksa properti DiskState .
- Untuk mencabut SAS, Anda dapat menggunakan REST API, Azure CLI, atau modul Azure PowerShell.
- Untuk membuat SAS, Anda dapat menggunakan REST API, Azure CLI, atau modul Azure PowerShell, dan mengatur durasi akses menjadi 5.184.000 detik atau kurang.
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.
Catatan
Jika Anda perlu mengunggah file VHDx yang lebih besar dari 2 TB (yang melebihi batas format VHD) dan tidak dapat mengonversinya ke VHD karena ukurannya, perlu diketahui bahwa file VHDx hanya didukung untuk diunggah ke SKU disk PremiumSSDv2 dan UltraSSD. Untuk file yang lebih kecil dari 2TB, disarankan untuk mengonversinya ke format VHD sebelum mengunggah.
Pengunggahan ini memiliki throughput yang sama dengan HDD standar yang setara. Misalnya, jika Anda memiliki ukuran yang sama dengan S4, Anda akan memiliki throughput hingga 60 MiB/dtk. Tetapi, jika Anda memiliki ukuran yang setara dengan S70, Anda akan memiliki throughput hingga 500 MiB/dtk.
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.