NVME-NS-DETACH(1)

πŸ“¦ version 3.2, in arch rolling

πŸ’… NVME-NS-DETACH(1) β€” the nvme-ns-detach glow-up

okay so bestie, welcome to the NVMe Manual page for nvme-ns-detach, and no, that's not a typo, that's literally the whole title πŸŽ€ let's get into it ✨


🌸 NAME 🌸

nvme-ns-detach β€” sends the NVMe detach namespace command, and hands you back the result. that's it, that's the vibe πŸ¦‹


✨ SYNOPSIS ✨

nvme [<global-options>] ns detach <device>
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--controllers=<ctrl-list,> | -c <ctrl-list,>]

so you run nvme with your optional <global-options>, then ns detach, then the <device>, and then optionally the namespace id and the controller list. chef's kiss πŸ‘‘


πŸ’– DESCRIPTION πŸ’–

for the NVMe device you hand it, it sends the nvme namespace detach command for the namespace identifier you gave, detaching it to the list of controller identifiers you provided. like, it's literally unhooking that namespace from those controllers. main character energy πŸ’…


πŸŽ€ OPTIONS πŸŽ€

  • -n <nsid>, --namespace-id=<nsid> β€” the namespace identifier you're detaching. and here's the fun part: you can also pass the broadcast value 0xffffffff as either all or -1. yes bestie, all, -1, and 0xffffffff are all saying the same thing πŸ™ˆ
  • -c <ctrl-list,>, --controllers=<ctrl-list,> β€” the comma separated list of controller identifiers to detach the namespace from. note the trailing comma in the placeholder, it's giving "expecting a list" πŸ“

🌈 GLOBAL OPTIONS 🌈

these ones are defined up at the top-level nvme command, but they're available to this subcommand too. iykyk 🫢

  • --dry-run β€” prints the command that would be executed, but does not actually execute it. vibes only, no consequences ✨
  • --no-ioctl-probing β€” disables probing for 64-bit IOCTL support. lowkey niche but slay πŸ’€
  • --no-retries β€” kills the retry logic on transient errors. one shot, no takebacks πŸ”₯
  • -o <fmt>, --output-format=<fmt> β€” sets the reporting format to normal, tabular, json, or binary. and heads up: only one output format at a time, we don't do both πŸ’…
  • --output-format-version=<version> β€” picks the output format version. version 1 uses the original field naming, while version 2 (that's the default, bestie) gives you more consistent and script-friendly field names. other versions are rejected, so don't try it πŸ™ˆ
  • --quiet β€” suppresses informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. it's giving "i'm not listening but i still care" 😭
  • --set-options=<key=value>[,<key=value>...] β€” sets libnvme library options for this invocation. supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir. mix and match, comma separated, go off πŸŽ€
  • --timeout=<ms> β€” sets the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). literally forever, no cap ⏳
  • -v, --verbose β€” increases the level of detail in the output. you can specify it multiple times to further increase verbosity. stack it, bestie πŸ¦‹
πŸ’‘ these options can also be set as machine-wide defaults in nvme-cli.conf(5). and remember the golden rule: a command-line flag always overrides the file. periodt πŸ‘‘

🌸 EXAMPLES 🌸

no examples yet. girl, the docs are lacking, but the command is iconic, what can i say 😭


πŸ‘‘ NVME πŸ‘‘

part of the nvme-user suite πŸ’œ


and that's the whole page! this one's from the NVMe Manual, dated 10/30/2026 β€” go detach those namespaces, bestie, you're gonna ate πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from