What is NVMe - How do I work with an NVMe SSD | One PC Panda

The NVMe protocol is a fast, scalable, user-space I/O interface. It is the logical way for flash storage to talk to servers in high-performance applications (such as database systems). 

NVMe has simplified SCSI with its one command set concept. This removes much of the queues and added layers in the stack that were there to support SCSI.

Originally, flash memory was used as a more durable alternative to hard drives. It had significantly lower read/write performance compared to hard disks (HDDs). The introduction of RAID controllers helped with bandwidth and access times but still left much on the table in terms of optimizing use cases for flash media. Serial attached SCSI (SAS) helped, but it still lacked some of the speed of SATA. Then NVMe hit the scene in 2011 and with its simplified command set quickly became a standard for PCIe-attached flash storage devices.

NVMe is designed to support PCI Express solid state drives through the SCSI protocol defined in "T10 Technical Committee Spec - SCSI NVMHCI Commands". It is a feature of the PCI Solid State Drive (SSD) Working Group. For SATA-based SSDs, there are several competing standards for communicating with servers including AHCI and SAT. NVMe takes that layered approach, but it goes beyond just adding protocol support. It simplifies SCSI.

How is NVMe different from AHCI?

The most obvious difference between these two protocols is the reduction of layers in the protocol stack. SCSI has always represented a performance bottleneck due to its need to support so many functions with each command. With NVMe, there are far fewer commands needed to run an SSD.

How is NVMe different from SAT?

The SAT standard has never caught on for PCIe-attached storage devices. In fact, SATA Express was expected to replace PCIe for storage but failed to make any headway at all in the market. This made it a no-brainer when the Solid State Drive (SSD) Working Group decided to adopt the NVMe standard.

The main advantage is, of course, better performance with fewer CPU cycles needed. The protocol exists as a set of standards now rather than multiple standards for different types of devices. A standardized command structure also makes it easier to work with new types of storage media that are becoming available on the market each year.

How do I become familiar with the NVMe standard?

The best way to learn about NVMe is to download and read the specification. It is available at the PCIe SSD Working Group site. 

What other SSD technologies are out there besides SAS and SATA?

There is a growing list of non-volatile storage technologies that span from traditional NAND flash to more novel storage options like 3D XPoint and FeRAM. They all have their own protocols and standards for communicating with servers.

What is the future of SSD technologies?

It is hard to say what will happen in the coming years, but there seems to be a lot of interest in developing new storage media and technologies. Certainly, NVMe is at the forefront of this movement, but it will be interesting to see what happens in the future with storage media and how it relates to servers in a high performance computing environment.

How do I work with an NVMe SSD?

Once you have your server hardware in place, you can follow along with our guides on installing Debian 9 and CentOS 7. Both distributions have well documented steps for setting up NVMe storage devices.

How do I know if my server supports NVMe?

Most modern servers will support NVMe, but you can check the manufacturer's website before you buy a system to see if it is listed there. You can also contact the support department of the company you are purchasing from to ask if your specific system supports NVMe.

What alternatives do I have for this type of storage?

If NVMe is not available, then you can choose SAS or SATA disks. You also have options like SCSI-attached drives and PCIe devices using other protocols. 

What is the best way to approach a project like this?

Choosing a server platform is obviously the first step, but you also have other considerations including storage device choice and whether or not your operating system has built-in support. Doing some research on what you need will help you get the most out of your NVMe drive in production datacenter environments.

What is the future of NVMe?

While it would be nice to see more NVMe SSDs in servers, much like SAS and SATA drives before them, this technology will quickly become standard in server hardware. If you are looking for a new system with an eye toward performance, then you should plan on including NVMe in your criteria for buying a system.

What is the best way to work with NVMe?

You can start by reading our guides on how to install and configure Debian 9 and CentOS 7 in order to get your server up and running. These distributions both support working with NVMe drives which makes it easier when you are trying to get the most out of your hardware.

What are some other NVMe command line examples?

You can find more information about working with NVMe on the storage wiki page or you can download our guides for Debian 9 and CentOS 7. 

Is there an alternative to NVMe?

If you don't see an SSD that meets your specific needs, you can always work with SCSI-attached devices like SAS and SATA disks. You also have the option of using PCIe devices which use other protocols, but they may not offer the same performance as an NVMe drive.

Can I work with something besides SSDs?

If you are unable to find an SSD that meets your needs, you can always work with SCSI-attached devices like SAS and SATA disks. You also have the option of using PCIe devices which use other protocols, but they may not offer the same performance as an NVMe drive.

How do I set up a server to use NVMe?

The first step is finding a server that supports NVMe. Check the manufacturer's website to see if your system is compatible and then contact the support department of the company you are buying from to ensure that you and your system can work together.

What alternative do I have for this type of storage?

While it would be nice to use an SSD in every server, over time this technology will become standard in server hardware and you will be able to use NVMe drives for your projects.

NVMe drives are a good choice for projects where you need to process a lot of data at once. Using an SSD means that you will have fast access times and can do more work in less time. While they may not be the best option for every project, if your organization is going to find yourself working with high volume data processing, then NVMe drives should be able to handle the load.