NVME-CONFIG-CREATE(1) NVMe Manual NVME-CONFIG-CREATE(1)

# [NAME](#NAME)

nvme-config-create - Add an NVMe-oF connection entry to the INI configuration

# [SYNOPSIS](#SYNOPSIS)

```
nvme [<global-options>] config create


                        [--discovery]


                        [--persistent[=<no|auto|force>] ]


                        [--host-symname=<name>]


                        [--output=<file>]


                        [<fabrics-options>]
```

# [DESCRIPTION](#DESCRIPTION)

Build one NVMe-oF connection entry from command-line options and add it to the INI configuration used by *nvme connect*, *nvme discover*, and *nvme connect-all*. The format is documented at **https://github.com/linux-nvme/nvme-cli/blob/master/libnvme/design/CONFIG.md**

If the target file exists, its connections are kept and the new entry is merged in alongside them. Running the same command again is a no-op. Unlike *nvme config convert*, this is not a one-shot migration; it is the ongoing way to build an INI configuration from the command line.

The entry is an I/O controller (subsystem) entry by default, and --nqn is required. Use --discovery for a discovery controller entry instead; --nqn is then optional.

A connection with an explicit --hostnqn or --hostid is written to a drop-in under *&lt;file&gt;.d/*. One without either goes into the main file.

# [OPTIONS](#OPTIONS)

--discovery

Create a discovery controller entry instead of an I/O controller entry. Without this, --nqn is required.

--persistent\[=&lt;no|auto|force&gt;]

Record this discovery controller’s persistence mode. Requires --discovery. Because the value is optional, it must be attached directly to the option (--persistent=force). A value given as a separate argument (--persistent force) is silently NOT applied — it’s dropped, and --persistent is treated as if given bare (mode "auto"), with no error.

•*auto* (the default when --persistent is given with no value): persist the connection only where the target’s own EPCSD (Explicit Persistent Connection Support for Discovery) flag reports support for it.

•*force*: persist regardless of what EPCSD reports, for a target whose self-reported EPCSD cannot be trusted.

•*no*: explicitly record that this discovery controller is not persistent, overriding any default that would otherwise apply.

--host-symname=&lt;name&gt;

Name this host persona. Puts it in its own configuration drop-in.

--output=&lt;file&gt;

Write to this file instead of the default /usr/local/etc/nvme/nvme-fabrics.conf.

# [FABRICS OPTIONS](#FABRICS_OPTIONS)

The following options are common to NVMe over Fabrics commands such as nvme connect:

-a &lt;traddr&gt;, --traddr=&lt;traddr&gt;

Specify the network address of the controller. For transports using IP addressing (e.g. rdma, tcp), this should be an IP address.

--concat

Enable secure concatenation (TCP).

-c &lt;#&gt;, --reconnect-delay=&lt;#&gt;

Set the delay in seconds before reconnect is attempted after a connection loss.

-C &lt;secret&gt;, --kxchap-ctrl-secret=&lt;secret&gt;

Controller authentication secret for bi-directional authentication. If not specified, bi-directional authentication is not attempted.

-S &lt;secret&gt;, --kxchap-secret=&lt;secret&gt;

Host authentication secret (KX-HMAC-CHAP). Must be provided in ASCII format as defined in the NVMe specification.

-C &lt;secret&gt;, --dhchap-ctrl-secret=&lt;secret&gt;

Controller authentication secret for bi-directional authentication. If not specified, bi-directional authentication is not attempted. (deprecated, see --kxchap-ctrl-secret)

-S &lt;secret&gt;, --dhchap-secret=&lt;secret&gt;

Host authentication secret (DH-HMAC-CHAP). Must be provided in ASCII format as defined in the NVMe specification. (deprecated, see --kxchap-secret)

--disable-sqflow

Disable submission queue flow control.

-G, --data-digest

Enable data digest generation/verification (TCP).

-D, --duplicate-connect

Allow duplicate connections to the same subsystem.

-g, --hdr-digest

Enable header digest generation/verification (TCP).

-f &lt;iface&gt;, --host-iface=&lt;iface&gt;

Specify the network interface to use for the connection.

-I &lt;hostid&gt;, --hostid=&lt;hostid&gt;

Specify the host UUID.

-q &lt;hostnqn&gt;, --hostnqn=&lt;hostnqn&gt;

Override the default host NQN.

-w &lt;traddr&gt;, --host-traddr=&lt;traddr&gt;

Specify the source address on the host side of the connection.

-k &lt;#&gt;, --keep-alive-tmo=&lt;#&gt;

Set the keep-alive timeout in seconds.

--keyring=&lt;keyring&gt;

Keyring to use for TLS key lookup.

-n &lt;subnqn&gt;, --nqn=&lt;subnqn&gt;

Specify the NVMe subsystem NQN to connect to.

-i &lt;#&gt;, --nr-io-queues=&lt;#&gt;

Number of I/O queues to create.

-P &lt;#&gt;, --nr-poll-queues=&lt;#&gt;

Number of polling queues to create.

-W &lt;#&gt;, --nr-write-queues=&lt;#&gt;

Number of write queues to create.

-Q &lt;#&gt;, --queue-size=&lt;#&gt;

Queue depth for I/O queues.

-l &lt;#&gt;, --ctrl-loss-tmo=&lt;#&gt;

Maximum time in seconds to retry reconnect attempts after controller loss.

-s &lt;trsvcid&gt;, --trsvcid=&lt;trsvcid&gt;

Transport service identifier (e.g. TCP/rdma port). Default is 4420 for RDMA.

-T &lt;#&gt;, --tos=&lt;#&gt;

Type of service value for the connection (TCP).

-t &lt;trtype&gt;, --transport=&lt;trtype&gt;

Specify the transport type. Supported values include:

\+

Value Description rdma RDMA (RoCE, iWARP, InfiniBand) tcp TCP/IP fc Fibre Channel (**experimental**) loop Local loopback transport

--tls

Enable TLS encryption (TCP).

--tls-key=&lt;tls-key&gt;

TLS key for the connection. It is recommended to preload keys into the system keyring instead of passing them via the command line.

--tls-key-identity=&lt;identity&gt;

Identity associated with the TLS key.

# [GLOBAL OPTIONS](#GLOBAL_OPTIONS)

The following options are defined at the top-level nvme command and are available to this subcommand:

--dry-run

Print the command that would be executed, but do not actually execute it.

--no-ioctl-probing

Disable probing for 64-bit IOCTL support.

--no-retries

Disable retry logic on transient errors.

-o &lt;fmt&gt;, --output-format=&lt;fmt&gt;

Set the reporting format to *normal*, *tabular, 'json*, or *binary*. Only one output format may be used at a time.

--output-format-version=&lt;version&gt;

Select the output format version. Version *1* uses the original field naming, while version *2* (default) provides more consistent and script-friendly field names.

--timeout=&lt;ms&gt;

Set the timeout for the command in milliseconds.

-v, --verbose

Increase the level of detail in the output. May be specified multiple times to further increase verbosity.

These options can also be set as machine-wide defaults in [nvme-cli.conf(5)](/man/os/nvme-cli/nvme-cli.conf.5). A command-line flag always overrides the file.

# [EXAMPLES](#EXAMPLES)

•Add a discovery controller entry for an FC discovery controller:

```
# nvme config create --transport fc \


    --traddr=nn-0x58ccf090c92006da:pn-0x58ccf091492806da \


    --host-traddr=nn-0x20000024ff7fa448:pn-0x21000024ff7fa448 \


    --hostnqn=nqn.2014-08.org.nvmexpress:uuid:62a4ab74-1e18-11f1-8bb7-6c1ff71ba506 \


    --discovery
```

•Add an I/O controller entry to a test configuration file:

```
# nvme config create --transport tcp --traddr=192.168.1.20 --trsvcid=4420 \


    --nqn=nqn.2024-01.com.example:data.vol1 \


    --output=/tmp/nvme-fabrics.conf
```

# [SEE ALSO](#SEE_ALSO)

[nvme-config-convert(1)](/man/os/nvme-cli/nvme-config-convert.1) [nvme-config-validate(1)](/man/os/nvme-cli/nvme-config-validate.1) [nvme-config-show(1)](/man/os/nvme-cli/nvme-config-show.1) [nvme-connect-all(1)](/man/os/nvme-cli/nvme-connect-all.1) [nvme-discover(1)](/man/os/nvme-cli/nvme-discover.1)

# [NVME](#NVME)

Part of the nvme-user suite

09/18/2026 NVMe

---

Document: nvme-config-create(1) from nvme-cli 3.1-r1 (Chainguard OS)
Source: https://github.com/linux-nvme/nvme-cli
