VGS(8)

๐Ÿ’– VGS ๐Ÿ’–

okay bestie, so this is the manual page for vgs โ€” it lives in section 8 of the System Manager's Manual, so it's a system administration type of girlie. Buckle up, she's got a lot of flags but we're getting through all of them together ๐Ÿซถ


โœจ NAME โœจ

vgs โ€” Display information about volume groups

like. it shows u info. about VGs. that's the whole vibe ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

vgs    [ option_args ]
       [ position_args ]

translation: u say vgs, then a bunch of optional little flags, then maybe some actual things to look at โœจ


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

vgs produces formatted output about VGs.

that's it. that's the sentence. she's concise, she's iconic, she's not gonna over-explain. VGs = volume groups, formatted output = a cute lil table, and u just read it. periodt ๐ŸŒˆ


๐ŸŽ€ USAGE ๐ŸŽ€

here's the full shape of the command, every option she accepts, no cap:

vgs
       [ -a|--all ]
       [ -o|--options String ]
       [ -O|--sort String ]
       [ -S|--select String ]
       [ --aligned ]
       [ --binary ]
       [ --configreport log|vg|lv|pv|pvseg|seg ]
       [ --foreign ]
       [ --headings none|abbrev|full|0|1|2 ]
       [ --ignorelockingfailure ]
       [ --logonly ]
       [ --nameprefixes ]
       [ --noheadings ]
       [ --nosuffix ]
       [ --readonly ]
       [ --reportformat basic|json|json_std ]
       [ --rows ]
       [ --separator String ]
       [ --shared ]
       [ --unbuffered ]
       [ --units [Number]r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E ]
       [ --unquoted ]
       [ COMMON_OPTIONS ]
       [ VG|Tag ... ]

see that? every single bracket is optional bestie, vgs will happily run with zero extra input and just show u everything it feels like showing u ๐Ÿ’œ


and then, because lvm wants to be thorough about it, there's a second little block of options that basically every lvm command shares. it goes like this:

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 ]

these are the "COMMON_OPTIONS" u see sitting in that last usage block. same ones, every command, like a lil friend group that always shows up together ๐Ÿงš


๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

okay this is the main event. every flag, one by one, no skipping, we're eating the whole plate ๐Ÿ“

  • --aligned โ€” Use with --separator to align the output columns. (so like, if you're already messing with the separator, this makes the columns line up all pretty and neat instead of looking unhinged)
  • -a, --all โ€” List all VGs. Equivalent to not specifying any VGs. (which is lowkey the most "we could've said nothing" option energy ever but we respect her)
  • --binary โ€” Use binary values "0" or "1" instead of descriptive literal values for columns that have exactly two valid values to report (not counting the "unknown" value which denotes that the value could not be determined). (so: two-option columns become 0/1 instead of whatever cute word they'd normally print)
  • --commandprofile String โ€” The command profile to use for command configuration. See lvm.conf(5) for more information about profiles.
  • --config String โ€” Config settings for the command. These override lvm.conf(5) settings. The String arg uses the same format as lvm.conf(5), or may use section/field syntax. See lvm.conf(5) for more information about config.
  • --configreport log|vg|lv|pv|pvseg|seg โ€” See lvmreport(7).
  • -d, --debug ... โ€” Set debug level. Repeat from 1 to 6 times to increase the detail of messages sent to the log file and/or syslog (if configured). (yes bestie, u can stack it up to six whole times, go feral)
  • --devices PV โ€” Restricts the devices that are visible and accessible to the command. Devices not listed will appear to be missing. This option can be repeated, or accepts a comma-separated list of devices. This overrides the devices file. (hide and seek but make it device-mapper)
  • --devicesfile String โ€” A file listing devices that LVM should use. The file must exist in /etc/lvm/devices/ and is managed with the lvmdevices(8) command. This overrides the lvm.conf(5) devices/devicesfile and devices/use_devicesfile settings.
  • --driverloaded y|n โ€” If set to no, the command will not attempt to use device-mapper. For testing and debugging. (little sandbox mode, mainly for poking at stuff)
  • --foreign โ€” Report/display foreign VGs that would otherwise be skipped. See lvmsystemid(7) for more information about foreign VGs.
  • --headings none|abbrev|full|0|1|2 โ€” Type of headings to use in report output. none or 0: No headings. abbrev or 1: Column name abbreviations. full or 2: Full column names. (pick ur level of header lore ๐Ÿ’…)
  • -h, --help โ€” Display help text.
  • --ignorelockingfailure โ€” Allows a command to continue with read-only metadata operations after locking failures.
  • --journal String โ€” Record information in the systemd journal. This information is in addition to information enabled by the lvm.conf log/journal setting. command: record information about the command. output: record the default command output. debug: record full command debugging.
  • --lockopt String โ€” Used to pass options for special cases to lvmlockd. See lvmlockd(8) for more information.
  • --logonly โ€” Suppress command report and display only log report. (the report, but make it just the log. she said no table today)
  • --longhelp โ€” Display long help text. (the deluxe version of --help, basically)
  • --nameprefixes โ€” Add an "LVM2_" prefix plus the field name to the output. Useful with --noheadings to produce a list of field=value pairs that can be used to set environment variables (for example, in udev rules).
  • --noheadings โ€” Suppress the headings line that is normally the first line of output. Useful if grepping the output. (bye bye header row ๐Ÿ‘‹)
  • --nohints โ€” Do not use the hints file to locate devices for PVs. A command may read more devices to find PVs when hints are not used. The command will still perform standard hint file invalidation where appropriate.
  • --nolocking โ€” Disable locking. Use with caution, concurrent commands may produce incorrect results. (โš ๏ธ she is NOT playing, this one is genuinely risky โ€” locking exists for a reason bestie)
  • --nosuffix โ€” Suppress the suffix on output sizes. Use with --units (except h and H) if processing the output.
  • -o, --options String โ€” Comma-separated, ordered list of fields to display in columns. String arg syntax is: [+|-|#]Field1[,Field2 ...] The prefix + will append the specified fields to the default fields, - will remove the specified fields from the default fields, and # will compact specified fields (removing them when empty for all rows.) Use -o help to view the list of all available fields. Use separate lists of fields to add, remove or compact by repeating the -o option: -o+field1,field2 -o-field3,field4 -o#field5. These lists are evaluated from left to right. Use field name lv_all to view all LV fields, vg_all all VG fields, pv_all all PV fields, seg_all all LV segment fields, and pvseg_all all PV segment fields. See the lvm.conf(5) report section for more config options. See lvmreport(7) for more information about reporting. (this is the one u will actually use every single day, learn her fr fr)
  • --profile String โ€” An alias for --commandprofile or --metadataprofile, depending on the command.
  • -q, --quiet ... โ€” Suppress output and log messages. Overrides --debug and --verbose. Repeat once to also suppress any prompts with answer 'no'. (quiet AND extra quiet, she contains multitudes)
  • --readonly โ€” Prevent the command from making changes, including activation and metadata updates. (See --permission r for read only LVs.)
  • --reportformat basic|json|json_std โ€” Overrides current output format for reports which is defined globally by the report/output_format setting in lvm.conf(5). basic is the original format with columns and rows. If there is more than one report per command, each report is prefixed with the report name for identification. json produces report output in JSON format. json_std produces report output in JSON format which is more compliant with the JSON standard. See lvmreport(7) for more information. (yes she speaks JSON, she's multilingual โœจ)
  • --rows โ€” Output columns as rows. (the table got rotated, slay)
  • -S, --select String โ€” Select objects for processing and reporting based on specified criteria. The criteria syntax is described by --select help and lvmreport(7). For reporting commands, one row is displayed for each object matching the criteria. See --options help for selectable object fields. Rows can be displayed with an additional "selected" field (-o selected) showing 1 if the row matches the selection and 0 otherwise. For non-reporting commands which process LVM entities, the selection is used to choose items to process.
  • --separator String โ€” String to use to separate each column. Useful if grepping the output.
  • --shared โ€” Report/display shared VGs that would otherwise be skipped when lvmlockd is not being used on the host. See lvmlockd(8) for more information about shared VGs.
  • -O, --sort String โ€” Comma-separated ordered list of columns to sort by. Replaces the default selection. Precede any column with - for a reverse sort on that column. (put a lil - in front and she sorts backwards, queen of range)
  • -t, --test โ€” Run in test mode. Commands will not update metadata. This is implemented by disabling all metadata writing but nevertheless returning success to the calling function. This may lead to unusual error messages in multi-stage operations if a tool relies on reading back metadata it believes has changed but hasn't. (โš ๏ธ fake success, real confusion โ€” she'll tell u it worked and it did NOT do the thing)
  • --unbuffered โ€” Produce output immediately without sorting or aligning the columns properly. (chaos mode, but fast chaos)
  • --units [Number]r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E โ€” All sizes are output in these units: human-(r)eadable with '<' rounding indicator, (h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes, (g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes. Capitalise to use multiples of 1000 (S.I.) instead of 1024. Custom units can be specified, e.g. --units 3M. (lowercase = 1024, uppercase = 1000, and yes u can just. make up a number like 3M. iconic)
  • --unquoted โ€” When used with --nameprefixes, output values in the field=value pairs are not quoted. (the quotes said goodbye ๐Ÿซถ)
  • -v, --verbose ... โ€” Set verbose level. Repeat from 1 to 4 times to increase the detail of messages sent to stdout and stderr. (stack her up to four times for maximum yapping)
  • --version โ€” Display version information.
  • -y, --yes โ€” Do not prompt for confirmation interactively but always assume the answer yes. Use with extreme caution. (For automatic no, see -qq.) (โš ๏ธ she says yes to EVERYTHING. no asks. extreme caution. we mean it ๐Ÿ’€)

๐Ÿ’œ VARIABLES ๐Ÿ’œ

these are the position_args from the synopsis, the actual things u point the command at:

  • VG โ€” Volume Group name. See lvm(8) for valid names.
  • Tag โ€” Tag name. See lvm(8) for information about tag names and using tags in place of a VG, LV or PV. (yes u can put a tag where a VG would go, that's the whole point of her)
  • String โ€” See the option description for information about the string content.
  • Size[UNIT] โ€” Size is an input number that accepts an optional unit. Input units are always treated as base two values, regardless of capitalization, e.g. 'k' and 'K' both refer to 1024. The default input unit is specified by letter, followed by |UNIT. UNIT represents other possible input units: b|B is bytes, s|S is sectors of 512 bytes, k|K is KiB, m|M is MiB, g|G is GiB, t|T is TiB, p|P is PiB, e|E is EiB. (This should not be confused with the output control --units, where capital letters mean multiple of 1000.)

okay so that's why capitalization is so cursed here bestie: for input sizes, k and K are the SAME thing (both 1024). For output via --units, capital letters mean multiples of 1000 instead. two different rules, one very confusing family ๐Ÿ’€

and we're not even done yet โ€” there's more coming, so don't go anywhere ๐ŸŒธ

๐Ÿ’– ENVIRONMENT VARIABLES ๐Ÿ’–

ok so for the full scoop on the environment variables lvm uses, go peek at lvm(8) โ€” it's giving encyclopedia energy, fr fr ๐Ÿ“š. and like, a lil example for you: LVM_VG_NAME can generally be subbed in for a required VG parameter, no cap. that's the vibe ๐Ÿ’…


๐Ÿ“ NOTES ๐Ÿ“

ok bestie, let's decode the vg_attr bits โ€” they're like the volume group's lil status letters and they matter, periodt ๐Ÿซถ:

  1. Permissions: (w)ritable, (r)ead-only โ€” so either we can write to it or it's read-only, know the difference ๐Ÿ’…
  2. Resi(z)eable โ€” yes, it can be resized, slay.
  3. E(x)ported โ€” it's exported, iconic.
  4. (p)artial: one or more physical volumes belonging to the volume group are missing from the system. not the vibe, but important to know ๐Ÿ˜ญ
  5. Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere โ€” pick your allocation fighter, bestie.
  6. (c)lustered, (s)hared โ€” clustered or shared, iykyk.
  7. (P)ersistent reservation is required but is not started, (p)ersistent reservation is required and is started. โ€” capital P means it's required but not started yet, lowercase p means it's required and started. fr fr.

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

go check out these besties, they're all part of the lvm cinematic universe ๐ŸŽฌ:


and that's the whole page, bestie ๐Ÿซถ this lil masterpiece came from Red Hat, Inc., it's LVM TOOLS 2.03.44(2) dated (2026-10-27), and it's the VGS(8) manual page. periodt ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from