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:
Overviews of the Linux NVMe driver stack can be found here:
For latest updates including Kernel 5.3:
For updates up to Kernel 4.13:
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:
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:
NVMe-CLI can be obtained as a package for all the Linux distributions.
In Ubuntu: sudo apt-get install -y nvme-cli