Anexar um disco de dados a uma VM do Windows com o PowerShell

Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Windows

Este artigo mostra-lhe como anexar discos novos e existentes a uma máquina virtual do Windows com o PowerShell.

Primeiro, reveja estas sugestões:

Este artigo utiliza o PowerShell no Cloud Shell do Azure, que é constantemente atualizado para a versão mais recente. Para abrir o Cloud Shell, selecione Experimentar na parte superior de qualquer bloco de código.

Latência mais baixa

Em regiões selecionadas, a latência de anexação do disco foi reduzida, pelo que verá uma melhoria de até 15%. Isto é útil se tiver ativações pós-falha planeadas/não planeadas entre VMs, estiver a dimensionar a carga de trabalho ou estiver a executar uma carga de trabalho com estado de alta escala, como Azure Kubernetes Service. No entanto, esta melhoria está limitada ao comando de anexação de disco explícito, Add-AzVMDataDisk. Não verá a melhoria de desempenho se chamar um comando que possa executar implicitamente um anexo, como Update-AzVM. Não precisa de efetuar qualquer ação que não seja chamar o comando de anexação explícito para ver esta melhoria.

A latência mais baixa está atualmente disponível em todas as regiões públicas, exceto em:

  • Canadá Central
  • E.U.A. Central
  • E.U.A. Leste
  • E.U.A. Leste 2
  • E.U.A. Centro-Sul
  • E.U.A. Oeste 2
  • Norte da Alemanha
  • Jio, Oeste da Índia
  • Europa do Norte
  • Europa Ocidental

Adicionar um disco de dados vazio a uma máquina virtual

Este exemplo mostra como adicionar um disco de dados vazio a uma máquina virtual existente.

Utilizar discos geridos

$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

Utilizar discos geridos numa Zona de Disponibilidade

Para criar um disco numa Zona de Disponibilidade, utilize New-AzDiskConfig com o -Zone parâmetro . O exemplo seguinte cria um disco na 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

Inicializar o disco

Depois de adicionar um disco vazio, terá de o inicializar. Para inicializar o disco, pode iniciar sessão numa VM e utilizar a gestão de discos. Se ativou o WinRM e um certificado na VM quando o criou, pode utilizar o PowerShell remoto para inicializar o disco. Também pode utilizar uma extensão de script personalizado:

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

O ficheiro de script pode conter código para inicializar os discos, por exemplo:

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

Anexar um disco de dados existente a uma VM

Pode anexar um disco gerido existente a uma VM como um disco de dados.

$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

Passos seguintes

Também pode implementar discos geridos com modelos. Para obter mais informações, veja Using Managed Disks in Azure Resource Manager Templates or the quickstart template for deploying multiple data disks (Utilizar Managed Disks nos Modelos de Resource Manager do Azure ou o modelo de início rápido para implementar vários discos de dados).