Caricare un disco rigido virtuale in Azure o copiare un disco gestito in un'altra area: Azure PowerShell

Si applica a: ✔️ Macchine virtuali Windows

Questo articolo illustra come caricare un disco rigido virtuale dal computer locale in un disco gestito di Azure o copiare un disco gestito in un'altra area usando il modulo Azure PowerShell. Il processo di caricamento di un disco gestito, noto anche come caricamento diretto, consente di caricare un disco rigido virtuale fino a 32 TiB direttamente in un disco gestito. Attualmente, il caricamento diretto è supportato per dischi Ultra, SSD Premium v2, SSD Premium, SSD Standard e HDD Standard.

Se si fornisce una soluzione di backup per le macchine virtuali IaaS in Azure, è consigliabile usare il caricamento diretto per ripristinare i backup dei clienti in dischi gestiti. Quando si carica un disco rigido virtuale da un'origine esterna ad Azure, le velocità dipendono dalla larghezza di banda locale. Durante il caricamento o la copia da una macchina virtuale di Azure, la larghezza di banda sarà identica a quella degli HDD standard.

Proteggere i caricamenti con Microsoft Entra ID

Se si usa Microsoft Entra ID per controllare l'accesso alle risorse, è ora possibile usarlo per limitare il caricamento dei dischi gestiti di Azure. Questa funzionalità è disponibile come offerta a livello generale in tutte le aree. Quando un utente tenta di caricare un disco, Azure convalida l'identità dell'utente richiedente in Microsoft Entra ID e conferma che l'utente dispone delle autorizzazioni necessarie. A un livello superiore, un amministratore di sistema potrebbe impostare un criterio a livello di account o sottoscrizione di Azure per garantire che un'identità di Microsoft Entra disponga delle autorizzazioni necessarie per il caricamento prima di consentire il caricamento di un disco o uno snapshot del disco. Per eventuali domande sulla protezione dei caricamenti con Microsoft Entra ID, contattare questo messaggio di posta elettronica: azuredisks@microsoft .com

Prerequisiti

Limitazioni

  • I dischi rigidi virtuali non possono essere caricati in snapshot vuoti.
  • Backup di Azure attualmente non supporta i dischi protetti con Microsoft Entra ID.
  • Azure Site Recovery attualmente non supporta i dischi protetti con Microsoft Entra ID.

Assegnare il ruolo Controllo degli accessi in base al ruolo

Per accedere ai dischi gestiti protetti con Microsoft Entra ID, l'utente richiedente deve avere il ruolo Operatore dati per Managed Disks o un ruolo personalizzato con le autorizzazioni seguenti:

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

Per i passaggi dettagliati sull'assegnazione di un ruolo, vedere Assegnare ruoli di Azure con Azure PowerShell. Per creare o aggiornare un ruolo personalizzato, vedere Creare o aggiornare ruoli personalizzati di Azure con Azure PowerShell.

Introduzione

È possibile caricare un disco rigido virtuale con il modulo Azure PowerShell in due modi: è possibile usare il comando Add-AzVHD , che consente di automatizzare la maggior parte del processo oppure di eseguire il caricamento manualmente con AzCopy.

Per unità SSD Premium, UNITÀ SSD Standard e HDD Standard, è in genere consigliabile usare Add-AzVHD. Tuttavia, se si carica un disco Ultra o un disco SSD Premium v2 o se è necessario caricare un disco rigido virtuale di dimensioni superiori a 50 GiB, è necessario caricare manualmente il disco rigido virtuale o VHDX con AzCopy. I dischi rigidi virtuali 50 GiB e caricamento più grande più velocemente con AzCopy e Add-AzVhd attualmente non supportano il caricamento in un disco Ultra o in un'unità SSD Premium v2.

Per indicazioni su come copiare un disco gestito da un'area a un'altra, vedere Copiare un disco gestito.

Usare Add-AzVHD

Prerequisiti

Caricare un VHD

(Facoltativo) Concedere l'accesso al disco

Se viene usato Microsoft Entra ID per applicare restrizioni di caricamento per una sottoscrizione o a livello di account, Add-AzVHD ha esito positivo solo se si tenta di eseguire un tentativo da parte di un utente che dispone del ruolo controllo degli accessi in base al ruolo appropriato o delle autorizzazioni necessarie. Sarà necessario assegnare le autorizzazioni di controllo degli accessi in base al ruolo per concedere l'accesso al disco e generare una firma di accesso condiviso scrivibile.

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

Usare Add-AzVHD

L'esempio seguente carica un disco rigido virtuale dal computer locale in un nuovo disco gestito di Azure usando Add-AzVHD. Sostituire <your-filepath-here>, <your-resource-group-name>e<desired-region><desired-managed-disk-name> con i parametri:

Nota

Se si usa Microsoft Entra ID per applicare restrizioni di caricamento, aggiungere DataAccessAuthMode 'AzureActiveDirectory' alla fine del Add-AzVhd comando.

# 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

Caricamento manuale

Prerequisiti

Per caricare il disco rigido virtuale in Azure, è necessario creare un disco gestito vuoto configurato per questo processo di caricamento. Prima di crearne uno, è necessario conoscere alcune informazioni aggiuntive su questi dischi.

Questo tipo di disco gestito ha due stati univoci:

  • ReadyToUpload, il che significa che il disco è pronto per ricevere un caricamento, ma non è stata generata alcuna firma di accesso sicuro ( SAS).
  • ActiveUpload, il che significa che il disco è pronto per ricevere un caricamento e che la firma di accesso condiviso è stata generata.

Nota

Mentre in uno di questi stati, il disco gestito verrà fatturato a prezzi HDD standard, indipendentemente dal tipo effettivo di disco. Ad esempio, una P10 verrà fatturata come S10. Questo vale fino a quando revoke-access non viene chiamato sul disco gestito, necessario per collegare il disco a una macchina virtuale.

Creare un disco gestito vuoto

Prima di poter creare un HDD standard vuoto per il caricamento, sono necessarie le dimensioni del file del disco rigido virtuale da caricare, in byte. Il codice di esempio otterrà questo valore per l'utente, ma, per farlo manualmente, è possibile usare : $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Questo valore viene usato quando si specifica il parametro -UploadSizeInBytes .

Nella shell locale creare ora un hdd standard vuoto per il caricamento specificando l'impostazione Upload nel parametro -CreateOption e il parametro -UploadSizeInBytes nel cmdlet New-AzDiskConfig. Chiamare quindi New-AzDisk per creare il disco.

Sostituire <yourdiskname>, <yourresourcegroupname>e <yourregion> quindi eseguire i comandi seguenti:

Importante

Se si sta creando un disco del sistema operativo, aggiungere -HyperVGeneration '<yourGeneration>' a New-AzDiskConfig.

Se si usa Microsoft Entra ID per proteggere i caricamenti, aggiungere -dataAccessAuthMode 'AzureActiveDirectory' a New-AzDiskConfig.
Durante il caricamento in un disco Ultra o IN SSD Premium v2 è necessario selezionare le dimensioni del settore corrette del disco di destinazione. Se si usa un file VHDX con dimensioni del settore logico 4k, il disco di destinazione deve essere impostato su 4k. Se si usa un file VHD con dimensioni del settore logico 512, il disco di destinazione deve essere impostato su 512.

I file VHDX con dimensioni del settore logico di 512k non sono supportati.

$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

Se si vuole caricare un tipo di disco diverso, sostituire Standard_LRS con Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS o UltraSSD_LRS.

Generare una firma di accesso condiviso scrivibile

Dopo aver creato un disco gestito vuoto configurato per il processo di caricamento, è possibile caricarvi un disco rigido virtuale. Per caricare un disco rigido virtuale sul disco, è necessaria una firma di accesso condiviso scrivibile, in modo che sia possibile farvi riferimento come destinazione per il caricamento.

Per generare una firma di accesso condiviso scrivibile del disco gestito vuoto, sostituire <yourdiskname>e <yourresourcegroupname>, quindi usare i comandi seguenti:

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

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

Caricare un disco rigido virtuale o VHDX

Dopo aver ottenuto una firma di accesso condiviso per il disco gestito vuoto, è possibile usarla per impostare il disco gestito come destinazione per il comando di caricamento.

Usare AzCopy v10 per caricare il file VHD o VHDX locale in un disco gestito specificando l'URI di firma di accesso condiviso generato.

Questo caricamento ha la stessa velocità effettiva dell'unità HDD standard equivalente. Ad esempio, se si ha una dimensione che equivale a S4, si avrà una velocità effettiva fino a 60 MiB/s. Tuttavia, se si hanno dimensioni che equivalgono a S70, si avrà una velocità effettiva fino a 500 MiB/s.

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

Al termine del caricamento e non è più necessario scrivere altri dati sul disco, revocare la firma di accesso condiviso. La revoca della firma di accesso condiviso modifica lo stato del disco gestito e consente di collegare il disco a una macchina virtuale.

Sostituire <yourdiskname>e <yourresourcegroupname>, quindi eseguire il comando seguente:

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

Copiare un disco gestito

Il caricamento diretto semplifica anche il processo di copia di un disco gestito. È possibile copiare nella stessa area o copiare il disco gestito in un'altra area.

Lo script seguente eseguirà questa operazione per l'utente, il processo è simile ai passaggi descritti in precedenza, con alcune differenze, perché si usa un disco esistente.

Importante

È necessario aggiungere un offset pari a 512 quando si specificano le dimensioni del disco in byte di un disco gestito da Azure. Questo perché Azure omette il piè di pagina quando restituisce le dimensioni del disco. Se non si esegue questa operazione, la copia avrà esito negativo. Lo script seguente esegue già questa operazione.

<sourceResourceGroupHere>Sostituire , <sourceDiskNameHere>, <targetDiskNameHere><targetResourceGroupHere>, <yourOSTypeHere> e <yourTargetLocationHere> (un esempio di un valore di posizione sarebbe uswest2) con i valori, quindi eseguire lo script seguente per copiare un disco gestito.

Suggerimento

Se si sta creando un disco del sistema operativo, aggiungere -HyperVGeneration '<yourGeneration>' a 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 

Passaggi successivi

Dopo aver caricato correttamente un disco rigido virtuale in un disco gestito, è possibile collegare il disco a una macchina virtuale e iniziare a usarlo.

Per informazioni su come collegare un disco dati a una macchina virtuale, vedere l'articolo sull'argomento: Collegare un disco dati a una macchina virtuale Windows con PowerShell. Per usare il disco come disco del sistema operativo, vedere Creare una macchina virtuale Windows da un disco specializzato.

Per altre domande, vedere la sezione sul caricamento di un disco gestito nelle domande frequenti.