Después de crear una máquina virtual, puede escalarla o reducirla verticalmente cambiando su tamaño. En algunos casos, hay que desasignarla antes. La desasignación podría ser necesaria si el nuevo tamaño no estuviera disponible en el mismo clúster de hardware que hospede actualmente la máquina virtual. Es importante comprender que incluso cuando la desasignación no es necesaria, si la máquina virtual se está ejecutando actualmente, cambiar su tamaño hará que se reinicie. Por este motivo, debe considerar la posibilidad de cambiar el tamaño de la máquina virtual como un procedimiento disruptivo, especialmente para las cargas de trabajo con estado hospedadas en la máquina virtual.
Si la máquina virtual usa Premium Storage, asegúrese de elegir una versión s del tamaño para obtener compatibilidad con este nivel de almacenamiento. Por ejemplo, elija Standard_E4s_v3 en lugar de Standard_E4_v3.
Escriba máquinas virtuales en la búsqueda. En Servicios, seleccione Máquinas virtuales.
En la página Máquinas virtuales, seleccione la máquina virtual que desea reiniciar.
En el menú de la izquierda, seleccione Tamaño. Elija un tamaño compatible nuevo en la lista de tamaños disponibles
Después de seleccionar un tamaño, seleccione Cambiar tamaño.
Nota:
Si la máquina virtual está en ejecución, el cambio de tamaño hará que se reinicie.
Si la máquina virtual todavía está en ejecución y no puede ver el tamaño que desea en la lista, detenga la máquina para ver más tamaños.
Advertencia
Al desasignar la máquina virtual, también se liberan todas las direcciones IP dinámicas asignadas a ella. Esto no afecta a los discos del SO y de datos.
Si cambia el tamaño de una máquina virtual de producción, considere la posibilidad de usar Reservas de capacidad de Azure para reservar capacidad de proceso en la región.
Establezca el grupo de recursos y las variables de nombre de la máquina virtual. Rellene los valores con la información de la máquina virtual a la que desea cambiar el tamaño.
Use PowerShell para cambiar el tamaño de una VM que no está en un conjunto de disponibilidad.
Este script de Cloud Shell PowerShell inicializa las variables $resourceGroup, $vm y $size con el nombre del grupo de recursos, el nombre de la máquina virtual y el tamaño de la máquina virtual deseado, respectivamente. A continuación, recupera el objeto de máquina virtual de Azure mediante el cmdlet Get-AzVM. El script modifica la propiedad VmSize del perfil de hardware de la máquina virtual al tamaño deseado. Por último, aplica estos cambios a la máquina virtual en Azure mediante el 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 a ejecutar el script en Azure Cloud Shell, también puede ejecutarlo localmente en la máquina. Esta versión local del script de PowerShell incluye pasos adicionales para importar el módulo de Azure y autenticar la cuenta de Azure.
Nota:
PowerShell local puede requerir que la máquina virtual se reinicie para que surta efecto.
# 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
Advertencia
Al desasignar la máquina virtual, también se liberan todas las direcciones IP dinámicas asignadas a ella. Esto no afecta a los discos del SO y de datos.
Si cambia el tamaño de una máquina virtual de producción, considere la posibilidad de usar Reservas de capacidad de Azure para reservar capacidad de proceso en la región.
Uso de PowerShell para cambiar el tamaño de una máquina virtual en un conjunto de disponibilidad
Si el nuevo tamaño de una máquina virtual de un conjunto de disponibilidad no está disponible en el clúster de hardware que hospeda la máquina virtual, entonces necesita desasignar todas las máquinas virtuales en el conjunto de disponibilidad para redimensionar la máquina virtual. También tendrá que actualizar el tamaño de otras máquinas virtuales del conjunto de disponibilidad después de cambiar el tamaño de una máquina virtual. Para cambiar el tamaño de una máquina virtual en un conjunto de disponibilidad, ejecute el siguiente script. Puede reemplazar los valores de $resourceGroup, $vmName, $newVmSize y $availabilitySetName por los suyos propios.
# 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
El script siguiente establece las variables $resourceGroup, $vmName, $newVmSize y $availabilitySetName. A continuación, comprueba si el tamaño de máquina virtual deseado está disponible mediante Get-AzVMSize y comprueba si la salida contiene el tamaño deseado. Si el tamaño deseado no está disponible, el script desasigna todas las máquinas virtuales del conjunto de disponibilidad, las cambia de tamaño y las inicia de nuevo. Si el tamaño deseado está disponible, el script cambia el tamaño de la máquina virtual.
Para cambiar el tamaño de una máquina virtual, necesita tener instalada la última versión de la CLI de Azure e iniciar sesión en una cuenta de Azure con az login.
El siguiente script comprueba si el tamaño de máquina virtual deseado está disponible antes de cambiar el tamaño. Si el tamaño deseado no está disponible, el script se cierra con un mensaje de error. Si el tamaño deseado está disponible, el script desasigna la máquina virtual, lo cambia de tamaño y lo vuelve a iniciar. Puede reemplazar los valores de resourceGroup, vm y size por los suyos propios.
# 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
Advertencia
Al desasignar la máquina virtual, también se liberan todas las direcciones IP dinámicas asignadas a ella. Esto no afecta a los discos del SO y de datos.
Si cambia el tamaño de una máquina virtual de producción, considere la posibilidad de usar Reservas de capacidad de Azure para reservar capacidad de proceso en la región.
Uso de CLI de Azure para cambiar el tamaño de una máquina virtual en un conjunto de disponibilidad.
El script siguiente establece las variables resourceGroup, vm y size. A continuación, comprueba si el tamaño de máquina virtual deseado está disponible mediante az vm list-vm-resize-options y comprueba si la salida contiene el tamaño deseado. Si el tamaño deseado no está disponible, el script se cierra con un mensaje de error. Si el tamaño deseado está disponible, el script desasigna la máquina virtual, lo cambia de tamaño y lo vuelve a iniciar.
# 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 cambiar el tamaño de la máquina virtual en el código de Terraform, modifique el parámetro size en los bloques de recursos azurerm_linux_virtual_machine o azurerm_windows_virtual_machine al tamaño deseado y ejecute terraform plan -out main.tfplan para ver el cambio de tamaño de la máquina virtual que se realizará. A continuación, ejecute terraform apply main.tfplan para aplicar los cambios para cambiar el tamaño de la máquina virtual.
Importante
En el ejemplo siguiente de Terraform se modifica el tamaño de una máquina virtual existente cuando se usa el archivo de estado que creó la máquina virtual original. Para obtener el código completo de Terraform, consulte el inicio rápido de Windows Terraform.
Al desasignar la máquina virtual, también se liberan todas las direcciones IP dinámicas asignadas a ella. Esto no afecta a los discos del SO y de datos.
Si cambia el tamaño de una máquina virtual de producción, considere la posibilidad de usar Reservas de capacidad de Azure para reservar capacidad de proceso en la región.
Elija el SKU adecuado
Al cambiar el tamaño de una máquina virtual, es importante elegir la SKU adecuada en función de las señales de la máquina virtual para determinar si necesita más CPU, memoria o capacidad de almacenamiento:
Si la máquina virtual ejecuta una carga de trabajo que consume mucha CPU, como un servidor de bases de datos o un servidor web con tráfico elevado, es posible que tenga que elegir una SKU con más núcleos de CPU.
Si la máquina virtual ejecuta una carga de trabajo con un uso intensivo de memoria, como un modelo de Machine Learning o una aplicación de macrodatos, es posible que tenga que elegir una SKU con más memoria.
Si la máquina virtual se está quedando sin capacidad de almacenamiento, es posible que tenga que elegir una SKU con más almacenamiento.
Para más información sobre la elección de la SKU adecuada, puede utilizar los siguientes recursos:
Selector de máquinas virtuales de Azure: esta herramienta le ayuda a encontrar la SKU de máquina virtual adecuada en función del tipo de carga de trabajo, el sistema operativo y el software y la región de implementación.
Limitaciones
No se puede el tamaño de un tamaño de máquina virtual que tiene un disco temporal local a un tamaño de máquina virtual sin disco temporal local, ni viceversa.
Las únicas combinaciones permitidas para el cambio de tamaño son:
Máquina virtual (con disco temporal local)-> máquina virtual (con disco temporal local) y
Máquina virtual (sin disco temporal local) -> máquina virtual (sin disco temporal local).
Para determinar los tamaños de máquina virtual por tipo de carga de trabajo, sistema operativo y software o región de implementación, consulte Selector de máquinas virtuales de Azure.