Koppla en datadisk till en virtuell Windows-dator med PowerShell

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Windows-datorer ✔️

Den här artikeln visar hur du kopplar både nya och befintliga diskar till en virtuell Windows-dator med hjälp av PowerShell.

Granska först de här tipsen:

Den här artikeln använder PowerShell i Azure Cloud Shell, som ständigt uppdateras till den senaste versionen. Öppna Cloud Shell genom att välja Prova längst upp i alla kodblock.

Kortare svarstider

I utvalda regioner har svarstiden för diskanslutning minskat, så du ser en förbättring på upp till 15 %. Det här är användbart om du har planerade/oplanerade redundansväxlingar mellan virtuella datorer, om du skalar din arbetsbelastning eller kör en tillståndskänslig arbetsbelastning i hög skala, till exempel Azure Kubernetes Service. Den här förbättringen är dock begränsad till det explicita kommandot för diskanslutning, Add-AzVMDataDisk. Prestandaförbättringen visas inte om du anropar ett kommando som implicit kan utföra en bifogad fil, till exempel Update-AzVM. Du behöver inte vidta någon annan åtgärd än att anropa kommandot explicit bifoga för att se den här förbättringen.

Kortare svarstider är för närvarande tillgängliga i alla offentliga regioner förutom:

  • Kanada, centrala
  • Central US
  • East US
  • USA, östra 2
  • USA, södra centrala
  • Västra USA 2
  • Tyskland, norra
  • Jio Västra Indien
  • Europa, norra
  • Europa, västra

Lägga till en tom datadisk till en virtuell dator

Det här exemplet visar hur du lägger till en tom datadisk till en befintlig virtuell dator.

Använda hanterade diskar

$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

Använda hanterade diskar i en tillgänglighetszon

Om du vill skapa en disk i en tillgänglighetszon använder du New-AzDiskConfig med parametern -Zone . I följande exempel skapas en disk i zon 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

Initiera disken

När du har lagt till en tom disk måste du initiera den. Om du vill initiera disken kan du logga in på en virtuell dator och använda diskhantering. Om du har aktiverat WinRM och ett certifikat på den virtuella datorn när du skapade den kan du använda powershell-fjärranslutningen för att initiera disken. Du kan också använda ett anpassat skripttillägg:

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

Skriptfilen kan innehålla kod för att initiera diskarna, till exempel:

Kommentar

Exempelskriptet använder MBR-partitionsformat. Om disken är två tebibyte (TiB) eller större måste du använda GPT-partitionering. Om den är under två TiB kan du använda antingen MBR eller 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++
    }

Koppla en befintlig datadisk till en virtuell dator

Du kan koppla en befintlig hanterad disk till en virtuell dator som en datadisk.

$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

Nästa steg

Du kan också distribuera hanterade diskar med hjälp av mallar. Mer information finns i Använda hanterade diskar i Azure Resource Manager-mallar eller snabbstartsmallen för att distribuera flera datadiskar.