PVREMOVE(8)

โœจ pvremove(8) โœจ โ€” the System Manager's Manual page, but make it cute

okay bestie, so this is pvremove(8) from the System Manager's Manual ๐Ÿ’… it's giving "breakup era, but for storage devices" and honestly? iconic.


๐ŸŒธ NAME ๐ŸŒธ

pvremove โ€” Remove LVM label(s) from physical volume(s)

like, it literally takes the LVM name tag off your device so LVM forgets it ever happened ๐Ÿ’”


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

pvremove position_args
       [ option_args ]

๐Ÿ’– DESCRIPTION ๐Ÿ’–

pvremove wipes the label on a device so that LVM will no longer recognise it as a PV. that's it, that's the whole vibe โ€” you're erasing the little "hi I'm a physical volume ๐Ÿฅฐ" tag so LVM walks right past it like a stranger. no cap.

A PV cannot be removed from a VG while it is used by an active LV. so if an active LV is still holding onto it, it's not going anywhere, periodt. it's giving situationship with consequences ๐Ÿ˜ญ

Repeat the force option (-ff) to forcibly remove a PV belonging to an existing VG. Normally, vgreduce(8) should be used instead. like, -ff is the nuclear option and vgreduce(8) is the responsible adult in the room. choose wisely bestie ๐Ÿซถ


๐Ÿฆ‹ USAGE ๐Ÿฆ‹

pvremove PV ...
       [ -f|--force ... ]
       [ --reportformat basic|json|json_std ]
       [ COMMON_OPTIONS ]

โ€”

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 ]

โœจ OPTIONS โœจ

  • --commandprofile String โ€” the command profile to use for command configuration. See lvm.conf(5) for more information about profiles. it's the lil preset you're running this command with ๐ŸŽ€
  • --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. inline config override, main character energy ๐Ÿ’…
  • -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 you can spam it, 1 through 6, that's the range ๐Ÿ”ฅ
  • --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. it's giving "you can't sit with us" to the unlisted devices ๐Ÿ™ˆ
  • --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. lowkey a lab-experiment mode ๐Ÿงช
  • -f, --force ... โ€” override various checks, confirmations and protections. Use with extreme caution. โš ๏ธ bestie. BESTIE. extreme caution. i cannot stress this enough ๐Ÿ’€
  • -h, --help โ€” display help text. the "wait what does this do again" button ๐Ÿซถ
  • --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. niche but slay ๐Ÿ”’
  • --longhelp โ€” display long help text. like --help but it doesn't gatekeep ๐Ÿ“–
  • --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. so it's slower but like, thorough ๐ŸŒˆ
  • --nolocking โ€” disable locking. Use with caution, concurrent commands may produce incorrect results. โš ๏ธ literally telling you it can produce wrong answers. be so serious rn ๐Ÿ˜ญ
  • --profile String โ€” an alias for --commandprofile or --metadataprofile, depending on the command. it shapeshifts based on who's asking ๐Ÿ’ซ
  • -q, --quiet ... โ€” suppress output and log messages. Overrides --debug and --verbose. Repeat once to also suppress any prompts with answer no. so -qq is auto-no, not silent-mode-squared, got it? ๐Ÿ‘‘
  • --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. pick your aesthetic ๐Ÿ’…
  • -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. so it says "yep did it โœจ" while doing absolutely nothing. fake it till you make it, except the errors are real ๐Ÿซ 
  • -v, --verbose ... โ€” set verbose level. Repeat from 1 to 4 times to increase the detail of messages sent to stdout and stderr. 1 to 4, that's the cap ๐Ÿ“ฃ
  • --version โ€” display version information. the "who even am i" flag ๐Ÿฆ‹
  • -y, --yes โ€” do not prompt for confirmation interactively but always assume the answer yes. Use with extreme caution. (For automatic no, see -qq.) โš ๏ธ saying yes to everything is a personality trait and also a terrible idea here ๐Ÿšจ

๐ŸŒˆ VARIABLES ๐ŸŒˆ

  • PV โ€” Physical Volume name, a device path under /dev. For commands managing physical extents, a PV positional arg generally accepts a suffix indicating a range (or multiple ranges) of physical extents (PEs). When the first PE is omitted, it defaults to the start of the device, and when the last PE is omitted it defaults to the end.

Start and end range (inclusive): PV[:PE-PE] ...

Start and length range (counting from 0): PV[:PE+PE] ...

  • String โ€” see the option description for information about the string content. yeah it's giving "read the room" (the room is the option description) ๐ŸŽ€
  • 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 base-two input no matter what, and yes the capital letters mean something different for --units. do not get these two confused, i'm begging ๐Ÿ™

๐Ÿ’œ 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 like, drop the env var and skip typing the VG name. efficiency queen ๐Ÿ‘‘


โญ 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 that's the whole page bestie, we ate and left no crumbs ๐Ÿ“ literally every flag accounted for, fr fr.

Red Hat, Inc. ๐Ÿ’– LVM TOOLS 2.03.44(2) ๐Ÿ’– (2026-10-27) โ€” that's who made it, what version you're running, and when this page went out. date check: passed ๐Ÿ“…โœจ stay hydrated, back up your data, and never -ff a VG you don't own ๐Ÿ’…๐Ÿซถ

๐Ÿ“ฆ where this page comes from