Short answer: NVMe (Non-Volatile Memory Express) is the protocol fast SSDs use to talk to a computer over PCI Express. It replaced AHCI, the interface designed for spinning SATA hard drives, with one built for flash: many deep command queues instead of one short one, a direct path over PCIe lanes and far less CPU work per operation. The result is several times the throughput of a SATA SSD and much lower latency under load. NVMe is a protocol, not a shape — an NVMe drive can be an M.2 stick, a 2.5-inch U.2 drive or a PCIe card.
Why is NVMe faster than SATA?
SATA SSDs inherited a stack built for hard drives, where the disk’s moving head was the bottleneck and a simple interface was enough. Flash removed that bottleneck, and the interface became the new one. NVMe, first specified in 2011, removed it:
| SATA SSD (AHCI) | NVMe SSD | |
|---|---|---|
| Connection | SATA controller, 6 Gbit/s link | PCI Express lanes, usually four, straight to the CPU or chipset |
| Command queues | 1 | Up to 65,535 I/O queues |
| Commands per queue | 32 | Up to 65,536 |
| Interface ceiling | About 600 MB/s | About 3.9 GB/s (PCIe 3.0 x4), 7.9 GB/s (4.0 x4), 15.8 GB/s (5.0 x4) |
| CPU cores | One queue shared, with locking | A queue per core, no locking between them |
| Designed for | Hard drives | Flash and newer non-volatile memory |
The queue numbers matter more than the headline megabytes. A busy server issues thousands of small reads and writes at once — database pages, VM disks, log files. With AHCI they all wait in one line of 32. With NVMe every CPU core gets its own queue, and the drive works on many requests in parallel across its flash chips. That is why NVMe shines on random I/O at high queue depth, and why its advantage is smaller for a single large file copy.
NVMe form factors: M.2, U.2 and more
- M.2 — the gum-stick card in laptops, desktops and some servers. The same slot can carry SATA or NVMe drives, so “M.2” alone does not tell you which; NVMe M.2 drives use the M key and the spec sheet says PCIe or NVMe.
- U.2 and U.3 — 2.5-inch drives in hot-swap bays, the classic server format, with room for more flash and better cooling.
- EDSFF (E1.S, E3.S) — newer data-centre ruler and small form factors designed around airflow and density.
- Add-in cards — NVMe drives on a PCIe expansion card.
Where does NVMe make a difference?
| Workload | Difference over a SATA SSD |
|---|---|
| Databases with many concurrent queries | Large: random I/O at depth, lower and steadier latency |
| Virtualisation hosts | Large: dozens of VMs issue I/O at once |
| Builds, package installs, container image pulls | Noticeable: thousands of small files |
| Large sequential copies | Up to the other end's speed — a 1 Gbit/s network moves about 118 MB/s |
| Booting, opening programs | Small: already fast on any SSD |
Server buyers should look beyond the speed figure:
- Endurance — rated in TBW (terabytes written) or DWPD (drive writes per day). Write-heavy databases and logs wear consumer drives out quickly.
- Power-loss protection — enterprise drives carry capacitors that let them flush their cache safely when power fails, so they can acknowledge
fsyncquickly. That, more than peak throughput, is what makes database commits fast. - Sustained performance — cheap drives slow sharply once their fast cache fills or they get hot; M.2 drives without cooling throttle under long loads.
How is NVMe used in RAID?
Classic hardware RAID controllers sit on the SATA/SAS side and do not fit NVMe drives, which attach straight to PCIe lanes. Servers therefore mostly mirror NVMe drives in software — Linux mdadm, ZFS mirrors, or the storage system above them — and the CPU cost is small next to what the drives deliver. When choosing between media for a server, the rough order is: NVMe for databases, VM storage and anything latency-bound; SATA SSDs where capacity per euro matters more than parallelism; hard drives for large, mostly sequential data such as backups, archives and media libraries, where cost per terabyte decides.
NVMe on Linux
NVMe drives appear as /dev/nvme0n1 — controller 0, namespace 1 — with partitions /dev/nvme0n1p1, p2 and so on. A namespace is a slice of the drive presented as its own block device; most drives have one. The kernel’s multi-queue block layer drives them with the none I/O scheduler by default, because the drive schedules better than the kernel could.
apt install -y nvme-cli smartmontools
nvme list # model, capacity, firmware per drive
nvme smart-log /dev/nvme0 # temperature, percentage_used, media_errors
smartctl -a /dev/nvme0 # the same health data via smartctl
cat /sys/block/nvme0n1/queue/scheduler
systemctl status fstrim.timer # weekly TRIM, enabled on most distributionspercentage_used is the drive’s own estimate of its rated endurance already spent; plan a replacement as it approaches 100. Any non-zero media_errors count deserves attention and a backup check.
Does a VPS on NVMe show an NVMe drive?
Usually not. A virtual machine sees whatever disk the hypervisor presents — on KVM a virtio disk (/dev/vda or, with virtio-scsi, /dev/sda) — regardless of what sits underneath. The host’s NVMe drives, SATA SSDs or a networked storage cluster all look the same from inside. So lsblk cannot tell you what a plan is built on; only measurement can tell you how it behaves.
Measure with fio using direct I/O and the pattern your application uses — random 4K reads and writes at several queue depths for databases, large sequential blocks for media. Repeat at different times of day: on shared hardware, the neighbours’ load is part of the result. The disk speed testing guide has ready-made fio recipes and explains how to read them.
What is NVMe over Fabrics?
NVMe over Fabrics (NVMe-oF) carries the NVMe protocol across a network — over RDMA, Fibre Channel or plain TCP — so a server can use a remote NVMe drive as a local block device with little extra latency. It is how modern storage arrays and disaggregated data centres share fast flash between many hosts, and it is the successor to iSCSI for that job. On Linux, NVMe/TCP is supported in the kernel and managed with nvme connect.
Checking disk performance on a VMHeaven server
Whatever any label says, the useful number is what your workload gets. On a Standard KVM or Hi-CPU KVM VPS, run the fio tests above against your own access pattern. On a dedicated server each build lists its disks, the drives are yours alone, and nvme list and smartctl show exactly what is installed and how worn it is. If your data outgrows the disk, a Storage VPS adds space from the panel while the server keeps running.
Frequently asked
Is NVMe the same as M.2?
No. M.2 is a physical form factor; NVMe is a protocol. An M.2 slot can hold a SATA SSD or an NVMe SSD, and NVMe drives also come as 2.5-inch U.2 drives and PCIe cards.
Is NVMe faster than a SATA SSD?
Yes, especially for many parallel random reads and writes: NVMe uses PCIe lanes and up to 65,535 queues, while SATA is capped at about 600 MB/s with one queue of 32 commands. For booting and opening programs the difference is small.
How do I check NVMe health on Linux?
Install nvme-cli and run nvme smart-log /dev/nvme0, or smartctl -a /dev/nvme0. Watch percentage_used for wear, media_errors, and the temperature.