NVME-CONFIG-CONVER(1)
π NVME-CONFIG-CONVER(1) β like, the nvme manual, but make it make sense
okay bestie so this is a page from the NVMe Manual (yes, from the nvme-user suite, we'll get there) and it's about a little command called nvme-config-convert. it converts your old dusty legacy NVMe-oF config into the shiny INI format. no cap, it's giving "glow-up for your config files" β¨
πΈ NAME
nvme-config-convert β converts a legacy NVMe-oF configuration into the INI format. that's it, that's the whole job π
β¨ SYNOPSIS
nvme [<global-options>] config convert
[--config=<file> | -J <file>]
[--output=<file>]
[--force]
[--verbose | -v]
like, you call nvme with your global options, then config convert, then sprinkle on whichever flags you need π
π¦ DESCRIPTION
okay so picture this: you've got a pre-3.0 NVMe-oF configuration chilling in the legacy config.json JSON store and/or the discovery.conf argv-style file. this command takes all that and converts it into the INI configuration format that nvme connect-all and nvme discover actually use. iconic behavior, honestly.
the INI format itself is documented riiight here:
https://github.com/linux-nvme/nvme-cli/blob/master/libnvme/design/CONFIG.md
π go read it, iykyk.
π where does it look by default?
by default the command goes looking for the legacy files:
/usr/local/etc/nvme/config.json/usr/local/etc/nvme/discovery.conf
and it converts whichever ones exist into a single configuration, matching exactly what nvme connect-all does. main character energy: same behavior, no surprises π
want to convert a config.json at some non-default path instead? use --config. easy.
but β and this is the part people always miss, so pay attention bestie β just like with nvme connect-all, converting discovery.conf is not gated by --config. that file at /usr/local/etc/nvme/discovery.conf is always converted when it exists, whether or not you passed --config. it does not care about your flags. it does its own thing. periodt. π
π where does the output go?
the converted configuration gets written to the file you give with --output. if you don't specify --output, it goes to the default spot:
/usr/local/etc/nvme/nvme-fabrics.conf
and unless you pass --force, the command refuses to overwrite an existing configuration. it's polite like that π«Ά
on success, the converted legacy file(s) get renamed to <name>.converted so they don't get converted again on the next run. and yes β running the command again is totally safe π₯: if a source file is missing only because a previous run already converted and renamed it, that's treated as already done, not as an error. slay.
π malformed stuff
malformed entries β think invalid addressing, or an unreadable port β are skipped with a log message. the conversion keeps going. the one thing that stops it is a memory allocation failure. that's the only show-stopper.
π OPTIONS
-J <file>,--config=<file>β convert this JSON file instead of the default/usr/local/etc/nvme/config.json. your file, your rules π--output=<file>β write the converted configuration here instead of the default/usr/local/etc/nvme/nvme-fabrics.conf. pick your destination bestie π―--forceβ overwrite an existing configuration at the target. β οΈ heads up: any manual changes are lost. like, gone gone. be sure, okay?-v,--verboseβ crank up the level of detail in the output. more words, more lore π
π EXAMPLES
- convert the system's legacy configuration in place:
# nvme config convert
- convert one specific configuration file for testing, without touching the system configuration:
# nvme config convert --config /tmp/config.json --output /tmp/nvme-fabrics.conf
π okay so note: unlikeconfig.json,discovery.confhas no--config-styleoverride β its path is always/usr/local/etc/nvme/discovery.conf. so if that file exists on the system, this command still converts it and renames it todiscovery.conf.converted, even though--configis pointing somewhere else entirely. she's committed. she's not listening. π
π§ SEE ALSO
nvme-config-validate(1)nvme-config-show(1)nvme-config-status(1)nvme-connect-all(1)nvme-discover(1)https://github.com/linux-nvme/nvme-cli/blob/master/libnvme/design/CONFIG.md
π NVME
this lil beauty is part of the nvme-user suite. family π
so yeah, that's the whole page β brought to you by NVMe, version dated 10/30/2026, and originally titled NVME-CONFIG-CONVER(1) in the manual. go forth and convert, bestie. you got this π
β¨
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms