Collegare un disco dati a una macchina virtuale Windows con PowerShell

Si applica a: ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili

Questo articolo illustra come collegare dischi nuovi ed esistenti a una macchina virtuale Windows tramite PowerShell.

Esaminare prima di tutto i suggerimenti seguenti:

Questo articolo usa PowerShell all'interno di Azure Cloud Shell, che viene costantemente aggiornato alla versione più recente. Per aprire Cloud Shell, selezionare Prova nella parte superiore di qualsiasi blocco di codice.

Latenza più bassa

Nelle aree selezionate, la latenza di collegamento del disco è stata ridotta, quindi si noterà un miglioramento fino al 15%. Ciò è utile se sono stati pianificati o non pianificati failover tra macchine virtuali, se si ridimensiona il carico di lavoro o si esegue un carico di lavoro con stato a scalabilità elevata, ad esempio il servizio Azure Kubernetes. Tuttavia, questo miglioramento è limitato al comando di collegamento esplicito del disco, Add-AzVMDataDisk. Non verrà visualizzato il miglioramento delle prestazioni se si chiama un comando che può eseguire in modo implicito un collegamento, ad esempio Update-AzVM. Non è necessario eseguire alcuna azione diversa da chiamare il comando di collegamento esplicito per visualizzare questo miglioramento.

La latenza inferiore è attualmente disponibile in ogni area pubblica, ad eccezione di:

  • Canada centrale
  • Stati Uniti centrali
  • Stati Uniti orientali
  • Stati Uniti orientali 2
  • Stati Uniti centro-meridionali
  • West US 2
  • Germania settentrionale
  • India occidentale Jio
  • Europa settentrionale
  • Europa occidentale

Aggiungere un disco dati vuoto a una macchina virtuale

Questo esempio illustra come aggiungere un disco dati vuoto a una macchina virtuale esistente.

Uso di Managed Disks

$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

Uso di Managed Disks in una zona di disponibilità

Per creare un disco in una zona di disponibilità, usare New AzDiskConfig con il parametro -Zone. L'esempio seguente crea un disco nella zona 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

Inizializzare il disco

Dopo aver aggiunto un disco vuoto, è necessario inizializzarlo. Per inizializzare il disco, è possibile accedere a una macchina virtuale e usare la funzionalità di gestione del disco. Se sono stati abilitati il componente WinRM e un certificato nella macchina virtuale al momento della creazione, è possibile usare PowerShell remoto per inizializzare il disco. È anche possibile usare un'estensione di script personalizzata:

    $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"

Il file di script può contenere il codice per inizializzare i dischi, ad esempio:

Nota

Lo script di esempio usa lo stile di partizione MBR. Se il disco è di due tebibyte (TiB) o superiore, è necessario usare il partizionamento GPT. Se è inferiore a due TiB, è possibile usare MBR o GPT.

    $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++
    }

Collegare un disco dati esistente a una macchina virtuale

È possibile collegare un disco gestito esistente a una macchina virtuale come disco dati.

$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

Passaggi successivi

È anche possibile distribuire dischi gestiti usando modelli. Per altre informazioni, vedere Usare i dischi gestiti nei modelli di Azure Resource Managero il modello di avvio rapido per la distribuzione di più dischi dati.