Skip to content
hardware hardware

NVMe (NVMe)

nvme ssd storage pcie m2 hardware performance
Plain English

NVMe is the fast kind of SSD. Most look like a stick of gum that plugs straight into the motherboard. Older SSDs used the same connection as spinning hard drives and hit a speed ceiling. NVMe drives connect directly to the computer’s fastest internal lanes, so they can be several times faster. If a new laptop or mini PC boots in seconds, it almost certainly has an NVMe drive.

Technical Definition

Non-Volatile Memory Express (NVMe) is a host controller interface and command set, maintained by NVM Express, Inc., for accessing non-volatile storage over PCIe. It replaced AHCI, which was designed for spinning disks.

Why it is faster:

  • Bus: PCIe lanes (usually x4) instead of a SATA link capped near 600 MB/s.
  • Queues: up to 65,535 I/O queues with 65,536 commands each, versus AHCI’s single queue of 32. Each CPU core can have its own queue.
  • Latency: fewer software layers between the kernel and flash.

Rough sequential throughput:

InterfaceApprox. max
SATA III SSD550 MB/s
NVMe PCIe 3.0 x43,500 MB/s
NVMe PCIe 4.0 x47,000 MB/s
NVMe PCIe 5.0 x414,000 MB/s

Form factor vs protocol: M.2 is a connector shape. An M.2 slot can carry SATA or NVMe, and not every slot supports both. Check the motherboard manual. U.2 and E1.S are NVMe form factors used in servers.

Linux naming: /dev/nvme0 is the controller, /dev/nvme0n1 the namespace (the disk), /dev/nvme0n1p1 the first partition.

Health: NVMe drives report wear (percentage_used), temperature, and media errors through the SMART log.

Source: NVM Express specifications

Inspecting NVMe drives

# List NVMe devices
$ sudo apt install nvme-cli
$ sudo nvme list
Node          Model                   Size
/dev/nvme0n1  Samsung SSD 980 1TB     1.00 TB

# Health and wear
$ sudo nvme smart-log /dev/nvme0n1
temperature        : 38 C
percentage_used    : 2%
media_errors       : 0

# Link speed the drive negotiated
$ sudo lspci -vv | grep -A30 "Non-Volatile" | grep LnkSta
LnkSta: Speed 16GT/s, Width x4

# In a VirtualBox VM the disk usually appears as /dev/sda instead
$ lsblk -d -o NAME,ROTA,TRAN,SIZE
In the Wild

NVMe is the default boot drive in nearly every new PC, laptop, and mini PC, and it is the cheapest big speed upgrade for an older machine that has an M.2 NVMe slot. In homelabs, NVMe drives host VM disks because many VMs doing small random reads is exactly where NVMe beats SATA. Watch two things: heat, since drives throttle when hot and some need a heatsink, and endurance, shown as TBW on the spec sheet and percentage_used in the SMART log. A drive that shows media errors should be backed up and replaced.