Charger un disque dur virtuel sur Azure ou copier un disque managé dans une autre région - Azure PowerShell

S’applique à : ✔️ Machine virtuelles Windows

Cet article explique comment charger un disque dur virtuel depuis votre machine locale vers un disque managé Azure, ou comment copier un disque managé dans une autre région, en utilisant le module Azure PowerShell. Ce processus de chargement d’un disque managé, également appelé chargement direct, vous permet de charger un disque dur virtuel d’une taille maximale de 32 Tio directement dans un disque managé. Actuellement, le chargement direct est pris en charge pour les Disques Ultra, SSD Premium v2, SSD Premium, SSD Standard et HDD Standard.

Si vous fournissez une solution de sauvegarde pour les machines virtuelles IaaS dans Azure, vous devez utiliser le chargement direct afin de restaurer les sauvegardes des clients sur des disques managés. Lorsque vous chargez un VHD à partir d’une source externe à Azure, la vitesse dépend de votre bande passante locale. Lorsque vous chargez ou copiez à partir d’une machine virtuelle Azure, votre bande passante est la même que celle des HDD standard.

Sécuriser les chargements avec Microsoft Entra ID

Si vous utilisez Microsoft Entra ID pour contrôler l’accès aux ressources, vous pouvez désormais l’utiliser pour restreindre le chargement de disques managés Azure. Cette fonctionnalité est disponible comme offre GA dans toutes les régions. Quand un utilisateur tente de charger un disque, Azure valide l’identité de l’utilisateur demandeur dans Microsoft Entra ID et confirme que l’utilisateur dispose des autorisations requises. À un niveau supérieur, un administrateur système peut définir une stratégie au niveau du compte ou de l’abonnement Azure pour s’assurer qu’une identité Microsoft Entra dispose des autorisations nécessaires pour le chargement avant d’autoriser le chargement d’un disque ou d’un instantané de disque. Si vous avez des questions sur la sécurisation des chargements avec Microsoft Entra ID, contactez cet e-mail : azuredisks@microsoft.com

Prérequis

Restrictions

  • Les disques durs virtuels ne peuvent pas être chargés dans des instantanés vides.
  • Sauvegarde Azure ne prend actuellement pas en charge les disques sécurisés avec Microsoft Entra ID.
  • Azure Site Recovery ne prend actuellement pas en charge les disques sécurisés avec Microsoft Entra ID.

Attribuer un rôle RBAC

Pour accéder aux disques managés sécurisés avec Microsoft Entra ID, l’utilisateur demandeur doit disposer du rôle Opérateur de données pour les disques managés ou d’un rôle personnalisé avec les autorisations suivantes :

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

Pour obtenir la procédure détaillée d’attribution d’un rôle, consultez Attribuer des rôles Azure à l’aide d’Azure PowerShell. Pour créer ou mettre à jour un rôle personnalisé, consultez Créer ou mettre à jour des rôles personnalisés Azure avec Azure PowerShell.

Bien démarrer

Il y a deux façons possibles de charger un disque dur virtuel avec le module Azure PowerShell : en utilisant la commande Add-AzVHD, qui automatise la majeure partie du processus, ou en effectuant le chargement manuellement avec AzCopy.

Pour les disques SSD Premium, SSD Standard et HDD Standard, vous devez généralement utiliser Add-AzVHD. Cependant, si vous chargez vers un disque Ultra, ou un SSD Premium v2, ou si vous avez besoin de charger un VHD qui est plus grand que 50 Gio, vous devez charger le VHD ou VHDX manuellement avec AzCopy. Les VHD de 50 Gio et plus se chargent plus rapidement en utilisant AzCopy et Add-AzVhd ne supporte pas actuellement le chargement vers un disque Ultra ou un SSD Premium v2.

Pour obtenir des conseils sur la façon de copier un disque managé d’une région vers une autre, consultez Copier un disque managé.

Utiliser Add-AzVHD

Prérequis

  • Installer le module Azure PowerShell.
  • Un disque dur virtuel a été préparé pour Azure et stocké localement.
    • Sur Windows : vous n’avez pas besoin de convertir votre disque dur virtuel au format VHDx, de le convertir en disque de taille fixe ni de le redimensionner pour inclure le décalage de 512 octets. Add-AZVHD effectue ces actions pour vous.
      • Hyper-V doit être activé pour permettre à Add-AzVHD d’effectuer ces actions.
    • Sur Linux : vous devez effectuer ces actions manuellement. Pour plus d’informations, consultez Redimensionnement des disques durs virtuels.

Télécharger un disque dur virtuel

(Facultatif) Accorder l’accès au disque

Si Microsoft Entra ID est utilisé pour appliquer des restrictions de chargement sur un abonnement ou au niveau du compte, la commande Add-AzVHD réussit uniquement si elle est exécutée par un utilisateur doté du rôle RBAC approprié ou des autorisations nécessaires. Vous devez attribuer des autorisations RBAC pour accorder l’accès au disque et générer une signature d’accès partagé accessible en écriture.

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

Utiliser Add-AzVHD

L’exemple suivant charge un disque dur virtuel à partir de votre ordinateur local vers un nouveau disque managé Azure en utilisant Add-AzVHD. Remplacez <your-filepath-here>, <your-resource-group-name>, <desired-region> et <desired-managed-disk-name> par vos propres paramètres :

Remarque

Si vous utilisez Microsoft Entra ID pour appliquer des restrictions de chargement, ajoutez DataAccessAuthMode 'AzureActiveDirectory' à la fin de votre commande 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

Chargement manuel

Prérequis

Pour charger votre disque dur virtuel sur Azure, vous devez créer un disque managé vide configuré pour ce processus de chargement. Avant de créer ce disque, vous devez prendre connaissance des informations ci-dessous.

Ce type de disque managé présente deux états uniques :

  • ReadyToUpload, qui signifie que le disque est prêt à recevoir un chargement, mais qu’aucune signature d’accès partagé (SAP) n’a été générée.
  • ActiveUpload, qui signifie que le disque est prêt à recevoir un chargement et que la SAS a été générée.

Notes

Dans l'un ou l'autre de ces états, le disque managé est facturé au tarif HDD Standard, quel que soit le type de disque. Par exemple, un P10 est facturé comme un S10. Ceci s’applique jusqu’à ce que revoke-access soit appelé sur le disque managé, ce qui est nécessaire pour joindre le disque à une machine virtuelle.

Créer un disque managé vierge

Avant de pouvoir créer un disque dur standard vide pour le chargement, vous devez connaître la taille de fichier (en octets) du disque dur virtuel que vous voulez charger. L'exemple de code vous la fournira, mais si vous souhaitez effectuer cette opération vous-même, vous pouvez utiliser : $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Cette valeur est utilisée lors de la spécification du paramètre -UploadSizeInBytes.

Ensuite, à partir de votre interpréteur de commandes local, créez un disque HDD Standard vierge pour le chargement en spécifiant le paramètre Upload dans -CreateOption ainsi que le paramètre -UploadSizeInBytes dans la cmdlet New-AzDiskConfig. Ensuite, appelez New-AzDisk pour créer le disque.

Remplacez <yourdiskname>, <yourresourcegroupname>et <yourregion>, puis exécutez les commandes suivantes :

Important

Si vous créez un disque de système d’exploitation, ajoutez -HyperVGeneration '<yourGeneration>' à New-AzDiskConfig.

Si vous utilisez Microsoft Entra ID pour sécuriser vos chargements, ajoutez -dataAccessAuthMode 'AzureActiveDirectory' à New-AzDiskConfig.
Lors du chargement sur un disque Ultra ou un disque SSD Premium v2, vous devez sélectionner la taille de secteur appropriée du disque cible. Si vous utilisez un fichier VHDX avec une taille de secteur logique de 4 Ko, le disque cible doit être défini sur 4 Ko. Si vous utilisez un fichier de disque dur virtuel avec une taille de secteur logique de 512, le disque cible doit être défini sur 512.

Les fichiers VHDX avec une taille de secteur logique de 512 Ko ne sont pas pris en charge.

$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

Si vous souhaitez charger un autre type de disque, remplacez Standard_LRS par Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS ou UltraSSD_LRS.

Générer une signature d’accès partagé accessible en écriture

Maintenant que vous avez créé un disque managé vierge configuré pour le processus de chargement, vous pouvez y charger un disque dur virtuel. Pour charger un disque dur virtuel sur le disque, il vous faut une signature d’accès partagé accessible en écriture afin de pouvoir la référencer en tant que destination pour votre chargement.

Pour générer une signature d’accès partagé accessible en écriture de votre disque managé vide, remplacez <yourdiskname> et <yourresourcegroupname>, puis utilisez les commandes suivantes :

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

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

Charger un disque dur virtuel VHD ou VHDX

Maintenant que vous disposez d'une SAS pour votre disque managé vierge, vous pouvez l'utiliser pour définir votre disque managé en tant que destination de votre commande de chargement.

Utilisez AzCopy v10 pour charger votre fichier VHD ou VHDX local sur un disque managé en spécifiant l’URI de la SAS que vous avez générée.

Ce chargement présente le même débit que le disque HDD Standard correspondant. Par exemple, pour une taille correspondant à S4, vous aurez un débit allant jusqu'à 60 Mio/s. Mais pour une taille correspondant à S70, le débit ira jusqu’à 500 Mio/s.

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

Lorsque vous avez terminé le chargement et que vous n’avez plus rien à écrire sur le disque, révoquez la SAS. La révocation de la SAS changera l'état du disque managé et vous permettra de le joindre à une machine virtuelle.

Remplacez <yourdiskname> et <yourresourcegroupname>, puis exécutez la commande suivante :

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

Copier un disque managé

Le chargement direct simplifie également le processus de copie d’un disque managé. Vous pouvez effectuer une copie au sein d’une même région ou copier votre disque managé vers une autre région.

Le script suivant effectue cette opération pour vous. Le processus est similaire aux étapes décrites précédemment, à quelques différences près puisque vous utilisez un disque existant.

Important

Vous devez ajouter un décalage de 512 quand vous fournissez la taille en octets d’un disque managé d’Azure. En effet, Azure omet le pied de page lors du retour de la taille du disque. Si vous ne le faites pas, la copie échouera. Le script suivant s’en charge pour vous.

Remplacez <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourOSTypeHere> et <yourTargetLocationHere> (la valeur d'emplacement pourrait par exemple être uswest2) par vos valeurs, puis exécutez le script suivant afin de copier un disque managé.

Conseil

Si vous créez un disque de système d’exploitation, ajoutez -HyperVGeneration '<yourGeneration>' à 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 

Étapes suivantes

Maintenant que vous avez chargé un disque dur virtuel sur un disque managé, vous pouvez attacher votre disque à une machine virtuelle et commencer à l’utiliser.

Pour découvrir comment joindre un disque de données à une machine virtuelle, consultez l’article suivant : Joindre un disque de données à une machine virtuelle Windows à l'aide de PowerShell. Pour utiliser le disque comme disque de système d’exploitation, consultez Créer une machine virtuelle Windows à partir d’un disque spécialisé.

Si vous avez d’autres questions, consultez la section sur le chargement d’un disque managé dans le FAQ.