NVMe-oF-Befehle decken die Konfiguration von NVMe over Fabrics unter Linux ab: Auf der Host-Seite (Initiator) arbeitet nvme aus dem nvme-cli-Paket, auf der Target-Seite die Shell nvmetcli. Die Grundlagen erklärt der Artikel NVMe-oF: NVMe over Fabrics.

Host: Namespaces entdecken und verbinden

Der Host kontaktiert den Discovery-Controller des Targets (NVMe/TCP über Port 4420) und erfährt dessen NQN (NVMe Qualified Name):

nvme list                             # lokale NVMe-Geräte
nvme discover -t tcp -a 192.168.1.20 -s 4420     # Discovery-Service abfragen
nvme connect -t tcp -n nqn.2026-09.de.example:subsystem1 -a 192.168.1.20 -s 4420
nvme connect-all -t tcp -a 192.168.1.20           # alle angebotenen Subsysteme

Nach nvme connect erscheint der entfernte Namespace als NVMe-Gerät /dev/nvme0n1 und kann mit nvme list, lsblk oder nvme id-ctrl /dev/nvme0 geprüft werden. Statt tcp wählt man bei RDMA-Netzen den Transport rdma (InfiniBand, RoCE, iWARP).

Verbindungen trennen

nvme disconnect -n nqn.2026-09.de.example:subsystem1   # ein Subsystem trennen
nvme disconnect-all                                     # alle NVMe-oF-Sessions beenden
nvme list-subsys                                         # verbundene Subsysteme anzeigen

Bei mehreren Pfaden (Multipath) übernimmt das Kernel-Modul nvme-multipath das Failover zwischen den Pfaden; die Geräte erscheinen dann unter /dev/nvme/ mit einer eigenen Namespace-ID.

Target-Seite mit nvmetcli

Der Linux-NVMe-Target-Treiber (nvmet, configfs) wird über nvmetcli verwaltet. Die Shell arbeitet mit Subsystemen (je ein NQN), Namespaces (je ein Blockgerät) und Ports (Transport + Adresse):

nvmetcli
nvmetcli> cd subsystems
nvmetcli/subsystems> create nqn.2026-09.de.example:subsystem1
nvmetcli/subsystems> cd nqn.2026-09.de.example:subsystem1
nvmetcli/subsystems/nqn...> cd namespaces
nvmetcli/subsystems/nqn.../namespaces> create 1
nvmetcli/subsystems/nqn.../namespaces> cd 1
nvmetcli/subsystems/nqn.../namespaces/1> set device path=/dev/nvme1n1
nvmetcli/subsystems/nqn.../namespaces/1> cd ../../..
nvmetcli/subsystems> cd ../ports
nvmetcli/ports> create 1
nvmetcli/ports> cd 1
nvmetcli/ports/1> set addr adrfam=ipv4 trtype=tcp traddr=192.168.1.20 trsvcid=4420
nvmetcli/ports/1> cd ..
nvmetcli/ports> 1/subsystems add nqn.2026-09.de.example:subsystem1

Die interaktive Navigation ist gewöhnungsbedürftig; einfacher ist der JSON-Weg: Die Konfiguration wird als Datei gebaut und mit einem Befehl geladen:

nvmetcli restore /etc/nvmet/config.json   # Konfiguration einspielen
nvmetcli saveconfig /etc/nvmet/config.json # aktuellen Zustand sichern

Nach dem Restore ist das Subsystem über TCP erreichbar und der Host kann sich per nvme connect verbinden.

Klassische SAN-Transporte richten Administratoren mit iSCSI-Befehlen (TCP/IP) oder FCoE-Befehlen (Layer-2) ein.

Verwandte Grundlagen: NVMe-oF, NVMe-SSDs, iSCSI.