Compartilhar via


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

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

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

Primeiro, leia estas dicas:

Este tutorial usa o PowerShell na Azure Cloud Shell, que é constantemente atualizada para a versão mais recente. Para abrir o Cloud Shell, selecione Experimentar na parte superior de um bloco de código qualquer.

Menor latência

Nas regiões selecionadas, a latência de anexação do disco foi reduzida, ou seja, você verá um aprimoramento de até 15%. Isso será útil se você tiver failovers planejados/não planejados entre VMs, estiver escalando sua carga de trabalho ou estiver executando uma carga de trabalho com estado de alta escala, como o Serviço de Kubernetes do Azure. No entanto, esse aprimoramento é limitado ao comando de anexação de disco explícito, Add-AzVMDataDisk. Você não verá o aprimoramento de desempenho se chamar um comando que possa executar implicitamente uma anexação, como Update-AzVM. Você não precisa realizar nenhuma ação além de chamar o comando de anexação explícito para ver esse aprimoramento.

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

  • Canadá Central
  • Centro dos EUA
  • Leste dos EUA
  • Leste dos EUA 2
  • Centro-Sul dos Estados Unidos
  • Oeste dos EUA 2
  • Norte da Alemanha
  • Oeste da Índia JIO
  • Norte da Europa
  • 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.

Usar discos gerenciados

$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

Usando discos gerenciados em uma zona de disponibilidade

Para criar um disco em uma zona de disponibilidade, use New-AzDiskConfig com o parâmetro -Zone. O exemplo a seguir 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, você precisará inicializá-lo. Para inicializar o disco, você pode entrar em uma VM e usar o gerenciamento de disco. Se você ativou o WinRM e um certificado na VM ao criá-lo, poderá usar o PowerShell remoto para inicializar o disco. Você também pode usar 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 arquivo de script pode conter código para inicializar os discos, por exemplo:

Observação

O script de exemplo usa o estilo de partição MBR. Se o disco tiver dois tebibytes (TiB) ou mais, você deverá usar o particionamento GPT. Se estiver abaixo de dois TiB, você poderá usar MBR ou 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++
    }

Anexar um disco de dados existente a uma VM

Você pode anexar um disco gerenciado 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

Próximas etapas

Você também pode implantar discos gerenciados usando modelos. Para obter mais informações, consulte Usando Managed Disks em modelos do Azure Resource Manager ou o modelo de início rápido para implantar vários discos de dados.