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. ๐ซ
ymakes LVs active, or available.nmakes LVs inactive, or unavailable.ayspecifies 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, butnormaldoes not use them,anywherewill 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.
--autoactivationString โ 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 usepvs_onlinefiles 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 ๐ peepvgcfgbackup(8)for the tea.--commandprofileString โ the command profile to use for your command configuration ๐lvm.conf(5)has all the deets on profiles.--configString โ config settings for the command, and they override whateverlvm.conf(5)says ๐ค the String arg uses the exact same format aslvm.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.--deltagTag โ 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.--devicesPV โ 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.--devicesfileString โ a file listing the devices LVM should use ๐ it has to exist in/etc/lvm/devices/and it's managed with thelvmdevices(8)command. this overrides thelvm.conf(5)devices/devicesfileanddevices/use_devicesfilesettings.--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--monitoris specified ๐ and do not use this if dmeventd is already monitoring a device, that's messy.--journalString โ records info in the systemd journal ๐ this is in addition to whatever thelvm.conflog/journalsetting enables.command: records info about the command.output: records the default command output.debug: records the full command debugging.--lockoptString โ used to pass options for special cases over tolvmlockd๐lvmlockd(8)has more.--lockstartโ starts the lockspace of a shared VG inlvmlockd๐ lvmlockd locks become available for the VG, letting LVM actually use it.lvmlockd(8)for more.--lockstopโ stops the lockspace of a shared VG inlvmlockd๐ 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 withlvmlockd๐lvmlockd(8)has the details.-l,--logicalvolumeNumber โ 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,--maxphysicalvolumesNumber โ sets the max number of PVs that can belong to the VG ๐งฎ the value0removes any limitation. for large numbers of PVs, also peek at the options--pvmetadatacopies, and--vgmetadatacopiesto improve performance.--metadataprofileString โ 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 themissing_stripe_fillersetting. heads up: metadata may not be changed with this option.--persistString โ 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,--physicalextentsizeSize[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 uselvresize,pvresizeand/orpvmoveso everything fits. for example, every contiguous range of extents used in a LV must start and end on an extent boundary.--poll y|nโ whenyes, 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. whenno, 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 ncan be used to defer polling until a later--poll ycommand.--profileString โ an alias for--commandprofileor--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 ๐ when2, one copy of the VG metadata goes at the front of the PV and a second copy goes at the end. when1, one copy of the VG metadata goes at the front of the PV. when0, 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--debugand--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 rfor read only LVs.)--refreshโ if the LV is active, reload its metadata ๐ in an environment where udev manages the/devcontent, 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/devcontent and permissions. also, this operation may be useful if something has gone wrong, or if some form of manual LV sharing is being used ๐ ๏ธ--removekeyString โ a persistent reservation key to remove ๐๏ธ--reportformat basic|json|json_stdโ overrides the current output format for reports, which is defined globally by thereport/output_formatsetting inlvm.conf(5)๐basicis 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.jsonproduces report output in JSON format.json_stdproduces 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,--selectString โ selects objects for processing and reporting based on specified criteria ๐ฏ the criteria syntax is described by--select helpandlvmreport(7). for reporting commands, one row is displayed for each object matching the criteria. see--options helpfor selectable object fields. rows can be displayed with an additional "selected" field (-o selected) showing1if the row matches the selection and0otherwise. 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 withvgsorlvsusing-o autoactivation. When it's off, that VG or LV will not get activated by anything doing autoactivation โ that'svgchange,lvchange, orpvscanwith-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 removelock_argssettings for a shared VG. These control how the lock manager behaves for the VG, and ngl they're only allowed forlock_type sanlock. Here's the tea:persist: use persistent reservations for lock recovery.lvmlockdwill 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 thepersistfeature.nopersist: do not use thepersistfeature.timeout: do not use thenotimeoutfeature.nowatchdog: don't connect towdmd/watchdog when starting the VG lockspace. Requiresnotimeout. Without timeout-based recovery, the watchdog is not needed.watchdog: when starting a VG lockspace,sanlock/wdmdconnect 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: setrequireandautostartflags.n: clearrequireandautostartflags.require: set flag, PR will be required to write or activate VG.norequire: clearrequireflag.autostart: set flag, PR will be automatically started.noautostart: clearautostartflag.ptpl: set flag, use persist through power loss on devices.noptpl: clearptplflag.
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/lvchangeis being called from early system initialisation scripts" (thinkrc.sysinitor 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 varLVM_SUPPRESS_LOCKING_FAILURE_MESSAGES. Alsovgchange/lvchangeskip autoactivation and defer topvscanautoactivation โจ.--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. Seelvmsystemid(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 themetadataignoreflags 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 PVmetadataignoreflags.allโ causes LVM to first clear themetadataignoreflags on all PVs, and then to becomeunmanaged.
-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
--selectoption is used.No argappears 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 to1024. The default input unit is specified by letter, followed by|UNIT.UNITrepresents other possible input units:b|Bis bytes,s|Sis sectors of512bytes,k|Kis KiB,m|Mis MiB,g|Gis GiB,t|Tis TiB,p|Pis PiB,e|Eis EiB. (โจ important, bestie: this should not be confused with the output control--units, where capital letters mean multiple of1000.)
๐ 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
- arch rolling: lvm2 2.03.44-1 ยท GPL-2.0-only AND LGPL-2.1-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms