Attacher un disque de données à une machine virtuelle Windows dans Azure avec PowerShell

S’applique à : ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles

Cet article vous explique comment attacher des disques nouveaux et existants à une machine virtuelle Windows à l’aide de PowerShell.

Commencez par passer en revue ces conseils :

Cet article utilise PowerShell dans Azure Cloud Shell, qui est constamment mise à jour vers la dernière version. Pour ouvrir Cloud Shell, sélectionnez Essayer en haut d’un bloc de code.

Latence plus faible

Dans certaines régions, la latence d’attachement de disque a été réduite. Vous pourrez donc constater une amélioration pouvant atteindre jusqu’à 15 %. Cela est utile si vous avez des basculements planifiés/non planifiés entre machines virtuelles, si vous mettez à l’échelle votre charge de travail ou si vous exécutez une charge de travail avec état à grande échelle telle qu’Azure Kubernetes Service. Cependant, cette amélioration est limitée à la commande d’attachement de disque explicite, Add-AzVMDataDisk. Vous ne constaterez pas d’amélioration des performances si vous appelez une commande qui peut implicitement effectuer un attachement, comme Update-AzVM. Vous n’avez rien besoin de faire sinon appeler la commande d’attachement explicite pour voir cette amélioration.

Il est actuellement possible de bénéficier d’une latence réduite dans chaque région publique, à l’exception des suivantes :

  • Centre du Canada
  • USA Centre
  • USA Est
  • USA Est 2
  • États-Unis - partie centrale méridionale
  • USA Ouest 2
  • Allemagne Nord
  • Inde Ouest Jio
  • Europe Nord
  • Europe Ouest

Ajouter un disque de données vide à une machine virtuelle

Cet exemple montre comment ajouter un disque de données vide à une machine virtuelle existante.

Utilisation de disques managés

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

Utilisation de disques managés dans un groupe à haute disponibilité

Pour créer un disque dans une zone de disponibilité, utilisez New-AzDiskConfig avec le paramètre -Zone. L’exemple suivant crée un disque dans la zone 1.

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US 2'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128 -Zone 1
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

Initialiser le disque

Après avoir ajouté un disque vide, vous devez l’initialiser. Pour initialiser le disque, vous pouvez vous connecter à une machine virtuelle et utiliser la gestion des disques. Si vous avez activé WinRM et un certificat sur la machine virtuelle lors de sa création, vous pouvez utiliser PowerShell à distance pour initialiser le disque. Vous pouvez également utiliser une extension de script personnalisée :

    $location = "location-name"
    $scriptName = "script-name"
    $fileName = "script-file-name"
    Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $locName -VMName $vmName -Name $scriptName -TypeHandlerVersion "1.4" -StorageAccountName "mystore1" -StorageAccountKey "primary-key" -FileName $fileName -ContainerName "scripts"

Le fichier de script peut contenir du code pour initialiser les disques, par exemple :

    $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number

    $letters = 70..89 | ForEach-Object { [char]$_ }
    $count = 0
    $labels = "data1","data2"

    foreach ($disk in $disks) {
        $driveLetter = $letters[$count].ToString()
        $disk |
        Initialize-Disk -PartitionStyle MBR -PassThru |
        New-Partition -UseMaximumSize -DriveLetter $driveLetter |
        Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force
	$count++
    }

Ajouter un disque de données existant à une machine virtuelle

Vous pouvez attacher un disque géré existant à une machine virtuelle en tant que disque de données.

$rgName = "myResourceGroup"
$vmName = "myVM"
$dataDiskName = "myDisk"
$disk = Get-AzDisk -ResourceGroupName $rgName -DiskName $dataDiskName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName

$vm = Add-AzVMDataDisk -CreateOption Attach -Lun 0 -VM $vm -ManagedDiskId $disk.Id

Update-AzVM -VM $vm -ResourceGroupName $rgName

Étapes suivantes

Vous pouvez également déployer des disques managés à l’aide de modèles. Pour plus d’informations, consultez Utilisation de disques managés dans les modèles Azure Resource Manager ou le modèle de démarrage rapide consacré au déploiement de plusieurs disques de données.