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.
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.
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