Ladda upp en virtuell hårddisk till Azure eller kopiera en hanterad disk till en annan region – Azure PowerShell

Gäller för: ✔️ Virtuella Windows-datorer

Den här artikeln beskriver hur du antingen laddar upp en virtuell hårddisk från din lokala dator till en Hanterad Azure-disk eller kopierar en hanterad disk till en annan region med hjälp av Azure PowerShell-modulen. Processen med att ladda upp en hanterad disk, även kallad direktuppladdning, gör att du kan ladda upp en VHD upp till 32 TiB i storlek direkt till en hanterad disk. För närvarande stöds direktuppladdning för Ultra Disks, Premium SSD v2, Premium SSD, Standard SSD och Standard HDD.

Om du tillhandahåller en säkerhetskopieringslösning för virtuella IaaS-datorer i Azure bör du använda direktuppladdning för att återställa kundsäkerhetskopior till hanterade diskar. När du laddar upp en virtuell hårddisk från en extern källa till Azure beror hastigheterna på din lokala bandbredd. När du laddar upp eller kopierar från en virtuell Azure-dator är bandbredden samma som standard-HDD:er.

Säkra uppladdningar med Microsoft Entra-ID

Om du använder Microsoft Entra-ID för att styra resursåtkomsten kan du nu använda det för att begränsa uppladdningen av Azure-hanterade diskar. Den här funktionen är tillgänglig som ett GA-erbjudande i alla regioner. När en användare försöker ladda upp en disk verifierar Azure identiteten för den begärande användaren i Microsoft Entra-ID och bekräftar att användaren har de behörigheter som krävs. På en högre nivå kan en systemadministratör ange en princip på Azure-konto- eller prenumerationsnivå för att säkerställa att en Microsoft Entra-identitet har de behörigheter som krävs för uppladdning innan en disk eller en diskögonblicksbild kan laddas upp. Om du har frågor om hur du skyddar uppladdningar med Microsoft Entra-ID kan du kontakta det här e-postmeddelandet: azuredisks@microsoft .com

Förutsättningar

Begränsningar

  • Virtuella hårddiskar kan inte laddas upp till tomma ögonblicksbilder.
  • Azure Backup stöder för närvarande inte diskar som skyddas med Microsoft Entra-ID.
  • Azure Site Recovery stöder för närvarande inte diskar som skyddas med Microsoft Entra-ID.

Tilldela RBAC-roll

För att få åtkomst till hanterade diskar som skyddas med Microsoft Entra-ID måste den begärande användaren ha rollen Dataoperatör för hanterade diskar eller en anpassad roll med följande behörigheter:

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

Detaljerade anvisningar om hur du tilldelar en roll finns i Tilldela Azure-roller med Hjälp av Azure PowerShell. Information om hur du skapar eller uppdaterar en anpassad roll finns i Skapa eller uppdatera anpassade Azure-roller med Hjälp av Azure PowerShell.

Kom igång

Det finns två sätt att ladda upp en virtuell hårddisk med Azure PowerShell-modulen: Du kan antingen använda kommandot Add-AzVHD , som automatiserar det mesta av processen åt dig, eller så kan du utföra uppladdningen manuellt med AzCopy.

För Premium SSD, Standard SSD och Standard HDD bör du vanligtvis använda Add-AzVHD. Men om du laddar upp till en Ultra Disk eller en Premium SSD v2, eller om du behöver ladda upp en virtuell hårddisk som är större än 50 GiB, måste du ladda upp den virtuella hårddisken eller VHDX manuellt med AzCopy. VHDs 50 GiB och större uppladdning snabbare med AzCopy och Add-AzVhd stöder för närvarande inte uppladdning till en Ultra Disk eller en Premium SSD v2.

Mer information om hur du kopierar en hanterad disk från en region till en annan finns i Kopiera en hanterad disk.

Använda Add-AzVHD

Förutsättningar

Ladda upp en virtuell hårddisk

(Valfritt) Bevilja åtkomst till disken

Om Microsoft Entra-ID används för att framtvinga uppladdningsbegränsningar för en prenumeration eller på kontonivå lyckas Add-AzVHD endast om det görs ett försök av en användare som har rätt RBAC-roll eller nödvändiga behörigheter. Du måste tilldela RBAC-behörigheter för att bevilja åtkomst till disken och generera en skrivbar SAS.

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

Använda Add-AzVHD

I följande exempel laddas en virtuell hårddisk upp från den lokala datorn till en ny Azure-hanterad disk med hjälp av Add-AzVHD. Ersätt <your-filepath-here>, <your-resource-group-name>,<desired-region>och <desired-managed-disk-name> med dina parametrar:

Kommentar

Om du använder Microsoft Entra-ID för att tillämpa uppladdningsbegränsningar lägger du till DataAccessAuthMode 'AzureActiveDirectory' i slutet av Add-AzVhd kommandot.

# 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

Manuell uppladdning

Förutsättningar

Om du vill ladda upp din virtuella hårddisk till Azure måste du skapa en tom hanterad disk som är konfigurerad för den här uppladdningsprocessen. Innan du skapar en finns det ytterligare information som du bör känna till om dessa diskar.

Den här typen av hanterad disk har två unika tillstånd:

  • ReadyToUpload, vilket innebär att disken är redo att ta emot en uppladdning, men ingen säker åtkomstsignatur (SAS) har genererats.
  • ActiveUpload, vilket innebär att disken är redo att ta emot en uppladdning och att SAS har genererats.

Kommentar

I något av dessa tillstånd debiteras den hanterade disken enligt standardpriser för HDD, oavsett vilken typ av disk som är aktuell. Till exempel debiteras en P10 som en S10. Detta gäller tills revoke-access anropas på den hanterade disken, vilket krävs för att ansluta disken till en virtuell dator.

Skapa en tom hanterad disk

Innan du kan skapa en tom standard-HDD för uppladdning behöver du filstorleken för den virtuella hårddisk som du vill ladda upp i byte. Exempelkoden får det åt dig, men för att göra det själv kan du använda: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Det här värdet används när du anger parametern -UploadSizeInBytes .

I det lokala gränssnittet skapar du nu en tom standard-HDD för uppladdning genom att ange inställningen Ladda upp i parametern -CreateOption samt parametern -UploadSizeInBytes i cmdleten New-AzDiskConfig . Anropa sedan New-AzDisk för att skapa disken.

Ersätt <yourdiskname>, <yourresourcegroupname>och <yourregion> kör sedan följande kommandon:

Viktigt!

Om du skapar en OS-disk lägger du till -HyperVGeneration '<yourGeneration>' i New-AzDiskConfig.

Om du använder Microsoft Entra-ID för att skydda dina uppladdningar lägger du till -dataAccessAuthMode 'AzureActiveDirectory' i New-AzDiskConfig.
När du laddar upp till en Ultra Disk eller Premium SSD v2 måste du välja rätt sektorstorlek för måldisken. Om du använder en VHDX-fil med en 4k logisk sektorstorlek måste måldisken vara inställd på 4k. Om du använder en VHD-fil med en storlek på 512 logiska sektorer måste måldisken vara inställd på 512.

VHDX-filer med en logisk sektorstorlek på 512k stöds inte.

$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

Om du vill ladda upp en annan disktyp ersätter du Standard_LRS med Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS eller UltraSSD_LRS.

Generera skrivbar SAS

Nu när du har skapat en tom hanterad disk som har konfigurerats för uppladdningsprocessen kan du ladda upp en virtuell hårddisk till den. Om du vill ladda upp en virtuell hårddisk till disken behöver du en skrivbar SAS så att du kan referera till den som mål för uppladdningen.

Om du vill generera en skrivbar SAS för den tomma hanterade disken ersätter <yourdiskname>du och , och <yourresourcegroupname>använder sedan följande kommandon:

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

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

Ladda upp en virtuell hårddisk eller VHDX

Nu när du har en SAS för den tomma hanterade disken kan du använda den för att ange den hanterade disken som mål för uppladdningskommandot.

Använd AzCopy v10 för att ladda upp din lokala VHD- eller VHDX-fil till en hanterad disk genom att ange den SAS-URI som du genererade.

Den här uppladdningen har samma dataflöde som motsvarande standard-HDD. Om du till exempel har en storlek som motsvarar S4 har du ett dataflöde på upp till 60 MiB/s. Men om du har en storlek som motsvarar S70 har du ett dataflöde på upp till 500 MiB/s.

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

När uppladdningen är klar och du inte längre behöver skriva mer data till disken återkallar du SAS. Om du återkallar SAS ändras tillståndet för den hanterade disken och du kan ansluta disken till en virtuell dator.

Ersätt <yourdiskname>och <yourresourcegroupname>kör sedan följande kommando:

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

Kopiera en hanterad disk

Direktuppladdning förenklar också kopieringsprocessen för en hanterad disk. Du kan antingen kopiera inom samma region eller kopiera den hanterade disken till en annan region.

Följande skript kommer att göra detta åt dig, processen liknar de steg som beskrevs tidigare, med vissa skillnader, eftersom du arbetar med en befintlig disk.

Viktigt!

Du måste lägga till en förskjutning på 512 när du anger diskstorleken i byte för en hanterad disk från Azure. Det beror på att Azure utelämnar sidfoten när diskstorleken returneras. Kopian misslyckas om du inte gör det. Följande skript gör redan detta åt dig.

<sourceResourceGroupHere>Ersätt , <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere><yourOSTypeHere> och <yourTargetLocationHere> (ett exempel på ett platsvärde skulle vara uswest2) med dina värden och kör sedan följande skript för att kopiera en hanterad disk.

Dricks

Om du skapar en OS-disk lägger du till -HyperVGeneration '<yourGeneration>' i 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 

Nästa steg

Nu när du har laddat upp en virtuell hårddisk till en hanterad disk kan du ansluta disken till en virtuell dator och börja använda den.

Mer information om hur du kopplar en datadisk till en virtuell dator finns i vår artikel om ämnet: Koppla en datadisk till en virtuell Windows-dator med PowerShell. Information om hur du använder disken som OS-disk finns i Skapa en virtuell Windows-dator från en specialiserad disk.

Om du har ytterligare frågor kan du läsa avsnittet om hur du laddar upp en hanterad disk i vanliga frågor och svar.