Aplica-se a: ✔️ VMs Linux ✔️ VMs Windows ✔️ Conjuntos de dimensionamento flexíveis
Este artigo mostra como alterar o tamanho da VMde uma máquina virtual existente.
Depois de criar uma VM (máquina virtual), você pode expandir ou reduzir a VM, alterando o tamanho da VM. Em alguns casos, você deverá desalocar a VM primeiro. A desalocação poderá ser necessária se o novo tamanho não estiver disponível no mesmo cluster de hardware que está hospedando a VM no momento. É importante entender que, mesmo quando a desalocação não for necessária, se a máquina virtual estiver em execução no momento, alterar seu tamanho fará com que ela seja reiniciada. Por isso você deve considerar a alteração do tamanho da VM como um procedimento disruptivo, especialmente para cargas de trabalho com estado hospedadas na VM.
Se sua VM usa a Premium Storage - Armazenamento Premium, certifique-se de que você escolha um s versão de tamanho para obter suporte de armazenamento Premium. Por exemplo, escolha Standard_E4s_v3 em vez de Standard_E4_v3.
Digite máquinas virtuais na pesquisa. Em Serviços, selecione Máquinas virtuais.
Na página Máquinas Virtuais, selecione a máquina virtual que você deseja redimensionar.
No menu à esquerda, selecione tamanho. Escolha um novo tamanho compatível na lista de tamanhos disponíveis
Depois de escolher um tamanho, selecione Redimensionar.
Observação
Se a máquina virtual estiver em execução no momento, alterar seu tamanho fará com que ela seja reiniciada.
Se a VM ainda estiver em execução e você não vir o tamanho que deseja na lista, a interrupção da máquina virtual poderá revelar mais tamanhos.
Aviso
Desalocar a VM também libera os endereços IP dinâmicos atribuídos à VM. Os discos do sistema operacional e de dados não são afetados.
Se você estiver redimensionando uma VM de produção, considere usar as Reservas de Capacidade do Azure para reservar a capacidade de computação na região.
Defina as variáveis de nome da VM e grupo de recursos. Substitua os valores pelas informações da VM que você deseja redimensionar.
Use o PowerShell para redimensionar uma VM que não está em um conjunto de disponibilidade.
Esse script do PowerShell do Cloud Shell inicializa as variáveis $resourceGroup, $vm e $size com o nome do grupo de recursos, o nome da VM e o tamanho da VM desejado, respectivamente. Em seguida, recupera o objeto de VM do Azure usando o cmdlet Get-AzVM. O script modifica a propriedade VmSize do perfil de hardware da VM para o tamanho desejado. Por fim, ele aplica essas alterações à VM no Azure usando o cmdlet Update-AzVM.
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
Como alternativa à execução do script no Azure Cloud Shell, você também pode executá-lo localmente em seu computador. Esta versão local do script do PowerShell inclui etapas adicionais para importar o módulo do Azure e autenticar sua conta do Azure.
Observação
O PowerShell local pode exigir que a VM seja reiniciada para entrar em vigor.
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
Aviso
Desalocar a VM também libera os endereços IP dinâmicos atribuídos à VM. Os discos do sistema operacional e de dados não são afetados.
Se você estiver redimensionando uma VM de produção, considere usar as Reservas de Capacidade do Azure para reservar a capacidade de computação na região.
Usar o PowerShell para redimensionar uma VM que está em um conjunto de disponibilidade
Se o novo tamanho de uma VM em um conjunto de disponibilidade não estiver disponível no cluster de hardware que está hospedando atualmente a VM, todas as VMs no conjunto de disponibilidade precisarão ser desalocadas para redimensionar a VM. Talvez também seja necessário atualizar o tamanho de outras VMs no conjunto de disponibilidade depois que uma máquina virtual for redimensionada. Para redimensionar uma VM em um conjunto de disponibilidade, execute o script abaixo. Você pode substituir os valores de $resourceGroup, $vmName, $newVmSize e $availabilitySetName por seus próprios valores.
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
Esse script define as variáveis $resourceGroup, $vmName, $newVmSize e $availabilitySetName. Em seguida, ele verifica se o tamanho de VM desejado está disponível usando Get-AzVMSize e verificando se a saída contém o tamanho desejado. Se o tamanho desejado não estiver disponível, o script desalocará todas as VMs no conjunto de disponibilidade, as redimensionará e as iniciará novamente. Se o tamanho desejado estiver disponível, o script redimensiona a VM.
Para redimensionar uma VM, é preciso ter a CLI do Azure mais recente instalada e conectada a uma conta do Azure usando az login.
O script abaixo verifica se o tamanho de VM desejado está disponível antes do redimensionamento. Se o tamanho desejado não estiver disponível, o script será encerrado com uma mensagem de erro. Se o tamanho desejado estiver disponível, o script desaloca a VM, redimensiona-a e a inicia novamente. Você pode substituir os valores de resourceGroup, vm e size por seus próprios valores.
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
Aviso
Desalocar a VM também libera os endereços IP dinâmicos atribuídos à VM. Os discos do sistema operacional e de dados não são afetados.
Se você estiver redimensionando uma VM de produção, considere usar as Reservas de Capacidade do Azure para reservar a capacidade de computação na região.
Usar a CLI do Azure para redimensionar uma VM que está em um conjunto de disponibilidade.
O script abaixo define as variáveis resourceGroup, vm e size. Em seguida, ele verifica se o tamanho de VM desejado está disponível usando az vm list-vm-resize-options e verificando se a saída contém o tamanho desejado. Se o tamanho desejado não estiver disponível, o script será encerrado com uma mensagem de erro. Se o tamanho desejado estiver disponível, o script desaloca a VM, redimensiona-a e a inicia novamente.
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
Para redimensionar sua VM no código do Terraform, modifique o parâmetro size nos blocos de recursos azurerm_linux_virtual_machine ou azurerm_windows_virtual_machine para o tamanho desejado e execute terraform plan -out main.tfplan para ver a alteração de tamanho da VM que será feita. Em seguida, execute terraform apply main.tfplan para aplicar as alterações para redimensionar a VM.
Importante
O exemplo do Terraform abaixo modifica o tamanho de uma máquina virtual existente quando você está usando o arquivo de estado que criou a máquina virtual original. Para obter o código Terraform completo, consulte o início rápido do Windows Terraform.
Desalocar a VM também libera os endereços IP dinâmicos atribuídos à VM. Os discos do sistema operacional e de dados não são afetados.
Se você estiver redimensionando uma VM de produção, considere usar as Reservas de Capacidade do Azure para reservar a capacidade de computação na região.
Escolher a SKU certa
Ao redimensionar uma VM, é importante escolher a SKU certa com base nos sinais da VM para determinar se você precisa de mais capacidade de CPU, memória ou armazenamento:
Se a VM estiver executando uma carga de trabalho com uso intensivo de CPU, como um servidor de banco de dados ou um servidor Web com alto tráfego, talvez seja necessário escolher uma SKU com mais núcleos de CPU.
Se a VM estiver executando uma carga de trabalho com uso intensivo de memória, como um modelo de machine learning ou um aplicativo de Big Data, talvez seja necessário escolher uma SKU com mais memória.
Se a VM estiver ficando sem capacidade de armazenamento, talvez seja necessário escolher uma SKU com mais armazenamento.
Para obter mais informações sobre a SKU certa, use os seguintes recursos:
Seletor de VM do Azure: essa ferramenta ajuda você a encontrar a SKU de VM certa com base no tipo de carga de trabalho, no sistema operacional e no software e na região de implantação.
Limitações
Você não pode redimensionar um tamanho de VM que tem um disco temporário local para um tamanho de VM sem disco temporário ou vice-versa.
As únicas combinações permitidas para redimensionamento são:
VM (com disco temporário local) -> VM (com disco temporário local); e
VM (sem disco temporário local) -> VM (sem disco temporário local).
Para determinar tamanhos de VM por tipo de carga de trabalho, sistema operacional e software ou região de implantação, consulte Seletor de VM do Azure.