Storage & Protokolle
NVMe
NVMe (NVM Express) ist das Speicherprotokoll für Flash-SSDs über PCIe; viele parallele Warteschlangen lösen die Engpässe des HDD-Protokolls SATA/AHCI auf.
- Flash über PCIe
- Massive Parallelität (Queues)
- Namespaces
- NVM Express Inc.
- ZNS, ANA, NVMe-MI
NVMe (NVM Express) ist das Protokoll, mit dem Betriebssysteme Flash-Speicher direkt über den PCIe-Bus ansprechen. Es löst das ältere AHCI/SATA ab, das für rotierende Festplatten entworfen war und mit nur einer kurzen Befehlswarteschlange die Parallelität von Flash nicht ausschöpfen konnte.
Dieser Artikel erklärt das Warteschlangen-Modell als Kern der Leistung, den Unterschied von Admin- und I/O-Queues, das Konzept der Namespaces, die Bauformen, die Reorganisation der Spezifikation ab Version 2.0, moderne Erweiterungen wie Zoned Namespaces und Multipath über ANA sowie die Sicherheits- und Verschlüsselungsfunktionen.
1. Warum ein neues Protokoll
Festplatten waren langsam und seriell, ein einziger Befehlsstrom reichte. Flash dagegen bedient viele Anfragen gleichzeitig, doch AHCI/SATA kennt nur eine Warteschlange mit 32 Einträgen und serialisiert alles. NVMe wurde von Grund auf für Flash entworfen: Es spricht den Speicher direkt über PCIe an, ohne den Umweg über einen Festplatten-Controller, und nutzt die Parallelität des Mediums voll aus.
2. Das Warteschlangen-Modell
Der Kern von NVMe sind Paare aus Submission Queue (eingehende Befehle) und Completion Queue (Rückmeldungen) im Arbeitsspeicher des Hosts. Die Spezifikation erlaubt bis zu 65535 I/O-Warteschlangen mit je bis zu 65536 Einträgen, und jede Queue kann einen eigenen Interrupt erhalten.
Praktisch legt man je CPU-Kern eine Warteschlange an. Dadurch entfällt das Sperren (Locking) um eine einzige gemeinsame Queue, das bei AHCI den Durchsatz begrenzt. Genau diese Parallelität ist der Grund für die niedrige Latenz und den hohen Durchsatz von NVMe.
Nicht das schnellere Kabel macht NVMe schnell, sondern das parallele Warteschlangen-Modell. Es entkoppelt die I/O vieler CPU-Kerne und beseitigt den seriellen Engpass von SATA/AHCI.
3. Admin- und I/O-Queues
NVMe trennt Steuerung und Daten. Ein Admin-Queue-Paar trägt Verwaltungsbefehle (Geräte identifizieren, Logs lesen, Firmware aktualisieren, Namespaces verwalten, Sanitize). Die eigentlichen Lese- und Schreibbefehle laufen über die zahlreichen I/O-Queues. So bremsen Verwaltungsaufgaben den Datenpfad nicht aus.
4. Namespaces
Ein Namespace ist eine logische Aufteilung des Speichers innerhalb eines NVMe-Controllers, adressiert über eine Namespace-ID. Ein physisches Laufwerk kann so mehrere unabhängige Bereiche darstellen, etwa für Provisionierung, getrennte Verschlüsselung oder, bei gemeinsam nutzbaren Namespaces, für Multipath-Zugriffe.
Wichtig ist die Einordnung: Namespaces sind eine Aufteilung, keine hardwareseitig erzwungene Mandantentrennung. Welcher Host welchen Namespace sieht, entscheidet die Controller-Konfiguration; eine Fehlkonfiguration kann den Zugriff auf falsche Bereiche öffnen.
NVMe-Geräte und Namespaces unter Linux (nvme-cli)
nvme list # NVMe-Geräte und Namespaces auflisten
nvme id-ctrl /dev/nvme0 # Controller-Eigenschaften
nvme id-ns /dev/nvme0n1 # Namespace-Details
nvme smart-log /dev/nvme0 # Zustand und Verschleiß 5. Bauformen
NVMe-SSDs gibt es in mehreren physischen Formen, je nach Einsatz:
| Bauform | Einsatz |
|---|---|
| M.2 | kompakt, intern verschraubt, kein Hot-Swap (Client, Edge, Workstation) |
| U.2 / U.3 | 2,5-Zoll-Format mit Hot-Swap, Server-Backplanes (U.3 trägt SATA, SAS und NVMe über eine Backplane) |
| EDSFF (E1.S, E3.S) | rechenzentrumsoptimierte Steckkarten mit höherer Dichte, Kühlung und Leistung |
6. Eine Bibliothek statt einer Monolith-Spezifikation
Mit NVMe 2.0 wurde die Spezifikation in eine Bibliothek aufgeteilt: eine Basis-Spezifikation, eigene Command-Set-Dokumente (klassisches Block-NVM, Zoned Namespaces, Key-Value) und eigene Transport-Dokumente (PCIe, TCP, RDMA, Fibre Channel). Das erlaubt es, einzelne Bausteine unabhängig weiterzuentwickeln, und ebnet zugleich den Weg für NVMe-over-Fabrics, das auf demselben Befehlsmodell aufsetzt.
7. Moderne Erweiterungen: ZNS und ANA
Zwei Erweiterungen sind im Rechenzentrum relevant. Zoned Namespaces (ZNS) teilen den Speicher in Zonen, in die sequenziell geschrieben wird; das verringert die Schreibverstärkung der SSD und macht Kapazität und Laufzeit vorhersehbarer, etwa für log-strukturierte Lasten oder Ceph. ANA (Asymmetric Namespace Access) ist das NVMe-Gegenstück zum ALUA der SCSI-Welt: Es kennzeichnet pro Pfad, ob er optimal oder nur erreichbar ist, und ist damit die Grundlage für NVMe-Multipath. Der Linux-Kernel bringt dieses Multipathing nativ mit.
8. Sicherheit und sicheres Löschen
Verschlüsselung ist bei NVMe ein eigenes Thema: Self-Encrypting Drives (SED) verschlüsseln die Daten dauerhaft in Hardware, verwaltet über Standards wie TCG Opal. Das macht auch das sichere Löschen einfach: Beim kryptografischen Sanitize wird der Medienschlüssel vernichtet, und alle Daten sind sofort unlesbar. Der normative Begriff dafür ist Sanitize, nicht das umgangssprachliche „Secure Erase“. Für NVMe-over-Fabrics kommen zusätzlich Authentifizierung und Transportverschlüsselung hinzu, das gehört in den dortigen Artikel.
9. Stärken und Grenzen
| Stärken | Grenzen |
|---|---|
| Hohe Parallelität durch viele Warteschlangen | Queue-Maxima sind Spezifikationswerte, nicht je Laufwerk garantiert |
| Direkte PCIe-Anbindung ohne Festplatten-Umweg | Namespaces erzwingen keine Mandantentrennung |
| Modular erweiterbar (ZNS, Key-Value) seit 2.0 | ZNS und Key-Value brauchen angepasste Anwendungen |
| Natives Multipath über ANA im Linux-Kernel | lokales PCIe; geteilter Netzwerkspeicher braucht NVMe-oF |
| Hardware-Verschlüsselung (SED) und sicheres Sanitize | EDSFF-Ökosystem noch jünger als M.2/U.2 |
Häufige Fragen zu NVMe
Weniger wegen der Schnittstelle, mehr wegen der Architektur: NVMe nutzt sehr viele parallele Warteschlangen (bis zu 65535) statt der einen kurzen Queue von AHCI/SATA und spricht den Flash direkt über PCIe an. Dadurch werden die Anfragen vieler CPU-Kerne parallel verarbeitet, ohne den seriellen Engpass und das Locking älterer Schnittstellen.
Nein. Namespaces teilen einen Controller logisch auf, etwa für Provisionierung oder getrennte Verschlüsselung, aber die Zuordnung steuert die Controller-Konfiguration. Eine erzwungene, kryptografisch gesicherte Trennung zwischen Mandanten leisten sie nicht; dafür braucht es zusätzliche Maßnahmen wie Verschlüsselung je Namespace und strikte Zugriffskontrolle.
Auch der Autor ist nur ein Mensch, dem Fehler unterlaufen können. Wenn in diesem Beitrag etwas nicht stimmt oder unklar ist, freuen wir uns über einen kurzen Hinweis über das Kontaktformular unten, wir prüfen und korrigieren das.
Der nächste Schritt
NVMe im eigenen Haus richtig einsetzen?
Wir klären, ob und wie der Baustein zu Ihrer Infrastruktur passt, und sagen offen, wann sich der Aufwand lohnt und wann nicht.