NVME-DISCONNECT(1)

πŸŽ€ NAME πŸŽ€

nvme-disconnect β€” disconnect one or more Fabrics controller(s), bestie πŸ’…

Welcome to the NVME-DISCONNECT(1) page from the NVMe manual. It’s giving β€œsay bye to your controllers” energy, and honestly? Iconic.

✨ SYNOPSIS ✨

nvme [<global-options>] disconnect [--device=<device> | -d <device>]
                        [--exclude | -x]
                        [<fabrics-options>]

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so nvme-disconnect disconnects and removes one or more existing NVMe over Fabrics controllers. Like, pack your bags, controller πŸ’Ό

If you use --device, the controller with that name gets removed. If --nqn is given by itself, every controller connected to the subsystem identified by subnqn gets removed. If --nqn is combined with any of the other fabrics options below β€” the same ones nvme connect accepts, such as --transport, --traddr, --trsvcid, --host-traddr, --host-iface, --hostnqn or --hostid β€” then only the controller(s) matching all of the specified options are removed. That’s lowkey useful for disambiguating between multiple controllers connected to the same subsystem ✨

--device cannot be combined with --nqn or any of the other fabrics options. Periodt.

With --exclude, a matching entry is written to the system-wide NVMe-oF exclusion list before the controller (or subsystem) is torn down, so that a cooperating orchestrator sees the exclusion in place before the removal event fires and does not immediately reconnect. See nvme-exclusion-add(1) and the exclusion list overview for details 🫢

πŸ’– OPTIONS πŸ’–

  • -d <device>, --device <device> β€” Indicates that the controller with the specified name should be removed. Cannot be combined with --nqn or any of the fabrics options below.
  • -x, --exclude β€” Write a matching entry to the user exclusion list before disconnecting, so orchestrators do not auto-reconnect the controller. The entry is built from the controller’s transport parameters (or, with a bare --nqn, from the subsystem NQN).

🌈 FABRICS OPTIONS 🌈

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

  • -a <traddr>, --traddr=<traddr> β€” 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 <#>, --reconnect-delay=<#> β€” Set the delay in seconds before reconnect is attempted after a connection loss.
  • -C <secret>, --kxchap-ctrl-secret=<secret> β€” Controller authentication secret for bi-directional authentication. If not specified, bi-directional authentication is not attempted.
  • -S <secret>, --kxchap-secret=<secret> β€” Host authentication secret (KX-HMAC-CHAP). Must be provided in ASCII format as defined in the NVMe specification.
  • -C <secret>, --dhchap-ctrl-secret=<secret> β€” Controller authentication secret for bi-directional authentication. If not specified, bi-directional authentication is not attempted. (deprecated, see --kxchap-ctrl-secret)
  • -S <secret>, --dhchap-secret=<secret> β€” 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 <iface>, --host-iface=<iface> β€” Specify the network interface to use for the connection.
  • -I <hostid>, --hostid=<hostid> β€” Specify the host UUID.
  • -q <hostnqn>, --hostnqn=<hostnqn> β€” Override the default host NQN.
  • -w <traddr>, --host-traddr=<traddr> β€” Specify the source address on the host side of the connection.
  • -k <#>, --keep-alive-tmo=<#> β€” Set the keep-alive timeout in seconds.
  • --keyring=<keyring> β€” Keyring to use for TLS key lookup.
  • -n <subnqn>, --nqn=<subnqn> β€” Specify the NVMe subsystem NQN to connect to.
  • -i <#>, --nr-io-queues=<#> β€” Number of I/O queues to create.
  • -P <#>, --nr-poll-queues=<#> β€” Number of polling queues to create.
  • -W <#>, --nr-write-queues=<#> β€” Number of write queues to create.
  • -Q <#>, --queue-size=<#> β€” Queue depth for I/O queues.
  • -l <#>, --ctrl-loss-tmo=<#> β€” Maximum time in seconds to retry reconnect attempts after controller loss.
  • -s <trsvcid>, --trsvcid=<trsvcid> β€” Transport service identifier (e.g. TCP/rdma port). Default is 4420 for RDMA.
  • -T <#>, --tos=<#> β€” Type of service value for the connection (TCP).
  • -t <trtype>, --transport=<trtype> β€” Specify the transport type. Supported values include:
    • rdma β€” RDMA (RoCE, iWARP, InfiniBand)
    • tcp β€” TCP/IP
    • fc β€” Fibre Channel (experimental)
    • loop β€” Local loopback transport
  • --tls β€” Enable TLS encryption (TCP).
  • --tls-key=<tls-key> β€” 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=<identity> β€” Identity associated with the TLS key.

πŸ‘‘ 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 <fmt>, --output-format=<fmt> β€” Set the reporting format to normal, tabular, 'json, or binary. Only one output format may be used at a time.
  • --output-format-version=<version> β€” Select the output format version. Version 1 uses the original field naming, while version 2 (default) provides more consistent and script-friendly field names. Other versions are rejected.
  • --quiet β€” Suppress informational messages. Errors are still reported, and --quiet cancels any --verbose for the library log level.
  • --set-options=<key=value>[,<key=value>...] β€” Set libnvme library options for this invocation. Supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir.
  • --timeout=<ms> β€” Set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff).
  • -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). A command-line flag always overrides the file πŸ’…

🌸 EXAMPLES 🌸

  • Disconnect all controllers for a subsystem named nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432:
# nvme disconnect --nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
  • Disconnect the controller nvme4:
# nvme disconnect --device=nvme4
  • Disconnect only the tcp controller for a subsystem at a given traddr, leaving other controllers of the same subsystem (e.g. over a different transport address) connected:
# nvme disconnect --nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432 \
                   --transport=tcp --traddr=192.168.1.100
  • Disconnect nvme4 and exclude it so orchestrators do not reconnect it:
# nvme disconnect --device=nvme4 --exclude

🧚 SEE ALSO 🧚

nvme-connect(1) nvme-exclusion-add(1)

πŸ’œ NVME πŸ’œ

Part of the nvme-user suite.


Okay that’s the whole page, bestie! 🫢 Source/version: NVMe; date: 10/30/2026 β€” NVME-DISCONNECT(1), signing off πŸ’–βœ¨

πŸ“¦ where this page comes from