vSphere 6.5 and vNVMe controller


NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface (NVMHCI) is a logical device interface specification for accessing non-volatile storage media attached via a PCI Express (PCIe) bus in real and virtual hardware.

The acronym NVM stands for non-volatile memory, commonly flash memory that comes in the form of solid-state drives (SSDs). NVM Express, as a logical device interface, has been designed from the ground up to capitalise on the low latency and internal parallelism of flash-based storage devices, mirroring the parallelism of contemporary CPUs, platforms and applications.

NVM Express allows host hardware and software to fully exploit the possible parallelism in modern SSDs. As a result, NVM Express reduces I/O overhead and brings various performance improvements in comparison to previous logical-device interfaces, including multiple, long command queues, and reduced latency.

vSphere and NVMe:
NVM Express (NVMe) controller is available with ESXi 6.5 and Hardware Version 13. With Hardware Version 13, you can use NVMe, SATA, SCSI, and IDE controllers in a virtual machine.
Virtual NVMe (vNVMe):
Virtual NVMe Device has lower IO overhead and scalable IO for all-flash SAN/vSAN storages. Hardware NVMe SSDs has significant advantage over old SATA/SAS based Flash devices.
The main benefit of NVMe interface over SCSI is that it reduces the amount of overhead, and so consumes fewer CPU cycles. Also, there is a reduction of IO latency for your VMs.

Each virtual machine can support 4 NVMe controllers and up to 15 devices per controller.

Driver Architecture:

  • Native Model: Register/unregister driver and bring up device
  • VMKLinux Model: Deprecated
  • OS Libs: Provide OS related resource, such as heap, lock, interrupt.
  • Mgmt: Management interface to pass through admin command
  • SCSI Emulation Layer: The storage stack of ESXi is SCSI based, responsible for translating SCSI to NVMe command
  • NVMe Core: NVMe related stuff, such as queue construction, command issue, register read/write

Supported guest operating systems:

Not all operating systems are supported with vNVMe. Make sure that your OS is supported and also verify that the guest OS has a driver installed to use the NVMe controller.

  • Windows 7 and 2008 R2 (hot fix required: https://support.microsoft.com/en-us/kb/2990941)
  • Windows 8.1, 2012 R2, 10, 2016
  • RHEL, CentOS, NeoKylin 6.5 and later
  • Oracle Linux 6.5 and later
  • Ubuntu 13.10 and later
  • SLE 11 SP4 and later
  • Solaris 11.3 and later
  • FreeBSD 10.1 and later
  • Mac OS X 10.10.3 and later
  • Debian 8.0 and later

Leave a Reply