Tutorial: Gerenciar discos com o Azure PowerShell

As máquinas virtuais (VMs) do Azure usam discos para armazenar sistemas operacionais (SO), aplicativos e dados. Ao criar uma VM, é importante escolher um tamanho de disco e uma configuração apropriados para a carga de trabalho esperada.

Este tutorial aborda a implantação e o gerenciamento de discos VM. Neste tutorial, irá aprender a:

  • Criar, anexar e inicializar um disco de dados
  • Verificar o estado de um disco
  • Inicializar um disco
  • Expandir e atualizar um disco
  • Desanexar e excluir um disco

Pré-requisitos

Você deve ter uma conta do Azure com uma assinatura ativa. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Button to launch Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Criar uma VM

Os exercícios neste tutorial exigem uma VM. Siga as etapas nesta seção para criar um.

Antes de começar, localize a $azRegion variável localizada na primeira linha do código de exemplo e atualize o valor para refletir a região desejada. Por exemplo, para especificar a região dos EUA Central, use $azRegion = "Central US". Em seguida, use o código para implantar uma VM dentro de um novo grupo de recursos. Você será solicitado a fornecer valores de nome de usuário e senha para a conta de administrador local da VM.

$azRegion = "[Your Region]"
$azResourceGroup = "myDemoResourceGroup"
$azVMName = "myDemoVM"
$azDataDiskName = "myDemoDataDisk"

New-AzVm `
    -Location $azRegion `
    -ResourceGroupName $azResourceGroup `
    -Name $azVMName `
    -Size "Standard_D2s_v3" `
    -VirtualNetworkName "myDemoVnet" `
    -SubnetName "myDemoSubnet" `
    -SecurityGroupName "myDemoNetworkSecurityGroup" `
    -PublicIpAddressName "myDemoPublicIpAddress"

A saída confirma a criação bem-sucedida da VM.

ResourceGroupName        : myDemoResourceGroup
Id                       : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoTestVM
VmId                     : [{GUID}]
Name                     : myDemoVM
Type                     : Microsoft.Compute/virtualMachines
Location                 : centralus
Tags                     : {}
HardwareProfile          : {VmSize}
NetworkProfile           : {NetworkInterfaces}
OSProfile                : {ComputerName, AdminUsername, WindowsConfiguration, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState        : Succeeded
StorageProfile           : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mydemovm-abc123.Central US.cloudapp.azure.com

A VM é provisionada e dois discos são criados e anexados automaticamente.

  • Um disco do sistema operacional, que hospeda o sistema operacional da máquina virtual.
  • Um disco temporário, que é usado principalmente para operações como processamento temporário de dados.

Adicionar um disco de dados

Recomendamos que você separe os dados do aplicativo e do usuário dos dados relacionados ao sistema operacional sempre que possível. Se precisar armazenar dados de usuário ou aplicativo em sua VM, normalmente criará e anexará discos de dados adicionais.

Siga as etapas nesta seção para criar, anexar e inicializar um disco de dados na VM.

Criar o disco de dados

Esta secção orienta-o através da criação de um disco de dados.

  1. Antes que um disco de dados possa ser criado, você deve primeiro criar um objeto de disco. O exemplo de código a seguir usa o cmdlet New-AzDiskConfig para configurar um objeto de disco.

    $diskConfig = New-AzDiskConfig `
        -Location $azRegion `
        -CreateOption Empty `
        -DiskSizeGB 128 `
        -SkuName "Standard_LRS"
    
  2. Depois que o objeto de disco for criado, use o cmdlet New-AzDisk para provisionar um disco de dados.

    $dataDisk = New-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName `
        -Disk $diskConfig
    

    Você pode usar o cmdlet Get-AzDisk para verificar se o disco foi criado.

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName
    

    Neste exemplo, a saída confirma que o disco foi criado. Os DiskState valores da propriedade e ManagedBy confirmam que o disco ainda não está conectado.

    ResourceGroupName            : myDemoResourceGroup
    ManagedBy                    :
    ManagedByExtended            : {}
    OsType                       :
    DiskSizeGB                   : 128
    DiskSizeBytes                : 137438953472
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Name                         : myDemoDataDisk
    

Anexar o disco de dados

Um disco de dados deve ser anexado a uma VM antes que a VM possa acessá-lo. Conclua as etapas nesta seção para criar uma referência para a VM, conectar o disco e atualizar a configuração da VM.

  1. Obtenha a VM à qual você anexará o disco de dados. O código de exemplo a seguir usa o cmdlet Get-AzVM para criar uma referência à VM.

    $vm = Get-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    
  2. Em seguida, anexe o disco de dados à configuração da VM com o cmdlet Add-AzVMDataDisk .

    $vm = Add-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName `
        -CreateOption Attach `
        -ManagedDiskId $dataDisk.Id `
        -Lun 1
    
  3. Por fim, atualize a configuração da VM com o cmdlet Update-AzVM .

    Update-AzVM `
        -ResourceGroupName $azResourceGroup `
        -VM $vm
    

    Após uma breve pausa, a saída confirma um anexo bem-sucedido.

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

Inicializar o disco de dados

Depois que um disco de dados é conectado à VM, o sistema operacional precisa ser configurado para usar o disco. A seção a seguir fornece orientação sobre como se conectar à VM remota e configurar o primeiro disco adicionado.

  1. Inicie sessão no portal do Azure.

  2. Localize a VM à qual você anexou o disco de dados. Crie uma ligação RDP (Remote Desktop Protocol) e inicie sessão como administrador local.

  3. Depois de estabelecer uma conexão RDP com a VM remota, selecione o menu Iniciar do Windows. Digite PowerShell na caixa de pesquisa e selecione Windows PowerShell para abrir uma janela do PowerShell.

    Image of a remote desktop connection window.

  4. Na janela aberta do PowerShell, execute o seguinte script.

    Get-Disk | Where PartitionStyle -eq 'raw' |
        Initialize-Disk -PartitionStyle MBR -PassThru |
        New-Partition -AssignDriveLetter -UseMaximumSize |
        Format-Volume -FileSystem NTFS -NewFileSystemLabel "myDemoDataDisk" -Confirm:$false
    

    A saída confirma uma inicialização bem-sucedida.

    DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining   Size
    ----------- --------------- ---------- --------- ------------ ----------------- -------------   ----
    F           myDemoDataDisk  NTFS       Fixed     Healthy      OK                    127.89 GB 128 GB
    

Expandir um disco

Você pode expandir os discos do Azure para fornecer capacidade de armazenamento extra quando sua VM estiver com pouco espaço disponível em disco.

Alguns cenários exigem que os dados sejam armazenados no disco do sistema operacional. Por exemplo, pode ser necessário oferecer suporte a aplicativos herdados que instalam componentes na unidade do sistema operacional. Você também pode ter a necessidade de migrar um PC físico local ou VM com uma unidade de sistema operacional maior. Nesses casos, pode ser necessário expandir o disco do sistema operacional de uma VM.

A redução de um disco existente não é suportada e pode resultar em perda de dados.

Atualizar o tamanho do disco

Siga as etapas abaixo para redimensionar o disco do sistema operacional ou um disco de dados.

  1. Selecione a VM que contém o disco que você redimensionará com o Get-AzVM cmdlet.

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Antes de redimensionar o disco de uma VM, você deve parar a VM. Use o Stop-AzVM cmdlet para parar a VM. Ser-lhe-á solicitada uma confirmação.

    Importante

    Antes de iniciar um desligamento da VM, sempre confirme se não há recursos ou dados importantes que possam ser perdidos.

    Stop-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Após uma breve pausa, a saída confirma que a máquina foi parada com êxito.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:10:23 PM
    EndTime     : 9/13/2021 7:11:12 PM
    Error       :
    
  3. Depois que a VM for interrompida, obtenha uma referência ao sistema operacional ou ao disco de dados anexado à VM com o Get-AzDisk cmdlet.

    O exemplo a seguir seleciona o disco do sistema operacional da VM.

    $disk= Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $vm.StorageProfile.OsDisk.Name
    

    O exemplo a seguir seleciona o primeiro disco de dados da VM.

        $disk= Get-AzDisk `
            -ResourceGroupName $azResourceGroup `
            -DiskName $vm.StorageProfile.DataDisks[0].Name
    
  4. Agora que você tem uma referência ao disco, defina o tamanho do disco para 250 GiB.

    Importante

    O novo tamanho deve ser maior que o tamanho do disco existente. O máximo permitido é de 4.095 GiB para discos do sistema operacional.

    $disk.DiskSizeGB = 250
    
  5. Em seguida, atualize a imagem de disco com o Update-AzDisk cmdlet.

    Update-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -Disk $disk -DiskName $disk.Name
    

    A imagem de disco é atualizada e a saída confirma o novo tamanho do disco.

    ResourceGroupName            : myDemoResourceGroup
    ManagedBy                    : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoVM
    Sku                          : Microsoft.Azure.Management.Compute.Models.DiskSku
    TimeCreated                  : 9/135/2021 6:41:10 PM
    CreationData                 : Microsoft.Azure.Management.Compute.Models.CreationData
    DiskSizeGB                   : 250
    DiskSizeBytes                : 268435456000
    UniqueId                     : {GUID}
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Reserved
    Encryption                   : Microsoft.Azure.Management.Compute.Models.Encryption
    Id                           : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/disks/myDemoDataDisk
    Name                         : myDemoDataDisk
    Type                         : Microsoft.Compute/disks
    Location                     : centralus
    
    
  6. Por fim, reinicie a VM com o Start-AzVM cmdlet.

    Start-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Após uma breve pausa, a saída confirma que a máquina foi iniciada com êxito.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:44:54 PM
    EndTime     : 9/13/2021 7:45:15 PM
    Error       :
    

Expanda o volume do disco no SO

Antes de aproveitar o novo tamanho do disco, você precisa expandir o volume dentro do sistema operacional. Siga as etapas abaixo para expandir o volume do disco e aproveitar o novo tamanho do disco.

  1. Inicie sessão no portal do Azure.

  2. Localize a VM à qual você anexou o disco de dados. Crie uma ligação RDP (Remote Desktop Protocol) e inicie sessão. Se você não tiver mais acesso a uma conta administrativa, crie um objeto de credencial para um nome de usuário e senha especificados com o cmdlet Get-Credential .

  3. Depois de estabelecer uma conexão RDP com a VM remota, selecione o menu Iniciar do Windows. Digite PowerShell na caixa de pesquisa e selecione Windows PowerShell para abrir uma janela do PowerShell.

    Image of a remote desktop connection window.

  4. Abra o PowerShell e execute o seguinte script. Altere o -DriveLetter valor da variável conforme apropriado. Por exemplo, para redimensionar a partição na unidade F: , use $driveLetter = "F".

    $driveLetter = "[Drive Letter]" 
    $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) 
    Resize-Partition `
        -DriveLetter $driveLetter `
        -Size $size.SizeMax
    
  5. Minimize a janela RDP e volte para o Azure Cloud Shell. Use o Get-AzDisk cmdlet para verificar se o disco foi redimensionado com êxito.

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup | Out-Host -Paging
    

Atualizar um disco

Há várias maneiras de responder a alterações nas cargas de trabalho da sua organização. Por exemplo, pode optar por atualizar uma HDD padrão para uma SSD premium para lidar com o aumento da procura.

Siga as etapas nesta seção para atualizar um disco gerenciado de padrão para premium.

  1. Selecione a VM que contém o disco que você atualizará com o Get-AzVM cmdlet.

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Antes de atualizar o disco de uma VM, você deve parar a VM. Use o Stop-AzVM cmdlet para parar a VM. Ser-lhe-á solicitada uma confirmação.

    Importante

    Antes de iniciar um desligamento da VM, sempre confirme se não há recursos ou dados importantes que possam ser perdidos.

    Stop-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Após uma breve pausa, a saída confirma que a máquina foi parada com êxito.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:10:23 PM
    EndTime     : 9/13/2021 7:11:12 PM
    Error       :
    
  3. Depois que a VM for interrompida, obtenha uma referência ao sistema operacional ou ao disco de dados anexado à VM com o Get-AzDisk cmdlet.

    O exemplo a seguir seleciona o disco do sistema operacional da VM.

    $disk= Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $vm.StorageProfile.OsDisk.Name
    

    O exemplo a seguir seleciona o primeiro disco de dados da VM.

        $disk= Get-AzDisk `
            -ResourceGroupName $azResourceGroup `
            -DiskName $vm.StorageProfile.DataDisks[0].Name
    
  4. Agora que você tem uma referência ao disco, defina a SKU do disco como Premium_LRS.

    $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')
    
  5. Em seguida, atualize a imagem de disco com o Update-AzDisk cmdlet.

    Update-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -Disk $disk -DiskName $disk.Name
    

    A imagem de disco é atualizada. Use o código de exemplo a seguir para validar que a SKU do disco foi atualizada.

    $disk.Sku.Name
    

    A saída confirma o novo SKU do disco.

    Premium_LRS
    
  6. Por fim, reinicie a VM com o Start-AzVM cmdlet.

    Start-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Após uma breve pausa, a saída confirma que a máquina foi iniciada com êxito.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:44:54 PM
    EndTime     : 9/13/2021 7:45:15 PM
    Error       :
    

Desanexar um disco de dados

Você pode desanexar um disco de dados de uma VM quando quiser anexá-lo a uma VM diferente ou quando não for mais necessário. Por padrão, os discos desanexados não são excluídos para evitar a perda não intencional de dados. Um disco desanexado continuará a incorrer em encargos de armazenamento até ser excluído.

  1. Primeiro, selecione a VM à qual o disco está anexado com o Get-AzVM cmdlet.

    $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Em seguida, desanexe o disco da VM com o Remove-AzVMDataDisk cmdlet.

    Remove-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName
    
  3. Atualize o estado da VM com o Update-AzVM cmdlet para remover o disco de dados.

    Update-AzVM `
        -ResourceGroupName $azResourceGroup `
        -VM $vm
    

    Após uma breve pausa, a saída confirma que a VM foi atualizada com êxito.

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

Excluir um disco de dados

Quando você exclui uma VM, os discos de dados conectados à VM permanecem provisionados e continuam a incorrer em cobranças até serem excluídos. Esse comportamento padrão ajuda a evitar a perda de dados causada pela exclusão não intencional.

Você pode usar o seguinte exemplo de script do PowerShell para excluir discos não anexados. A recuperação de discos é limitada ao myDemoResourceGroup porque o -ResourceGroupName switch é usado com o Get-AzDisk cmdlet.

# Get all disks in resource group $azResourceGroup
$allDisks = Get-AzDisk -ResourceGroupName $azResourceGroup

# Determine the number of disks in the collection
if($allDisks.Count -ne 0) {

    Write-Host "Found $($allDisks.Count) disks."

    # Iterate through the collection
    foreach ($disk in $allDisks) {

        # Use the disk's "ManagedBy" property to determine if it is unattached
        if($disk.ManagedBy -eq $null) {

            # Confirm that the disk can be deleted
            Write-Host "Deleting unattached disk $($disk.Name)."
            $confirm = Read-Host "Continue? (Y/N)"
            if ($confirm.ToUpper() -ne 'Y') { break }
            else {

                # Delete the disk
                $disk | Remove-AzDisk -Force 
                Write-Host "Unattached disk $($disk.Name) deleted."
            }
        }
    }
}

O disco de dados desanexado é excluído conforme mostrado pela saída.

Name      : abcd1234-ab12-cd34-ef56-abcdef123456
StartTime : 9/13/2021 10:14:05 AM
EndTime   : 9/13/2021 10:14:35 AM
Status    : Succeeded
Error     :

Clean up resources (Limpar recursos)

Quando não for mais necessário, exclua o grupo de recursos, a VM e todos os recursos relacionados. Você pode usar o seguinte exemplo de script do PowerShell para excluir o grupo de recursos criado anteriormente neste tutorial.

Atenção

Tenha cuidado ao excluir um grupo de recursos. Para evitar a perda de dados importantes, sempre confirme se não há recursos ou dados importantes contidos no grupo de recursos antes que ele seja excluído.

    Remove-AzResourceGroup -Name $azResourceGroup

Você será solicitado a confirmar. Após uma breve pausa, a resposta confirma True que o myDemoResourceGroup foi excluído com êxito.

Confirm
Are you sure you want to remove resource group 'myDemoResourceGroup'
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
True

Próximos passos

Neste tutorial, ficou a saber como:

  • Criar, anexar e inicializar um disco de dados
  • Verificar o estado de um disco
  • Inicializar um disco
  • Expandir e atualizar um disco
  • Desanexar e excluir um disco

Avance para o próximo tutorial para aprender a automatizar a configuração de VM.