LVMCONFIG(8)

LVMCONFIG(8) β€” the manual page, bestie edition πŸ’…

okay so you wanna know about lvmconfig? say less. this is part 1, we're doing NAME, SYNOPSIS, DESCRIPTION, and USAGE. no cap.

✨ NAME ✨

lvmconfig β€” Display and manipulate configuration information πŸ’–

wait that's literally it? yes bestie, that's the whole name section. iconic.


🌸 SYNOPSIS 🌸

okay so here's the vibe of how you call it:

       lvmconfig option_args
              [ option_args ]
              [ position_args ]

               --atversion String
               --commandprofile String
               --config String
            -d|--debug ...
               --devices PV
               --devicesfile String
               --driverloaded y|n
               --edit String
            -f|--file String
            -h|--help
               --ignoreadvanced
               --ignorelocal
               --ignoreunsupported
               --input String
               --journal String
            -l|--list
               --lockopt String
               --longhelp
               --mergedconfig
               --metadataprofile String
               --nohints
               --nolocking
               --output String
               --profile String
            -q|--quiet ...
               --showdeprecated
               --showunsupported
               --sinceversion String
            -t|--test
               --typeconfig current|default|diff|full|list|missing|new|
            profilable|profilable-command|profilable-metadata
               --unconfigured
               --validate
               --valuesonly
            -v|--verbose ...
               --version
               --withcomments
               --withgeneralpreamble
               --withlocalpreamble
               --withspaces
               --withsummary
               --withversions
            -y|--yes

no cap, that's the whole option list for the synopsis. every single flag is there. πŸ’―


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so listen up: lvmconfig, lvm config, and lvm dumpconfig (that last one is literally only there for compatibility reasons, and it's being phased out πŸ‘‹) β€” all of these produce formatted output from the LVM configuration tree.

where does that config data even come from? bestie, it's from lvm.conf(5) and command line settings from --config. periodt.

the way that config tree just gives you formatted output? yeah. main character energy.


πŸ› οΈ USAGE πŸ› οΈ

here's how you actually use it. multiple forms, multiple vibes.

πŸ’… the classic lvmconfig run

       lvmconfig
              [ -f|--file String ]
              [ -l|--list ]
              [ --atversion String ]
              [ --ignoreadvanced ]
              [ --ignorelocal ]
              [ --ignoreunsupported ]
              [ --mergedconfig ]
              [ --metadataprofile String ]
              [ --showdeprecated ]
              [ --showunsupported ]
              [ --sinceversion String ]
              [ --typeconfig current|default|diff|full|list|missing|new|
              profilable|profilable-command|profilable-metadata ]
              [ --unconfigured ]
              [ --validate ]
              [ --valuesonly ]
              [ --withgeneralpreamble ]
              [ --withlocalpreamble ]
              [ --withsummary ]
              [ --withversions ]
              [ COMMON_OPTIONS ]
              [ String ... ]

lowkey this is the main form. you got your file flag, your list flag, all the --ignore* and --show* flags, --typeconfig with all those options, and then COMMON_OPTIONS plus String ... at the end. πŸ’β€β™€οΈ


πŸ“ edit settings in lvm config file

       lvmconfig --edit String
              [ -f|--file String ]
              [ --edit String ]
              [ COMMON_OPTIONS ]

this one edits settings directly in the lvm config file. you pass a String to --edit and you're in. ✨


πŸ“– read a config file and write to output file or stdout

       lvmconfig --input String
              [ --edit String ]
              [ --output String ]
              [ COMMON_OPTIONS ]

this one reads a config file and writes somewhere β€” either to an output file or just to stdout. --input takes a String, and you can also throw in --edit and --output. read and write, slay. πŸ”₯


πŸŽ€ common options for command

       Common options for command:
              [ --withcomments ]
              [ --withspaces ]

these two are your command-level common options. --withcomments and --withspaces. cute.

πŸ‘‘ common options for lvm

       Common options for lvm:
              [ -d|--debug ... ]
              [ -h|--help ]
              [ -q|--quiet ... ]
              [ -t|--test ]
              [ -v|--verbose ... ]
              [ -y|--yes ]
              [ --commandprofile String ]
              [ --config String ]
              [ --devices PV ]
              [ --devicesfile String ]
              [ --driverloaded y|n ]
              [ --journal String ]
              [ --lockopt String ]
              [ --longhelp ]
              [ --nohints ]
              [ --nolocking ]
              [ --profile String ]
              [ --version ]

and these are the common options for lvm itself. debug, help, quiet, test, verbose, yes, commandprofile, config, devices, devicesfile, driverloaded, journal, lockopt, longhelp, nohints, nolocking, profile, version. no cap, every single one is here. πŸ’–


okay bestie, that's part 1. don't go anywhere, there's more coming πŸ‘€πŸ’…

✨ OPTIONS ✨

Okay bestie, this is the big one β€” every single flag this icon supports. Buckle up πŸŽ€


  • --atversion String β€” drop an LVM version in x.y.z format, where x is major, y is minor and z is patchlevel (like 2.2.106). When the config gets displayed, only the settings that this LVM version actually recognizes get considered. Lowkey the whole point: you can peek at a config that a certain LVM version understands, one with no newer settings in it β€” so LVM won't hit you with warning messages while checking the config. πŸ¦‹
  • --commandprofile String β€” the command profile to use for command configuration. See lvm.conf(5) for the whole tea on profiles.
  • --config String β€” config settings for the command, and yep, these override the lvm.conf(5) settings. The String arg takes the same format as lvm.conf(5), or it can use section/field syntax. Again, lvm.conf(5) has the details about config. πŸ’…
  • -d, --debug ... β€” set the debug level. Repeat it 1 to 6 times to crank up the detail of messages going to the log file and/or syslog (if syslog is configured). More repeats = more yapping ✨
  • --devices PV β€” restricts which devices the command can see and touch. Anything not listed just looks missing. Repeat the option, or hand it a comma-separated list of devices. Heads up: this overrides the devices file. πŸ™ˆ
  • --devicesfile String β€” a file listing the devices LVM should use. It has to exist in /etc/lvm/devices/ and it's managed with the lvmdevices(8) command. This one overrides the lvm.conf(5) devices/devicesfile and devices/use_devicesfile settings.
  • --driverloaded y|n β€” if you set it to no, the command won't even try to use device-mapper. For testing and debugging, bestie 🧚
  • --edit String β€” edit or remove a setting in an LVM config file. You specify the setting as Section/Field=Value. Wanna nuke a setting instead? Use Section/Field=-. Repeat the option to edit multiple settings at once. Slay πŸŽ€
  • -f, --file String β€” write the output to the named file.
  • -h, --help β€” display help text. The classic.
  • --ignoreadvanced β€” excludes advanced configuration settings from the output.
  • --ignorelocal β€” ignore the local section. That local section is supposed to live in the lvmlocal.conf file, and it should hold config settings specific to the local host β€” stuff you do not want getting copied over to other hosts. No cap. πŸ’œ
  • --ignoreunsupported β€” exclude unsupported configuration settings from the output. These are settings that are either only for debugging and development, or whose support isn't finished yet and aren't meant for production. Fr fr: the current and diff types already include unsupported settings in their output by default, and all the other types ignore unsupported settings.
  • --input String β€” read the configuration from the specified input file.
  • --journal String β€” record info in the systemd journal. This is on top of whatever the lvm.conf log/journal setting already enables. The options are:
    • command: record info about the command.
    • output: record the default command output.
    • debug: record full command debugging. πŸ”₯
  • -l, --list β€” print a list of config settings instead of the structured config settings tree. Used with no other options, it's the exact same as --typeconfig list --withsummary.
  • --lockopt String β€” used to pass options for special cases over to lvmlockd. See lvmlockd(8) for more info.
  • --longhelp β€” display long help text. (The long one, bestie, we love a thorough queen πŸ‘‘)
  • --mergedconfig β€” when the command runs with --config and/or --commandprofile (or with the LVM_COMMAND_PROFILE environment variable), --profile, or --metadataprofile, this merges all the contents of the "config cascade" before displaying it. Without merging, you only see the configuration sitting at the front of the cascade. lvm.conf(5) is where the config details live. 🌈
  • --metadataprofile String β€” the metadata profile to use for command configuration. Yep, lvm.conf(5) has the profile lore.
  • --nohints β€” don't use the hints file to locate devices for PVs. Without hints, a command may need to read more devices to find PVs. Don't worry though: the command will still do standard hint file invalidation where it's appropriate. 🫢
  • --nolocking β€” disable locking. Use with caution, because concurrent commands may produce incorrect results. ⚠️ Not a vibe to do casually.
  • --output String β€” write lvm configuration to the specified output file. Used together with --input to read configuration from one file, optionally apply edits, and write the configuration out to another file. Chef's kiss workflow πŸ’…
  • --profile String β€” an alias for --commandprofile or --metadataprofile, depending on which command you're running.
  • -q, --quiet ... β€” suppress output and log messages. This overrides --debug and --verbose. Repeat it once to also suppress any prompts with the answer no. πŸ“
  • --showdeprecated β€” include deprecated configuration settings in the output. These settings get deprecated after a certain version. If you specified a concrete version with --atversion, deprecated settings are automatically included whenever the version you gave is lower than the version in which the settings were deprecated. And for real: the current and diff types include deprecated settings in their output by default, while all the other types ignore deprecated settings.
  • --showunsupported β€” include unsupported configuration settings in the output. These settings are either only for debugging or development, or their support isn't complete yet and they're not meant for production. Same deal as before: the current and diff types include unsupported settings in their output by default, and all the other types ignore unsupported settings. πŸ’€
  • --sinceversion String β€” specify an LVM version in x.y.z format, where x is the major version, y is the minor version and z is the patchlevel (like 2.2.106). As of right now this option only applies with --typeconfig new, to display every configuration setting introduced since the version you gave. ✨
  • -t, --test β€” run in test mode. Commands won't update metadata. How's it implemented? By disabling all metadata writing but still returning success to the calling function anyway. Heads up: this can lead to weird error messages in multi-stage operations if a tool relies on reading back metadata it thinks has changed β€” but hasn't. 😭
  • --typeconfig current|default|diff|full|list|missing|new|profilable|profilable-command|profilable-metadata β€” okay this one is a whole buffet, let's go one by one:
    • current prints the config settings that would be applied to an LVM command (assuming the command doesn't override them on the command line). It includes: settings that were modified in lvm config files, settings that get their default values from config files, and default settings that have been uncommented in config files.
    • default prints all settings with their default values. Changes made in lvm config files are not reflected in the output. Some settings get their defaults internally, and those are printed as comments. Other settings get their defaults from config files, and those are not printed as comments.
    • diff prints only the config settings that have been modified from their default values in config files β€” aka the difference between current and default.
    • full prints every setting uncommented and set to the current value, i.e. exactly how an LVM command would use it. That covers settings modified in config files, settings that usually get defaults internally, and settings that get defaults from config files.
    • list prints all config names, no values.
    • missing prints settings that are missing from the lvm config files. A missing setting that usually gets its default from config files is printed uncommented and set to the internal default. Settings that get their default internally and aren't set in config files are printed commented, with the internal default.
    • new prints config settings that were added since the lvm version specified by --sinceversion. They're printed with their default values.
    • profilable prints settings with their default values that can be set from a profile.
    • profilable-command prints settings with their default values that can be set from a command profile.
    • profilable-metadata prints settings with their default values that can be set from a metadata profile.
    • Also, go read lvm.conf(5). πŸ“–
  • --unconfigured β€” internal option used for generating config file during build. (Behind the scenes behavior, don't worry about it 🫣)
  • --validate β€” validate the current configuration that's being used, and exit with the appropriate return code. The validation is done only for the configuration at the front of the "config cascade". To validate the whole merged configuration tree, throw --mergedconfig in there too. And yes, the validation happens even if lvm.conf(5) config/checks is disabled. πŸ‘‘
  • --valuesonly β€” when printing config settings, print only the values, without the keys.
  • -v, --verbose ... β€” set verbose level. Repeat it 1 to 4 times to increase the detail of messages sent to stdout and stderr. πŸ—£οΈ
  • --version β€” display version information.
  • --withcomments β€” display a full comment for each configuration node. For deprecated settings, it also displays comments about the deprecation. πŸ’¬
  • --withgeneralpreamble β€” include the general config file preamble.
  • --withlocalpreamble β€” include the local config file preamble.
  • --withspaces β€” where appropriate, add more spaces in the output for better readability. Aesthetic and functional πŸ’…βœ¨
  • --withsummary β€” display a one line comment for each configuration node.
  • --withversions β€” also display a comment containing the version of introduction for each configuration node. If the setting is deprecated, it also displays the version since which it's deprecated. πŸ¦‹
  • -y, --yes β€” don't prompt for confirmation interactively, just always assume the answer is yes. Use with extreme caution. (For automatic no, see -qq.) 🚨

🌈 VARIABLES 🌈

bestie, these are the lil building blocks that show up all over the option descriptions πŸ’–

  • String β€” the option description itself tells you what that string is supposed to contain. Go read it, it ate πŸ’…
  • Size[UNIT] β€” okay so this one's an input number, and it can come with an optional unit tagged on. Plot twist: input units are ALWAYS base two, no matter how you capitalize them πŸŽ€ so k and K are literally the same thing, both mean 1024. no cap.

The default input unit gets spelled out as a letter, followed by |UNIT. And here's the full roster of possible input UNITs, memorized and slay:

  • b|B β€” bytes πŸ“
  • s|S β€” sectors of 512 bytes
  • k|K β€” KiB ✨
  • m|M β€” MiB
  • g|G β€” GiB
  • t|T β€” TiB
  • p|P β€” PiB
  • e|E β€” EiB πŸ‘‘
⚠️ do NOT get this confused with the output control --units, bestie. Over there, capital letters mean a multiple of 1000. Different vibe entirely, okay? 😭

🌿 ENVIRONMENT VARIABLES 🌿

for the whole tea on environment variables that lvm uses, go peek at lvm(8) 🫢

and like, a lil example that's lowkey iconic: LVM_VG_NAME can generally be swapped in for a required VG parameter πŸ’œ


πŸ‘€ SEE ALSO πŸ‘€

the whole friend group, fr fr β€” go say hi 🌸


and that's the whole page, bestie!! πŸŽ€ you made it to the end, main character energy fr. πŸ’…

this little masterpiece is brought to you by Red Hat, Inc. β€” it's LVM TOOLS 2.03.44(2), dated 2026-10-27, and the page itself is LVMCONFIG(8). ✨ go forth and configure, you gorgeous nerd πŸ¦‹πŸ’–

πŸ“¦ where this page comes from