Wandering Thoughts archives

2021-04-13

Getting NVMe and related terminology straight (for once)

In a comment on yesterday's entry on SSD versus NVMe for basic servers, Andrew noted:

I object to "SSD vs NVMe" — they're NVMe SSDs.

This set me off on a long overdue journey to understand the terminology here and get it right.

NVMe, also known as NVM Express, is the general standard for accessing non-volatile storage over PCIe (aka PCI Express). NVMe doesn't specify any particular drive form factor or way of physically connecting drives, but it does mean PCIe; a 'NVMe SATA drive' is a contradiction in terms. The term 'NVMe SSD' is arguably redundant but seems to be in common usage, is likely to be widely understood, and so is generally better than my usage so far of 'NVMe drive'.

In general, NVMe SSDs have either two or four PCIe lanes (commonly called 'x2' and 'x4'), with (very) cheap NVMe SSDs sticking to x2 and everyone else using x4. There have been several successive versions of PCIe, with NVMe SSDs using PCIe 3.0, PCIe 3.1, and now high end drives coming out with PCIe 4.0 (which is faster and better). PCIe 4.0 NVMe SSDs are backward compatible to systems with only PCIe 3.0 or 3.1. If you talk about a plain 'NVMe SSD', I suspect that most people today will assume it's a PCIe 3.0 NVMe SSD (and x4).

(PCIe 3.1 seems to have been a small enough improvement that a lot of consumer NVMe SSDs just label themselves as PCIe 3.0.)

The dominant consumer form factor and physical connector for NVMe SSDs is M.2, specifically what is called 'M.2 2280' (the 2280 tells you the physical size). If you say 'NVMe SSD' with no qualification, many people will assume you are talking about an M.2 2280 NVMe SSD, or at least an M.2 22xx NVMe SSD. A common physical form factor alternate to M.2 NVMe SSDs in higher end hardware is U.2; a U.2 NVMe SSD basically looks like a traditional 2.5" SATA SSD with a slightly different connector. If you say 'M.2 NVMe' or 'U.2 NVMe', without the 'SSD', people will understand what you're talking about (assuming they even know what U.2 is). If you say 'M.2 SSD' or 'U.2 SSD', I think people will assume the NVMe part, although it's slightly ambiguous for at least M.2.

(So if you wanted to fully name a NVMe SSD, you might say 'M.2 2280 x4 PCIe 4.0 NVMe SSD'. You can see why this can get chopped down in common usage.)

Traditional SATA SSDs are, well, SATA SSDs, in the usual 2.5" form factor and with the usual SATA edge connectors (which are the same for 2.5" and 3.5" drives). If you simply say 'SSD' today, most people will probably assume that you mean a SATA SSD, not a NVMe SSD. Certainly I will. If I want to be precise I should use 'SATA SSD', though. SATA comes in various speeds but today everyone will assume 6 Gbits/s SATA (SATA 3.x).

The M.2 connector can also be used for a SATA connection instead of a PCIe one. M.2 form factor drives that use SATA instead of PCIe are generally called 'M.2 SATA' (and I believe are usually physically M.2 2280). When NVMe was new and even basic NVMe SSDs cost extra, apparently M.2 SATA SSDs were popular in notebooks and similar machines because SSDs in the M.2 form factor were physically much smaller than 2.5" SSDs. Now this form factor is seems to be going away, with models being discontinued without replacements (source).

In our environment, we use 2.5" SATA SSDs in all of our servers (so far) and I have M.2 NVMe SSDs in my office workstation (along with SATA SSDs). We might someday use either M.2 NVMe SSDs or U.2 NVMe SSDs in future servers, depending on how prices and hardware availability change. U.2 NVMe SSDs seem easier to manage but currently are harder and more expensive to buy.

tech/NVMeGettingTermsStraight written at 19:38:27; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.