Linux Driver Information

The Linux NVMe™ driver is open source and included as part of the Linux Kernel, which can be found here https://github.com/torvalds/linux/tree/master/drivers/nvme

NVMe architecture works out of the box in every major operating system, including all mainstream Linux distributions. Please check on specific feature support with the distros, e.g. Red Hat Enterprise Linux, Ubuntu. NVMe technology has been supported since kernel 3.3, and at the time had been backported to 2.6. Intel released some history of the Linux NVMe drivers stack in 2015 here:

https://itpeernetwork.intel.com/nvm-express-linux-driver-support-decoded/

Overviews of the Linux NVMe driver stack can be found here:

For latest updates including Kernel 5.3:

Linux NVMe and block layer status update (SDC 2019)

https://www.snia.org/sites/default/files/SDC/2017/presentations/NVMe/Hellwig_Christoph_Past_and_Present_of_the_Linux_NVMe_Driver.pdf

For updates up to Kernel 4.13:

https://www.snia.org/sites/default/files/SDC/2019/presentations/NVMe/Hellwig_Christoph_Linux_NVMe_and_Block_Layer_Status_Update.pdf

Open Source Management Utility – NVMe Command Line Interface (NVMe-CLI)

The tool to manage NVMe SSDs in Linux is called NVMe-CLI, https://github.com/linux-nvme/nvme-cli

Data centers require many management functions to monitor the health of the SSD, monitor endurance, update firmware, securely erase storage, and read various logs. This tool matches the NVMe specification for command structure. You will notice the commands available in NVMe-CLI match the specification. You will need the latest NVMe 1.4 specification to be able to interpret the abbreviations for the various commands, found here:

http://tjn.nvme.ws1.vtm-ws.com/wp-content/uploads/NVM-Express-1_4-2019.06.10-Ratified-1.pdf

For instance, in section 5.15.3 Identify Controller data structure, you can send the command nvme-id-ctrl in NVMe-CLI. The output will have abbreviations for the various fields, for instance, Model Number (MN) is displayed in NVMe-CLI as mn.

A very short introduction to the tool can be found here:

https://www.nvmedeveloperdays.com/English/Collaterals/Proceedings/2018/20181204_PRECON2_Hands.pdf

NVMe-CLI can be obtained as a package for all the Linux distributions.

In Ubuntu: sudo apt-get install -y nvme-cli