VGMERGE(8)

πŸ’– VGMERGE(8) β€” the merge-your-volume-groups glow-up πŸ’–

okay bestie, listen. this is page 8 of the System Manager's Manual, and today's main character is vgmerge. it merges volume groups. yes really, that's the whole gig. sit down, hydrate, let's go 🫢


✨ NAME ✨

vgmerge β€” merge volume groups. that's it. that's the name. iconic behavior honestly πŸ’…


🌸 SYNOPSIS 🌸

vgmerge position_args
       [ option_args ]

πŸ¦‹ DESCRIPTION πŸ¦‹

so like. vgmerge merges two existing VGs together, fr fr. the inactive source VG gets merged into the destination VG β€” but ONLY if two things line up, no cap:

  • the physical extent sizes</> are equal, and
  • the PV and LV totals of both VGs fit within the destination VG's limits.

both conditions or we're not doing it. vibe check failed, no merge, bye πŸ’€


πŸ‘‘ USAGE πŸ‘‘

vgmerge VG VG
       [ -A|--autobackup y|n ]
       [ -l|--list ]
       [ --poolmetadataspare y|n ]
       [ COMMON_OPTIONS ]

β€”

common options for lvm (the shared little besties that show up everywhere):

[ -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 πŸ’–

here comes the alphabet, bestie. every single one, we're not skipping any, that would be so not slay of me.

  • -A|--autobackup y|n β€” says whether metadata should get backed up automatically after a change. enabling this is STRONGLY advised, like please turn it on, i am begging πŸ™ see vgcfgbackup(8) for more info.
  • --commandprofile String β€” the command profile to use for command configuration. see lvm.conf(5) for the tea about profiles.
  • --config String β€” config settings for the command. these override whatever lvm.conf(5) set. the String arg uses the same format as lvm.conf(5), or it may use section/field syntax. see lvm.conf(5) for more info about config.
  • -d|--debug ... β€” set the debug level. repeat it 1 to 6 times to increase the detail of messages sent to the log file and/or syslog (if configured). more d's, more chaos ✨
  • --devices PV β€” restricts which devices are visible and accessible to the command. devices that aren't listed will appear to be missing. this option can be repeated, or it accepts a comma-separated list of devices. it overrides the devices file. sneaky but valid.
  • --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 you set it to no, the command won't even attempt to use device-mapper. for testing and debugging, iykyk πŸ§ͺ
  • -h|--help β€” display help text. your bestie when you're lost.
  • --journal String β€” record information in the systemd journal. this info is in addition to whatever the lvm.conf log/journal setting already enables. options are:
    • command: record information about the command.
    • output: record the default command output.
    • debug: record full command debugging.
  • -l|--list β€” display the merged destination VG, like vgdisplay -v does. cute little recap of what you just did πŸ’…
  • --lockopt String β€” used to pass options for special cases to lvmlockd. see lvmlockd(8) for more info.
  • --longhelp β€” display long help text. the extended cut 🍿
  • --nohints β€” do not use the hints file to locate devices for PVs. a command may read more devices to find PVs when hints aren't used. the command will still perform standard hint file invalidation where appropriate, so it's not feral, just extra.
  • --nolocking β€” disable locking. use with caution β€” concurrent commands may produce incorrect results. this is giving "i know what i'm doing" and sometimes that's a lie 😭
  • --poolmetadataspare y|n β€” enable or disable the automatic creation and management of a spare pool metadata LV in the VG. that spare metadata LV is reserved space you can use when repairing a pool. it's giving backup earrings, in case you lose one.
  • --profile String β€” an alias for --commandprofile or --metadataprofile, depending on the command.
  • -q|--quiet ... β€” suppress output and log messages. this overrides --debug and --verbose. repeat it once to also suppress any prompts with answer 'no'. so -qq is your automatic-no button 🚫
  • -t|--test β€” run in test mode. commands will not update metadata. this works by disabling all metadata writing but nonetheless 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. fake it till you make it, except nothing actually happened 🫠
  • -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. the "who am i" moment.
  • -y|--yes β€” do not prompt for confirmation interactively; always assume the answer is yes. use with extreme caution ⚠️ (for automatic no, see -qq.)

🌈 VARIABLES 🌈

  • VG β€” Volume Group name. see lvm(8) for valid names.
  • 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 that's a lot of letters but you got this πŸ“

🧚 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 β€” so you don't have to type it every single time, which is a gift honestly πŸŽ€


⭐ EXAMPLES ⭐

merge an inactive VG named "vg00" into the active or inactive VG named "databases", giving verbose runtime information:

vgmerge -v databases vg00

look at that. clean. ate. no crumbs πŸ”₯


πŸ’œ SEE ALSO πŸ’œ

the whole friend group, in order:

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)


that's the whole page bestie, you're officially vgmerge-literate πŸ’…βœ¨

this absolute banger of a manpage was brought to you by Red Hat, Inc., running on LVM TOOLS 2.03.44(2), dated (2026-10-27). go merge something (responsibly). mwah πŸ«ΆπŸ’–

πŸ“¦ where this page comes from