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 HDD Standard, SSD Standard et SSD Premium. Il n’est pas encore pris en charge pour les disques Ultra.
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.
Chargements sécurisés avec Azure AD
Si vous utilisez Azure Active Directory (Azure AD) 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 Azure AD 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é Azure AD 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 Azure AD, contactez cet e-mail : azuredisks@microsoft.com
Prérequis
- Installez le dernier module Azure PowerShell.
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 Azure AD.
Attribuer un rôle RBAC
Pour accéder aux disques managés sécurisés avec Azure AD, 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.
En général, vous utiliserez Add-AzVHD. Toutefois, si vous devez charger un disque dur virtuel d’une taille supérieure à 50 Gio, il est conseillé de charger le disque dur virtuel manuellement avec AzCopy. Avec AzCopy, le chargement des disques durs virtuels de plus de 50 Gio est plus rapide.
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.
- 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.
Télécharger un disque dur virtuel
(Facultatif) Accorder l’accès au disque
Si Azure AD 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 :
Notes
Si vous utilisez Azure AD 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
- Téléchargez la dernière version d’AzCopy v10.
- Installer le module Azure PowerShell.
- Un VHD de taille fixe qui a été préparé pour Azure et stocké localement.
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 :
Conseil
Si vous créez un disque de système d’exploitation, ajoutez -HyperVGeneration '<yourGeneration>'
à New-AzDiskConfig
.
Si vous utilisez Azure AD pour sécuriser vos chargements, ajoutez -dataAccessAuthMode 'AzureActiveDirectory'
à New-AzDiskConfig
.
$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length
$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 disque SSD Premium ou Standard, remplacez Standard_LRS par Premium_LRS ou par StandardSSD_LRS. Les disques Ultra ne sont actuellement pas pris en charge.
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>'
Télécharger un disque dur virtuel
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 de disque dur virtuel 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.