Cambio de tamaño de una máquina virtual WindowsResize a Windows VM

En este artículo se muestra cómo mover una máquina virtual a otro tamaño de máquina virtual diferente con Azure PowerShell.This article shows you how to move a VM to a different VM size using Azure Powershell.

Después de crear una máquina virtual, puede escalarla o reducirla verticalmente cambiando su tamaño.After you create a virtual machine (VM), you can scale the VM up or down by changing the VM size. En algunos casos, hay que desasignarla antes.In some cases, you must deallocate the VM first. Esto puede suceder si el nuevo tamaño no está disponible en el clúster de hardware que hospeda la actualmente la máquina virtual.This can happen if the new size is not available on the hardware cluster that is currently hosting the VM.

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.If your VM uses Premium Storage, make sure that you choose an s version of the size to get Premium Storage support. Por ejemplo, elija Standard_E4s_v3 en lugar de Standard_E4_v3.For example, choose Standard_E4s_v3 instead of Standard_E4_v3.

Cambio de tamaño de una máquina virtual Windows que no está en un conjunto de disponibilidadResize a Windows VM not in an availability set

Establezca algunas variables.Set some variables. Reemplace los valores por su propia información.Replace the values with your own information.

$resourceGroup = "myResourceGroup"
$vmName = "myVM"

Muestre los tamaños de máquina virtual que están disponibles en el clúster de hardware donde se hospeda la máquina virtual.List the VM sizes that are available on the hardware cluster where the VM is hosted.

Get-AzVMSize -ResourceGroupName $resourceGroup -VMName $vmName 

Si se muestra el tamaño deseado, ejecute los comandos siguientes para cambiar el tamaño de la máquina virtual.If the size you want is listed, run the following commands to resize the VM. Si el tamaño deseado no aparece, vaya al paso 3.If the desired size is not listed, go on to step 3.

$vm = Get-AzVM -ResourceGroupName $resourceGroup -VMName $vmName
$vm.HardwareProfile.VmSize = "<newVMsize>"
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup

Si el tamaño deseado no se muestra, ejecute los siguientes comandos para desasignar la máquina virtual, cambiar su tamaño y reiniciarla.If the size you want is not listed, run the following commands to deallocate the VM, resize it, and restart the VM. Sustituya <newVMsize> por el tamaño que quiera.Replace <newVMsize> with the size you want.

Stop-AzVM -ResourceGroupName $resourceGroup -Name $vmName -Force
$vm = Get-AzVM -ResourceGroupName $resourceGroup -VMName $vmName
$vm.HardwareProfile.VmSize = "<newVMSize>"
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup
Start-AzVM -ResourceGroupName $resourceGroup -Name $vmName

Advertencia

Al desasignar la máquina virtual, se liberan todas las direcciones IP dinámicas asignadas a ella.Deallocating the VM releases any dynamic IP addresses assigned to the VM. Esto no afecta a los discos del SO y de datos.The OS and data disks are not affected.

Cambio de tamaño de una máquina virtual Windows que está en un conjunto de disponibilidadResize a Windows VM in an availability set

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, habrá que desasignar todas las máquinas virtuales del conjunto de disponibilidad para cambiar el tamaño de la máquina virtual.If the new size for a VM in an availability set is not available on the hardware cluster currently hosting the VM, then all VMs in the availability set will need to be deallocated to resize the VM. 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.You also might need to update the size of other VMs in the availability set after one VM has been resized. Para cambiar el tamaño de una máquina virtual de un conjunto de disponibilidad, siga estos pasos.To resize a VM in an availability set, perform the following steps.

$resourceGroup = "myResourceGroup"
$vmName = "myVM"

Muestre los tamaños de máquina virtual que están disponibles en el clúster de hardware donde se hospeda la máquina virtual.List the VM sizes that are available on the hardware cluster where the VM is hosted.

Get-AzVMSize -ResourceGroupName $resourceGroup -VMName $vmName 

Si se muestra el tamaño deseado, ejecute el comando siguiente para cambiar el tamaño de la máquina virtual.If the desired size is listed, run the following commands to resize the VM. Si no aparece, vaya a la sección siguiente.If it is not listed, go to the next section.

$vm = Get-AzVM -ResourceGroupName $resourceGroup -VMName $vmName 
$vm.HardwareProfile.VmSize = "<newVmSize>"
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup

Si el tamaño deseado no aparece, continúe con los pasos siguientes para desasignar todas las máquinas virtuales del conjunto de disponibilidad, cambiar su tamaño y reiniciarlas.If the size you want is not listed, continue with the following steps to deallocate all VMs in the availability set, resize VMs, and restart them.

Detenga todas las máquinas virtuales del conjunto de disponibilidad.Stop all VMs in the availability set.

$as = Get-AzAvailabilitySet -ResourceGroupName $resourceGroup
$vmIds = $as.VirtualMachinesReferences
foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    Stop-AzVM -ResourceGroupName $resourceGroup -Name $vmName -Force
    } 

Cambie el tamaño de todas las máquinas virtuales del conjunto de disponibilidad y reinícielas.Resize and restart the VMs in the availability set.

$newSize = "<newVmSize>"
$as = Get-AzAvailabilitySet -ResourceGroupName $resourceGroup
$vmIds = $as.VirtualMachinesReferences
  foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    $vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
    $vm.HardwareProfile.VmSize = $newSize
    Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
    Start-AzVM -ResourceGroupName $resourceGroup -Name $vmName
    }

Pasos siguientesNext steps

Para obtener una mayor escalabilidad, ejecute varias instancias de VM y escálelas horizontalmente. Para obtener más información, consulte el artículo sobre escalado automático de máquinas Linux en un conjunto de escalado de máquinas virtuales.For additional scalability, run multiple VM instances and scale out. For more information, see Automatically scale Windows machines in a Virtual Machine Scale Set.