This article addresses some common questions about NVM Express (NVMe) support on virtual machines (VMs) created in Azure.
Overview
What is NVMe?
NVMe is a communication protocol that facilitates faster and more efficient data transfer between servers and storage systems by using nonvolatile memory (NVM). With NVMe, data can be transferred at the highest throughput and with the fastest response times.
NVMe offers higher input/output operations per second (IOPS) and higher throughput in megabytes per second (MBps). This capability can significantly improve the performance of both temporary (local) and remote NVMe disk storage with Azure managed disks. Higher performance is especially beneficial for I/O-intensive workloads that require fast data transfer to the Azure managed disks.
Which types of storage interfaces are supported in Azure VM families?
Azure VMs support two types of storage interfaces: Small Computer System Interface (SCSI) and NVMe. The SCSI interface is a legacy standard that provides physical connectivity and data transfer between computers and peripheral devices. NVMe is similar to SCSI in that it provides connectivity and data transfer, but NVMe is a faster and more efficient interface for data transfer between servers and storage systems. For more information, read about converting VMs from SCSI to NVMe.
How do Azure Boost and NVMe improve the performance of the VMs that Azure offers?
Azure Boost is a Microsoft-designed system that offloads server virtualization processes traditionally performed by the hypervisor and host OS onto purpose-built software and hardware. Offloading these processes enables faster storage and networking performance for Azure VM customers.
One of the primary advantages of Azure Boost is its ability to enhance the throughput of Azure managed disks and local storage. This enhancement is enabled by offloading the storage processing tasks to hardware that's dedicated for Azure Boost.
Azure Boost also optimizes performance by using the industry-standard NVMe interface, which capitalizes on the low latency and internal parallelism of solid-state storage drives. For details on the performance that Azure Boost offers, refer to the Microsoft blog post about general availability of Azure Boost.
Will Azure continue to support SCSI interface VMs?
Yes. Azure will continue to support the SCSI interface on the versions of VM offerings that provide SCSI storage. However, not all new VM series will have SCSI storage as an option going forward.
NVMe supportability
Which VM generations support NVMe disks?
Typically, the older generations of general purpose, memory optimized, and compute optimized VMs (D/Ev5 or Fv2 and older) support SCSI. The newer generations (Da/Ea/Fav6 and newer) typically support only the NVMe storage interface. However, Ebsv5/Ebdsv5 and Lsv2/Lsv3/Lasv3 VMs introduced NVMe as an option for temporary disks.
For specifics about which VM generations support which storage types, check the documentation about VM sizes in Azure.
Will Generation 1 VMs be supported with NVMe disks?
No, there are no plans to support NVMe disks on Generation 1 VMs. If you think your workload benefits from NVMe performance, you must switch to the Generation 2 VMs. To create a Generation 2 VM, follow the documented steps. If you try to use a Generation 1 VM image, either you won't be able to select an NVMe-capable VM, or you'll get this error message: "The selected image is not supported for NVMe. See supported VM images."
What happens if the OS that I use isn't tagged as NVMe supported?
You can create an NVMe-supported VM only by using an image (Platform Image Repository and Azure Compute Gallery) that's tagged as NVMe. If you use an untagged image, a SCSI-based VM is created, and the VM might not perform as you intended. Be sure to follow all the instructions.
To create VMs with an NVMe interface, it's essential to choose one of the supported OS images tagged as NVMe. If your current OS image is not supported for NVMe, you'll get this error message: "The selected image is not supported for NVMe. See supported VM images."
When will NVMe support be added to the OS image that I currently use?
NVMe support is available in more than 50 of the most popular OS images. We're not adding NVMe support to older OS images. However, we continuously improve the OS image coverage. We recommend that you refer to this page for updates on the latest OS image support for both Linux and Windows.
What happens if the OS that I want to use doesn't support NVMe?
Many of the latest Azure VM generations are NVMe-only and require an OS image that supports NVMe. If you require an OS that does not support NVMe, use a VM series that still has SCSI support.
How can I create a VM with the NVMe interface?
You can enable NVMe during VM creation by using methods such as the Azure portal, the Azure CLI, Azure PowerShell, and Azure Resource Manager templates. To create an NVMe-enabled VM, you must first enable the NVMe option on a VM and select the NVMe disk controller type for the VM. You can also update a VM to NVMe when it's stopped and deallocated, if the VM size supports NVMe.
To enable the NVMe interface during VM creation by using the Azure portal:
Add a disk controller filter. To find the NVMe-eligible sizes, select See All Sizes, select the Disk controller filter, and then select NVMe.
Enable the NVMe feature by going to the Advanced tab and selecting the checkbox under Performance (NVMe).
Verify that the feature is enabled by going to the Review and Create tab and confirming that the Disk controller type value is NVMe.
Can VMs configured with Trusted Launch move from SCSI to NVMe?
No, VMs configured with Trusted Launch can't move from SCSI to NVMe.
Azure storage performance with NVMe disks
What types of workloads benefit from NVMe disks?
The VM families that use NVMe disks demonstrate performance benefits compared to SCSI across various workloads that require higher I/O and improved storage performance. These workloads include application servers, web servers, databases, data warehousing, and analytics. You can achieve these benefits across VMs that use temporary and/or remote NVMe disks.
What performance gains can I expect from NVMe disks?
The performance gains that your applications can achieve depend on several factors, including VM type, VM size, and I/O block size. To identify the ideal block size and to achieve peak transfer rates, test on the individual VM sizes. It's important to optimize the I/O size based on the specific requirements of your application. For more information on the performance capabilities of individual VM types, see the documentation about VM sizes in Azure.