Aplica-se a: ✔️ Linux VMs ✔️ Windows VMs ✔️ Conjuntos de escala flexível
Este artigo mostra como alterar o tamanho da VM de uma máquina virtual existente.
Depois de criar uma máquina virtual (VM), você pode dimensioná-la para cima ou para baixo alterando o tamanho da VM. Em alguns casos, você deve desalocar a VM primeiro. A desalocação pode 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 é necessária, se a máquina virtual estiver em execução no momento, alterar seu tamanho fará com que ela seja reiniciada. Por esse motivo, você deve considerar a alteração do tamanho da VM como um procedimento com interrupções, especialmente para cargas de trabalho com monitoração de estado hospedadas na VM.
Se sua VM usa o Armazenamento Premium, certifique-se de escolher uma versão s do tamanho para obter suporte ao 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 deseja redimensionar.
No menu à esquerda, selecione o tamanho. Escolha um novo tamanho compatível na lista de tamanhos disponíveis
Depois de escolher um tamanho, selecione Redimensionar.
Nota
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 desejado na lista, parar a máquina virtual pode revelar mais tamanhos.
Aviso
A deslocalização da VM também libera quaisquer endereços IP dinâmicos atribuídos à VM. O SO e os discos 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 o grupo de recursos e as variáveis de nome da VM. Substitua os valores pelas informações da VM que você deseja redimensionar.
Use o PowerShell para redimensionar uma VM que não esteja em um conjunto de disponibilidade.
Este script do PowerShell do shell de nuvem inicializa as variáveis $resourceGroup, $vme $size com o nome do grupo de recursos, o nome da VM e o tamanho desejado da VM, respectivamente. Em seguida, recupera o objeto VM do Azure usando o Get-AzVM cmdlet. O script modifica a VmSize propriedade do perfil de hardware da VM para o tamanho desejado. Finalmente, ele aplica essas alterações à VM no Azure usando o Update-AzVM cmdlet.
# 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 sua máquina. Esta versão local do script do PowerShell inclui etapas adicionais para importar o módulo do Azure e autenticar sua conta do Azure.
Nota
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
A deslocalização da VM também libera quaisquer endereços IP dinâmicos atribuídos à VM. O SO e os discos 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 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 hospeda a VM no momento, você precisará desalocar todas as VMs no conjunto de disponibilidade para redimensionar a VM. Também pode ser necessário atualizar o tamanho de outras VMs no conjunto de disponibilidade depois que uma VM tiver sido 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 pelos seus próprios.
# 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
Este script define as variáveis $resourceGroup, $vmName, $newVmSizee $availabilitySetName. Em seguida, ele verifica se o tamanho desejado da VM 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, redimensiona-as e as inicia novamente. Se o tamanho desejado estiver disponível, o script redimensionará a VM.
O script abaixo verifica se o tamanho desejado da VM está disponível antes de redimensionar. 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 inicia-a novamente. Você pode substituir os valores de resourceGroup, vme size pelos seus próprios.
# 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
A deslocalização da VM também libera quaisquer endereços IP dinâmicos atribuídos à VM. O SO e os discos 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.
Use a CLI do Azure para redimensionar uma VM em um conjunto de disponibilidade.
O script abaixo define as variáveis resourceGroup, vme size. Em seguida, ele verifica se o tamanho desejado da VM 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 inicia-a 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 Terraform, modifique o size parâmetro nos azurerm_linux_virtual_machine blocos ou azurerm_windows_virtual_machine de recursos 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 Terraform abaixo modifica o tamanho de uma máquina virtual existente quando você estiver 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.
A deslocalização da VM também libera quaisquer endereços IP dinâmicos atribuídos à VM. O SO e os discos 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.
Escolha o SKU certo
Ao redimensionar uma VM, é importante escolher a SKU certa com base nos sinais da VM para determinar se você precisa de mais CPU, memória ou capacidade de armazenamento:
Se a VM estiver executando uma carga de trabalho intensiva 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 que consome muita memória, como um modelo de aprendizado de máquina 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 como escolher o SKU certo, você pode usar os seguintes recursos:
Azure VM Seletor: esta ferramenta ajuda-o a encontrar o SKU de VM certo com base no seu tipo de carga de trabalho, SO e software e região de implementação.
Limitações
Não é possível redimensionar um tamanho de VM que tenha um disco temporário local para um tamanho de VM sem disco temporário local e vice-versa.
As únicas combinações permitidas para o redimensionamento são:
VM (com disco temporário local) -> VM (com disco temporário local);
VM (sem disco temporário local) -> VM (sem disco temporário local).
Para determinar os 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.