VGCHANGE(8)

๐Ÿ’– vgchange โ€” Change volume group attributes ๐Ÿ’–

okay bestie, welcome to VGCHANGE(8) from the System Manager's Manual ๐Ÿ’… this is the puppet master of volume groups: it tweaks VG attributes, flips LV activation in the kernel, and honestly just handles a whole bunch of VG maintenance business. buckle up, there's a lot, and I'm not skipping a single crumb. ๐Ÿ“


โœจ NAME โœจ

vgchange โ€” Change volume group attributes

๐ŸŒธ SYNOPSIS ๐ŸŒธ

here's the whole shape of the thing, no notes:

vgchange option_args position_args
       [ option_args ]
       [ position_args ]

and here is every single flag she accepts, in order, no cap:

   -a|--activate y|n|ay
      --activationmode partial|degraded|complete
      --addtag Tag
      --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit
      --autoactivation String
   -A|--autobackup y|n
      --commandprofile String
      --config String
   -d|--debug ...
      --deltag Tag
      --detachprofile
      --devices PV
      --devicesfile String
      --driverloaded y|n
   -f|--force ...
   -h|--help
   -K|--ignoreactivationskip
      --ignorelockingfailure
      --ignoremonitoring
      --journal String
      --lockopt String
      --lockstart
      --lockstop
      --locktype none
   -l|--logicalvolume Number
      --longhelp
      --majoritypvs
   -p|--maxphysicalvolumes Number
      --metadataprofile String
      --monitor y|n
      --nohints
      --nolocking
      --noudevsync
   -P|--partial
      --persist String
   -s|--physicalextentsize Size[m|UNIT]
      --poll y|n
      --profile String
      --pvmetadatacopies 0|1|2
   -q|--quiet ...
      --readonly
      --refresh
      --removekey String
      --reportformat basic|json|json_std
   -x|--resizeable y|n
   -S|--select String
      --setautoactivation y|n
      --setlockargs String
      --setpersist String
      --sysinit
      --systemid String
   -t|--test
   -u|--uuid
   -v|--verbose ...
      --version
      --[vg]metadatacopies all|unmanaged|Number
   -y|--yes

ok that's a lot of options, and yes, every one of them is real. ๐Ÿ‘‘


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

vgchange changes VG attributes, changes LV activation in the kernel, and includes other utilities for VG maintenance. โœจ it's giving "one tool, many jobs", and honestly? she ate.


๐ŸŒˆ USAGE ๐ŸŒˆ

Change a general VG attribute ๐Ÿ’œ

For options listed in parentheses, any one is required, after which the others are optional. (so pick one from the group, then the rest is optional โ€” choose-your-own-adventure rules, periodt)

vgchange
       ( -l|--logicalvolume Number
         -p|--maxphysicalvolumes Number
         -s|--physicalextentsize Size[m|UNIT]
         -u|--uuid
         -x|--resizeable y|n
         --addtag Tag
         --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit
         --deltag Tag
         --detachprofile
         --metadataprofile String
         --pvmetadatacopies 0|1|2
         --setautoactivation y|n
         --[vg]metadatacopies all|unmanaged|Number )
       [ -A|--autobackup y|n ]
       [ -f|--force ... ]
       [ -S|--select String ]
       [ --ignoremonitoring ]
       [ --noudevsync ]
       [ --poll y|n ]
       [ --reportformat basic|json|json_std ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Start or stop monitoring LVs from dmeventd ๐Ÿ‘€

vgchange --monitor y|n
       [ -A|--autobackup y|n ]
       [ -f|--force ... ]
       [ -S|--select String ]
       [ --ignorelockingfailure ]
       [ --ignoremonitoring ]
       [ --noudevsync ]
       [ --poll y|n ]
       [ --reportformat basic|json|json_std ]
       [ --sysinit ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Start or stop processing LV conversions ๐Ÿ”„

vgchange --poll y|n
       [ -A|--autobackup y|n ]
       [ -f|--force ... ]
       [ -S|--select String ]
       [ --ignorelockingfailure ]
       [ --ignoremonitoring ]
       [ --noudevsync ]
       [ --reportformat basic|json|json_std ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Activate or deactivate LVs โšก

vgchange -a|--activate y|n|ay
       [ -A|--autobackup y|n ]
       [ -f|--force ... ]
       [ -K|--ignoreactivationskip ]
       [ -P|--partial ]
       [ -S|--select String ]
       [ --activationmode partial|degraded|complete ]
       [ --autoactivation String ]
       [ --ignorelockingfailure ]
       [ --ignoremonitoring ]
       [ --monitor y|n ]
       [ --noudevsync ]
       [ --persist String ]
       [ --poll y|n ]
       [ --readonly ]
       [ --reportformat basic|json|json_std ]
       [ --sysinit ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Reactivate LVs using the latest metadata โœจ

vgchange --refresh
       [ -A|--autobackup y|n ]
       [ -f|--force ... ]
       [ -S|--select String ]
       [ --ignorelockingfailure ]
       [ --ignoremonitoring ]
       [ --noudevsync ]
       [ --poll y|n ]
       [ --reportformat basic|json|json_std ]
       [ --sysinit ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Change the system ID of a VG ๐Ÿ†”

vgchange --systemid String VG|Tag|Select
       [ -S|--select String ]
       [ --majoritypvs ]
       [ --persist String ]
       [ --removekey String ]
       [ COMMON_OPTIONS ]

โ€”

Set or clear flags to control persistent reservation behavior ๐Ÿ”

vgchange --setpersist String VG|Tag|Select
       [ -S|--select String ]
       [ --persist start ]
       [ COMMON_OPTIONS ]

โ€”

Perform persistent reservation commands on devices ๐Ÿ’พ

vgchange --persist String VG|Tag|Select
       [ -f|--force ... ]
       [ -S|--select String ]
       [ --majoritypvs ]
       [ --removekey String ]
       [ COMMON_OPTIONS ]

โ€”

Set or clear lock_args flags to control lock manager behavior ๐Ÿ”’

vgchange --setlockargs String VG|Tag|Select
       [ -S|--select String ]
       [ COMMON_OPTIONS ]

โ€”

Start the lockspace of a shared VG in lvmlockd ๐Ÿš€

vgchange --lockstart
       [ -S|--select String ]
       [ --persist start ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Stop the lockspace of a shared VG in lvmlockd ๐Ÿ›‘

vgchange --lockstop
       [ -S|--select String ]
       [ --persist stop ]
       [ COMMON_OPTIONS ]
       [ VG|Tag|Select ... ]

โ€”

Change the lock type for a shared VG ๐Ÿ”

vgchange --locktype none VG
       [ --setlockargs String ]
       [ COMMON_OPTIONS ]

โ€”

Common options for lvm ๐Ÿซถ

these ones show up everywhere, they're the group chat regulars:

[ -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 ]

๐ŸŽ€ OPTIONS ๐ŸŽ€

-a, --activate y|n|ay

Changes the active state of LVs. an active LV can be used through a block device, which is how the data on the LV actually becomes reachable. ๐Ÿ’ซ

  • y makes LVs active, or available.
  • n makes LVs inactive, or unavailable.
  • ay specifies autoactivation, which is used by system-generated activation commands. By default, LVs are autoactivated.

the block device for the LV gets added to or removed from the system using device-mapper in the kernel. a symbolic link /dev/VG-Name/LVName pointing to the device node is also added or removed. all software and scripts should access the device through the symbolic link and present this as the name of the device. the location and name of the underlying device node may depend on the distribution, configuration (e.g. udev), or release version. ๐Ÿ‘‘ everyone say thank you udev.

an autoactivation property can be set on a VG or LV to disable autoactivation โ€” see --setautoactivation y|n in vgchange, lvchange, vgcreate, and lvcreate. display the property with vgs or lvs "-o autoactivation". ๐Ÿ‘€

the lvm.conf(5) auto_activation_volume_list includes names of VGs or LVs that should be autoactivated, and anything not listed is not autoactivated. when auto_activation_volume_list is undefined (the default), it has no effect. if auto_activation_volume_list is defined and empty, no LVs are autoactivated. items included by auto_activation_volume_list will not be autoactivated if the autoactivation property has been disabled. ๐Ÿ˜ญ the rules are rules.

see lvmlockd(8) for more information about activation options ey and sy for shared VGs.

--activationmode partial|degraded|complete

this one determines if LV activation is allowed when PVs are missing โ€” like when a device just ๐Ÿ’€ fails on you. options are:

  • complete โ€” only allows LVs with no missing PVs to be activated, and is the most restrictive mode.
  • degraded โ€” allows RAID LVs with missing PVs to be activated. (this does not include the "mirror" type, see "raid1" instead.)
  • partial โ€” allows any LV with missing PVs to be activated.
bestie, listen: partial should only be used for recovery or repair. it is not a lifestyle. ๐Ÿšจ

for default, see lvm.conf(5) activation_mode. see lvmraid(7) for more information.

--addtag Tag

adds a tag to a PV, VG or LV. this option can be repeated to add multiple tags at once. see lvm(8) for information about tags. ๐Ÿท๏ธ stack 'em up.

--alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit

determines the allocation policy when a command needs to allocate Physical Extents (PEs) from the VG. each VG and LV has an allocation policy which can be changed with vgchange/lvchange, or overridden on the command line. โœจ

  • normal โ€” applies common sense rules such as not placing parallel stripes on the same PV. ๐Ÿง 
  • inherit โ€” applies the VG policy to an LV.
  • contiguous โ€” requires new PEs to be placed adjacent to existing PEs.
  • cling โ€” places new PEs on the same PV as existing PEs in the same stripe of the LV.
  • anywhere โ€” if there are sufficient PEs for an allocation, but normal does not use them, anywhere will use them even if it reduces performance, e.g. by placing two stripes on the same PV. ๐Ÿ’€ sacrifice accepted.
  • cling_by_tags โ€” also a real policy, listed right there in the option values with her sisters. ๐Ÿ‘‘

optional positional PV args on the command line can also be used to limit which PVs the command will use for allocation. see lvm(8) for more information about allocation.

  • --autoactivation String โ€” tells the command whether autoactivation is happening from an event โœจ this is lowkey important because it unlocks event-specific glow-ups, like device scanning optimizations that use pvs_online files whipped up by event-based pvscans ๐Ÿ’…
  • -A, --autobackup y|n โ€” says whether metadata should get automatically backed up after a change. bestie, turning this ON is strongly advised, like actually do it ๐Ÿ™ peep vgcfgbackup(8) for the tea.
  • --commandprofile String โ€” the command profile to use for your command configuration ๐ŸŽ€ lvm.conf(5) has all the deets on profiles.
  • --config String โ€” config settings for the command, and they override whatever lvm.conf(5) says ๐Ÿ˜ค the String arg uses the exact same format as lvm.conf(5), or you can use the section/field syntax. lvm.conf(5) explains config stuff if you're curious.
  • -d, --debug ... โ€” sets the debug level ๐Ÿ› repeat it anywhere from 1 to 6 times to crank up how detailed the messages going to the log file and/or syslog (if it's configured) get.
  • --deltag Tag โ€” deletes a tag off a PV, VG or LV ๐Ÿท๏ธ and yes you can repeat this to nuke multiple tags at once. lvm(8) has the tag lore.
  • --detachprofile โ€” detaches a metadata profile from a VG or LV โœ‚๏ธ lvm.conf(5) knows all about profiles.
  • --devices PV โ€” restricts which devices are visible and accessible to the command ๐Ÿ‘€ devices that aren't listed will act like they're missing. repeat it, or drop a comma-separated list of devices. this overrides the devices file, no cap.
  • --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 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 only, bestie.
  • -f, --force ... โ€” overrides a bunch of checks, confirmations and protections โš ๏ธ use with extreme caution, this one does not play.
  • -h, --help โ€” shows the help text ๐Ÿซถ iconic, reliable, always there for you.
  • -K, --ignoreactivationskip โ€” ignores the "activation skip" LV flag during activation, so LVs that have the flag set can still be activated ๐Ÿ’ซ skips the skip, slay.
  • --ignorelockingfailure โ€” lets a command keep going with read-only metadata operations after locking has failed ๐Ÿ”“
  • --ignoremonitoring โ€” don't interact with dmeventd unless --monitor is specified ๐Ÿ™ˆ and do not use this if dmeventd is already monitoring a device, that's messy.
  • --journal String โ€” records info in the systemd journal ๐Ÿ““ this is in addition to whatever the lvm.conf log/journal setting enables. command: records info about the command. output: records the default command output. debug: records the full command debugging.
  • --lockopt String โ€” used to pass options for special cases over to lvmlockd ๐Ÿ” lvmlockd(8) has more.
  • --lockstart โ€” starts the lockspace of a shared VG in lvmlockd ๐Ÿš€ lvmlockd locks become available for the VG, letting LVM actually use it. lvmlockd(8) for more.
  • --lockstop โ€” stops the lockspace of a shared VG in lvmlockd ๐Ÿ›‘ lvmlockd locks become unavailable for the VG, so LVM can't use it. lvmlockd(8) for more.
  • --locktype none โ€” changes the VG lock type to or from a shared lock type used with lvmlockd ๐Ÿ” lvmlockd(8) has the details.
  • -l, --logicalvolume Number โ€” sets the max number of LVs allowed in a VG ๐Ÿ”ข
  • --longhelp โ€” shows the long help text ๐Ÿ“œ the extended cut, the director's version.
  • --majoritypvs โ€” changes the VG system ID if the majority of PVs in the VG are present (that's one more than half) ๐Ÿ—ณ๏ธ democracy but for PVs.
  • -p, --maxphysicalvolumes Number โ€” sets the max number of PVs that can belong to the VG ๐Ÿงฎ the value 0 removes any limitation. for large numbers of PVs, also peek at the options --pvmetadatacopies, and --vgmetadatacopies to improve performance.
  • --metadataprofile String โ€” the metadata profile to use for command configuration ๐ŸŽ€ lvm.conf(5) for more about profiles.
  • --monitor y|n โ€” start (yes) or stop (no) monitoring an LV with dmeventd ๐Ÿ‘๏ธ dmeventd watches kernel events for an LV and does automated maintenance in response to specific events. dmeventd(8) for the full story.
  • --nohints โ€” don't use the hints file to locate devices for PVs ๐Ÿ™…โ€โ™€๏ธ a command may read more devices to find PVs when hints aren't used. it'll still do standard hint file invalidation where appropriate, so don't worry.
  • --nolocking โ€” disables locking ๐Ÿ’€ use with caution fr, concurrent commands may produce incorrect results.
  • --noudevsync โ€” disables udev synchronization ๐ŸŒ€ the process won't wait for a notification from udev โ€” it'll keep going no matter what udev is doing in the background. only use this if udev isn't running or has rules that ignore the devices LVM creates.
  • -P, --partial โ€” commands will do their best to activate LVs with missing PV extents ๐Ÿฉน missing extents may get replaced with error or zero segments according to the missing_stripe_filler setting. heads up: metadata may not be changed with this option.
  • --persist String โ€” Persistent Reservation operation ๐Ÿ” the ops:
    • start: register local key and acquire reservation.
    • stop: unregister local key, releasing reservation.
    • remove: preempt and abort another key.
    • clear: remove reservation and keys.
    • check: check if started.
    • autostart: start if the VG autostart flag is set.

lvmlocal.conf pr_key or host_id must be configured to use PR. for local VGs, Write Exclusive (WE) is used, and for shared VGs Write Exclusive, all registrants (WEAR) is used. use --setpersist to automate and/or require PR.

  • -s, --physicalextentsize Size[m|UNIT] โ€” sets the physical extent size of PVs in the VG ๐Ÿ“ the value must be either a power of 2 of at least 1 sector (where the sector size is the largest sector size of the PVs currently used in the VG), or at least 128 KiB. once you've set this, it's genuinely difficult to change without recreating the VG, unless no extents need moving ๐Ÿ˜ฌ before increasing the physical extent size, you might need to use lvresize, pvresize and/or pvmove so everything fits. for example, every contiguous range of extents used in a LV must start and end on an extent boundary.
  • --poll y|n โ€” when yes, start the background transformation of an LV โš™๏ธ an incomplete transformation โ€” like pvmove or lvconvert interrupted by a reboot or crash โ€” can be restarted from the last checkpoint with --poll y. when no, background transformation of an LV won't occur, and the transformation won't complete. it might not be appropriate to immediately poll an LV after activation, in which case --poll n can be used to defer polling until a later --poll y command.
  • --profile String โ€” an alias for --commandprofile or --metadataprofile, depending on which command you're running ๐Ÿชž
  • --pvmetadatacopies 0|1|2 โ€” the number of metadata areas to set aside on a PV for storing VG metadata ๐Ÿ“š when 2, one copy of the VG metadata goes at the front of the PV and a second copy goes at the end. when 1, one copy of the VG metadata goes at the front of the PV. when 0, no copies of the VG metadata get stored on that PV. this can be handy in VGs with lots of PVs (but it places limitations on the ability to use vgsplit later ๐Ÿ‘€).
  • -q, --quiet ... โ€” suppresses output and log messages ๐Ÿคซ overrides --debug and --verbose. repeat once to also suppress any prompts with answer 'no'.
  • --readonly โ€” prevents the command from making changes, including activation and metadata updates ๐Ÿ”’ (see --permission r for read only LVs.)
  • --refresh โ€” if the LV is active, reload its metadata ๐Ÿ”„ in an environment where udev manages the /dev content, using this option is highly recommended โ€” because refresh also regenerates udev events for an LV based on which existing udev rules get applied to set the /dev content and permissions. also, this operation may be useful if something has gone wrong, or if some form of manual LV sharing is being used ๐Ÿ› ๏ธ
  • --removekey String โ€” a persistent reservation key to remove ๐Ÿ—๏ธ
  • --reportformat basic|json|json_std โ€” overrides the 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's more than one report per command, each report gets prefixed with the report name for identification. json produces report output in JSON format. json_std produces report output in JSON format that's more compliant with the JSON standard. lvmreport(7) for more.
  • -x, --resizeable y|n โ€” enables or disables the addition or removal of PVs to/from a VG (by vgextend/vgreduce) โ†”๏ธ
  • -S, --select String โ€” selects 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.
  • --setautoactivation y|n โ€” turns the autoactivation property on (y) or off (n) for a VG or an LV ๐Ÿ’…. Wanna see it? Peep it with vgs or lvs using -o autoactivation. When it's off, that VG or LV will not get activated by anything doing autoactivation โ€” that's vgchange, lvchange, or pvscan with -aay. And bestie, listen: if autoactivation is off on the VG, then literally no LVs get autoactivated in that VG, and your LV-level autoactivation property just sits there doing nothing, no cap. If it's on for the VG, then you can turn it off for individual LVs. Slay.
  • --setlockargs String โ€” add or remove lock_args settings for a shared VG. These control how the lock manager behaves for the VG, and ngl they're only allowed for lock_type sanlock. Here's the tea:
    • persist: use persistent reservations for lock recovery. lvmlockd will preempt-abort the persistent reservation of a failed lock owner so the lock can be acquired.
    • notimeout: use locks that don't time out when the owner fails. In this case, a lock owned by a failed host can only be acquired using the persist feature.
    • nopersist: do not use the persist feature.
    • timeout: do not use the notimeout feature.
    • nowatchdog: don't connect to wdmd/watchdog when starting the VG lockspace. Requires notimeout. Without timeout-based recovery, the watchdog is not needed.
    • watchdog: when starting a VG lockspace, sanlock/wdmd connect the lockspace to /dev/watchdog. If VG lockspace renewals fail (e.g. due to a storage outage, or a sanlock daemon failure), then the watchdog resets the host if locks are held in the VG.

The default behavior with no settings configured is: nopersist, timeout, watchdog. Periodt.

  • --setpersist String โ€” set or clear flags to control persistent reservation behavior ๐ŸŽ€:
    • y: set require and autostart flags.
    • n: clear require and autostart flags.
    • require: set flag, PR will be required to write or activate VG.
    • norequire: clear require flag.
    • autostart: set flag, PR will be automatically started.
    • noautostart: clear autostart flag.
    • ptpl: set flag, use persist through power loss on devices.
    • noptpl: clear ptpl flag.

When autostart is enabled, autoactivation and auto-lockstart commands will first start PR. lvmlocal.conf pr_key or host_id must be configured to use PR. For local VGs, enabling system_id is also recommended.

  • --sysinit โ€” this flag says "hey, vgchange/lvchange is being called from early system initialisation scripts" (think rc.sysinit or an initrd), before writable filesystems are even a thing. Because of that, some functionality has to be disabled, and this option is basically a shortcut that selects a sensible set of options for you. Currently it's equivalent to using --ignorelockingfailure, --ignoremonitoring, --poll n, and setting the env var LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES. Also vgchange/lvchange skip autoactivation and defer to pvscan autoactivation โœจ.
  • --systemid String โ€” changes the system ID of the VG. โš ๏ธ Use this option with caution, fr fr, because the VG may become foreign to the host running the command, leaving that host unable to access it. See lvmsystemid(7) for more info.
  • -t, --test โ€” run in test mode. Commands will not update metadata. This works by disabling all metadata writing but nevertheless returning success to the calling function. Heads up: 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. So likeโ€ฆ it's giving chaos in edge cases ๐Ÿ™ˆ.
  • -u, --uuid โ€” generate a new random UUID for the specified VGs.
  • -v, --verbose ... โ€” set verbose level. Repeat from 1 to 4 times to increase the detail of messages sent to stdout and stderr. The more you repeat it, the more it yaps ๐Ÿ‘‘
  • --version โ€” display version information.
  • --[vg]metadatacopies all|unmanaged|Number โ€” the number of copies of the VG metadata that are kept. VG metadata lives in VG metadata areas on PVs in the VG, i.e. reserved space at the start and/or end of the PVs. Keeping a copy of the VG metadata on every PV can reduce performance in VGs containing a large number of PVs. When this number is set to a non-zero value, LVM will automatically choose PVs on which to store metadata, using the metadataignore flags on PVs to achieve the specified number. The number can also be swapped out for special string values:
    • unmanaged โ€” causes LVM to not automatically manage the PV metadataignore flags.
    • all โ€” causes LVM to first clear the metadataignore flags on all PVs, and then to become unmanaged.
  • -y, --yes โ€” do not prompt for confirmation interactively but always assume the answer yes. Use with extreme caution. ๐Ÿ’€ (For automatic no, see -qq.)

๐ŸŒธ VARIABLES ๐ŸŒธ

  • 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.
  • Select โ€” Select indicates that a required positional parameter can be omitted if the --select option is used. No arg appears in this position.
  • 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. (โœจ important, bestie: this should not be confused with the output control --units, where capital letters mean multiple of 1000.)

๐ŸŒˆ ENVIRONMENT VARIABLES ๐ŸŒˆ

See lvm(8) for information about environment variables used by lvm. For example, LVM_VG_NAME can generally be substituted for a required VG parameter. Convenient, right? ๐Ÿซถ


๐Ÿ’œ NOTES ๐Ÿ’œ

If vgchange recognizes COW snapshot LVs that were dropped because they ran out of space, it displays a message informing the administrator that the snapshots should be removed. Not me being helpful ๐Ÿ˜ญ


โœจ EXAMPLES โœจ

Activate all LVs in all VGs on all existing devices.

vgchange -a y

Change the maximum number of LVs for an inactive VG.

vgchange -l 128 vg00

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

lvm(8), lvm.conf(5), lvmconfig(8), lvmdevices(8),

pvchange(8), pvck(8), pvcreate(8), pvdisplay(8), pvmove(8), pvremove(8), pvresize(8), pvs(8), pvscan(8),

vgcfgbackup(8), vgcfgrestore(8), vgchange(8), vgck(8), vgcreate(8), vgconvert(8), vgdisplay(8), vgexport(8), vgextend(8), vgimport(8), vgimportclone(8), vgimportdevices(8), vgmerge(8), vgmknodes(8), vgreduce(8), vgremove(8), vgrename(8), vgs(8), vgscan(8), vgsplit(8),

lvcreate(8), lvchange(8), lvconvert(8), lvdisplay(8), lvextend(8), lvreduce(8), lvremove(8), lvrename(8), lvresize(8), lvs(8), lvscan(8),

lvm-fullreport(8), lvm-lvpoll(8), blkdeactivate(8), lvmdump(8),

dmeventd(8), lvmpolld(8), lvmlockd(8), lvmlockctl(8), lvmdbusd(8), fsadm(8),

lvmsystemid(7), lvmreport(7), lvmcache(7), lvmraid(7), lvmthin(7), lvmvdo(7), lvmautoactivation(7)


Okay bestie, that's the whole page!! ๐Ÿ’– This icon of a manpage is brought to you by Red Hat, Inc., and it's from LVM TOOLS 2.03.44(2), dated 2026-10-27. Slay, go manage those volume groups ๐Ÿ‘‘โœจ

๐Ÿ“ฆ where this page comes from