Changing VM Sizes in Azure


I had a few customers ask me if they could really move up and down in Azure VM SKU types dynamically so I put together a quick FAQ and Best practices to help make this clear: 

Best practices:  

1) Build big and start small - Determine what size of VM you may need in the future. For example, if you feel you may need DS14 series VM in 12 months than build a DS14 series VM now and than scale it back to an A series. This way you have set a clean scale up pathway to DS series VMs in the future since it you started large and this placed the VM on a HW cluster that supports a DS14 VM size. 

2) Region and HW Cluster – Both of these variables determine upgrade size path. Some regions may not support the new desired VM size so you may have to move regions. For example, if you require a N series or F series VM in the future, you may start with a region that supports your upgrade path so you don’t have to move regions later on.

For HW Cluster, the physical HW underneath the VM may not allow the new size to be selected as the physical HW may not support large CPU VMs or may not have a GPU card for example. Follow the best practice in Step 1.

Here is how a HW Cluster typically groups VM size families:



4) Plan - Determine how many VMs of a particular type you may need and if you have an availability set. Understand you may either have to reboot to resize the VM or deallocate the VM to move to a different hardware cluster. 


What are all the VM SKU types/sizes available?

Here is a nice graphic showing the VM SKUs choices:


For more details on the Azure VM skus/sizes see here.

Do I have to stop/deallocate the VM to change size?

It depends if you are moving within a VM hardware cluster or to a different VM hardware cluster that support the new VM SKU size . For example, moving from a D1 to a D8 series you can switch VM sizes with a simple reboot (see chart above for HW Cluster grouping). However, if you are, for example, moving from a A7 VM to an DS14 VM then you may have to deallocate VM and move to a new HW Cluster. In addition, if multiple VMs are in an availability set they must all be deallocated at the same time to move to a new HW cluster family.  

Can I move from Premium Storage VMs to non premium storage VMs skus or vice versa?

You cannot downgrade a Premium (SSD) VMs to non-Premium (spinning disk) VMs. In going from non-Premium VM skus to Premium VMs skus, it will allow you to move the VM however all your non-SSD disks will not be converted to SSD storage. This will have to occur as a post move step where you move the data to a Premium (SSD) storage account. See more on migrating to Premium Storage here

How long end to end when you move to a size on different hardware?

The whole process is estimated to take around 10 minutes end to end when you move to a size on different hardware.

Do I lose data with a VM resize?

You only lose any data that is stored on the temporary disk and the other data disks will be retained.

Do you have Infiniband/RDMA HPC ready Azure VMs?

For RDMA with Infiniband, we have three VM series that have certain VMs that support RDMA over Infiniband with 32Gbps throughput with 3 microsecond latency: NC series, H series, and A Compute Intensive VMs. All of these should be targeted as VM families for HPC compute needs.

Can I resize from non-compute intensive VMs to compute intensive VMs?

Currently, this is not supported. You can only move to different VM sizes within the same compute intensive VMs (H series or A series compute intensive).

Do you have high end GPU specific Azure VMs?

For GPU visualization and compute, we have two new N series VM types with GPU cards:

  • NV (visualization) series – NVIDA Tesla M60 GPU card and NVIDIA GRID
  • NC (compute) series – NVIDIA Tesla K80 card – dual GPU with 4992 CUDA cores – used with deep learning, rendering, etc..


Using an NV GPU VM for crash simulation visualization

Can you resize a VM with PowerShell or Azure CLI?

Yes, please see here for step by step on resizing your Azure VM via PowerShell. To resize a Linux VM with Azure CLI see here.