'\" t .\" Title: nvme-fabrics.conf .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 09/07/2026 .\" Manual: NVMe Manual .\" Source: NVMe .\" Language: English .\" .TH "NVME\-FABRICS\&.CONF" "5" "09/07/2026" "NVMe" "NVMe Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" nvme-fabrics.conf \- NVMe\-oF connection configuration file format .SH "SYNOPSIS" .sp .nf \fI/etc/nvme/nvme\-fabrics\&.conf\fR \fI/etc/nvme/nvme\-fabrics\&.conf\&.d/*\&.conf\fR .fi .SH "DESCRIPTION" .sp An INI\-format file describing which NVMe over Fabrics (NVMe\-oF) controllers a host should connect to, and with what parameters\&. This file is read by \fInvme connect\-all\fR, \fInvme discover\fR and \fInvme connect\fR, and by the nvme\-discoverd daemon\&. .sp Other orchestrators read the same format through the same parser, but from a file of their own: nvme\-stas reads its configuration through the Python bindings\&. The file name is a parameter of every entry point, so each orchestrator names its own and is unaffected by the others\*(Aq\&. .sp A configuration is a main file plus an optional drop\-in directory, the same \fIfoo\&.conf\fR + \fIfoo\&.conf\&.d/\fR pattern systemd uses\&. Both parts are read independently, and either may be absent; an absent configuration is not an error; it simply yields no connections\&. .sp \-\-config FILE (on \fIconnect\-all\fR/\fIdiscover\fR/\fIconnect\fR) names the main file; its drop\-in directory is always \fIFILE\&.d/\fR\&. Omitting \-\-config uses the default path above\&. .SH "SECTIONS" .sp Each section is one or more \fIkey = value\fR lines\&. An empty value (\fIkey =\fR) resets the key to the kernel default, overriding whatever an outer scope set (see RESETTING A KEY below)\&. Unknown keys are ignored\&. Boolean values accept \fI1\fR/\fIyes\fR/\fIy\fR/\fItrue\fR/\fIt\fR/\fIon\fR and \fI0\fR/\fIno\fR/\fIn\fR/\fIfalse\fR/\fIf\fR/\fIoff\fR (case\-insensitive)\&. .PP \fI[Host]\fR .RS 4 Optional, at most one per file\&. The identity used by every connection in that file: \fIhostnqn\fR, \fIhostid\fR, \fIhostsymname\fR, plus any SECURITY key below\&. A file with no \fI[Host]\fR connects as the system default identity (\fI/etc/nvme/hostnqn\fR / \fIhostid\fR)\&. A drop\-in that defines \fI[Host]\fR must set \fIhostnqn\fR explicitly\&. .RE .PP \fI[Discovery Controller Defaults]\fR, \fI[I/O Controller Defaults]\fR .RS 4 Optional, at most one of each per file\&. Default TUNABLE values for connections of that class, drawn from below\&. A drop\-in\(cqs copy overlays the top\-level file\(cqs, for that drop\-in\(cqs own connections only\&. .RE .PP \fI[Discovery Controller]\fR .RS 4 One Discovery Controller to connect to\&. Repeatable\&. \fInqn =\fR defaults to the well\-known discovery NQN if omitted\&. .RE .PP \fI[Subsystem]\fR .RS 4 One I/O subsystem to connect to, named by \fInqn =\fR\&. Repeatable\&. .RE .sp Both endpoint sections accept any TUNABLE or SECURITY key as a per\-section override, plus one or more \fIcontroller =\fR lines (below)\&. .SH "CONTROLLER LINES" .sp Each \fIcontroller =\fR line under a \fI[Discovery Controller]\fR or \fI[Subsystem]\fR section is one path to that endpoint; repeating the key expresses multipath (native NVMe multipath groups all paths sharing a subsysnqn)\&. The value is a \fI;\fR\-separated \fIkey=value\fR list: .sp .if n \{\ .RS 4 .\} .nf controller = transport=tcp;traddr=10\&.0\&.0\&.9;trsvcid=4420;host\-iface=eth0 .fi .if n \{\ .RE .\} .sp \fItransport\fR and \fItraddr\fR are required; \fItrsvcid\fR, \fIhost\-traddr\fR and \fIhost\-iface\fR are optional\&. Any TUNABLE key may also appear on the line as a per\-path override \(em SECURITY keys may not, since they are bound to the (host, subsystem) pair, not to a single path\&. .SH "KEYS" .sp TUNABLE (type default, \fI[Host]\fR, endpoint section, or \fIcontroller =\fR line): .sp .if n \{\ .RS 4 .\} .nf nr\-io\-queues, nr\-write\-queues, nr\-poll\-queues, queue\-size, keep\-alive\-tmo, reconnect\-delay, ctrl\-loss\-tmo, fast\-io\-fail\-tmo, tos, duplicate\-connect, disable\-sqflow, hdr\-digest, data\-digest .fi .if n \{\ .RE .\} .sp SECURITY (\fI[Host]\fR or endpoint section only, never a \fIcontroller =\fR line): .sp .if n \{\ .RS 4 .\} .nf tls, tls\-key, tls\-key\-identity, keyring, concat, kxchap\-secret, kxchap\-ctrl\-secret .fi .if n \{\ .RE .\} .sp IDENTITY (\fI[Host]\fR only): .sp .if n \{\ .RS 4 .\} .nf hostnqn, hostid, hostsymname .fi .if n \{\ .RE .\} .sp Every key here is the same name as its \fInvme connect\fR long option (hyphenated)\&. See \fBnvme-connect\fR(1) for what each one means\&. .SH "RESETTING A KEY" .sp An empty assignment (\fIkey =\fR) resets that key to the kernel default, undoing whatever an outer scope (a \fI*Defaults\fR section or \fI[Host]\fR) set\&. This differs from simply not writing the key, which instead inherits through the cascade below\&. .SH "PRECEDENCE" .sp A key resolves most\-specific first: .sp .if n \{\ .RS 4 .\} .nf controller = line > endpoint section > [Host] > type defaults > kernel default .fi .if n \{\ .RE .\} .sp The type\-defaults level is chosen by the connection\(cqs class: a Discovery Controller draws from \fI[Discovery Controller Defaults]\fR, an I/O Controller from \fI[I/O Controller Defaults]\fR\&. .SH "EXAMPLE" .sp .if n \{\ .RS 4 .\} .nf # /etc/nvme/nvme\-fabrics\&.conf [Discovery Controller Defaults] keep\-alive\-tmo = 30 [I/O Controller Defaults] keep\-alive\-tmo = 5 [Host] hostsymname = lab\-host\-01 [Discovery Controller] controller = transport=tcp;traddr=192\&.168\&.1\&.10;trsvcid=8009 [Subsystem] nqn = nqn\&.2024\-01\&.com\&.example:data\&.vol1 controller = transport=tcp;traddr=192\&.168\&.1\&.20;trsvcid=4420 controller = transport=tcp;traddr=192\&.168\&.1\&.21;trsvcid=4420 .fi .if n \{\ .RE .\} .sp See \fI/etc/nvme/nvme\-fabrics\&.conf\&.sample\fR for a longer, commented example\&. .SH "SEE ALSO" .sp nvme\-connect\-all(1) nvme\-discover(1) nvme\-connect(1) nvme\-config\-convert(1) \m[blue]\fBhttps://github\&.com/linux\-nvme/nvme\-cli/blob/master/libnvme/design/CONFIG\&.md\fR\m[] .SH "NVME" .sp Part of the nvme\-user suite