LVREDUCE(8)
π lvreduce(8) π
System Manager's Manual Β· lvreduce Β· System Manager's Manual Β· LVREDUCE(8)
okay bestie, welcome to the page about shrinking your logical volumes β and yes, it's as dramatic as it sounds. π
π NAME π
lvreduce β Reduce the size of a logical volume π¦
β¨ SYNOPSIS β¨
lvreduce option_args position_args
[ option_args ]
πΈ DESCRIPTION πΈ
lvreduce makes an LV smaller. The logical extents you free up get handed right back to the VG so your other LVs can use them. π You can also shrink a copy-on-write snapshot LV this way, if it turns out the snack doesn't need as much space to hold COW blocks. And if you're trying to change how many data images a RAID or mirrored LV has? That's not this tool, bestie β go use lvconvert(8) for that. π§
π¨ BE CAREFUL when you reduce an LV's size, because data in the reduced area is lost. Periodt. π Make absolutely sure that any file system on the LV is resized before you run lvreduce, so the extents getting removed are not in use by the file system.
Sizes get rounded if they need to be, no cap. For example, the LV size has to be an exact number of extents, and the size of a striped segment has to be a multiple of the number of stripes. The math said what it said. π
Quick heads up for the usage section down below: --size Size can be swapped out for --extents Number. Both descriptions live in the options section, so peek at both. π
π₯ USAGE π₯
lvreduce -L|--size [-]Size[m|UNIT] LV
[ -l|--extents [-]Number[PERCENT] ]
[ -A|--autobackup y|n ]
[ -f|--force ... ]
[ -n|--nofsck ]
[ -r|--resizefs ]
[ --fs String ]
[ --fsmode String ]
[ --noudevsync ]
[ --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 π
-A|--autobackup y|nβ Says whether your metadata should get backed up automatically after a change. Turning this on is strongly advised! π«Ά If you want the whole story, seevgcfgbackup(8).--commandprofile Stringβ The command profile to use for command configuration.lvm.conf(5)has all the tea about profiles. β--config Stringβ Config settings just for this command. These override thelvm.conf(5)settings. The String arg uses the same format aslvm.conf(5), or it can usesection/fieldsyntax. Again,lvm.conf(5)is where the config lore lives. π-d|--debug ...β Sets the debug level. Repeat it 1 to 6 times to crank up how detailed the messages sent to the log file and/or syslog (if it's configured) get. π--devices PVβ Restricts which devices are visible and accessible to the command. Devices you don't list will look like they're just... missing. π This option can be repeated, or it accepts a comma-separated list of devices. It overrides the devices file.--devicesfile Stringβ A file listing the devices LVM should use. The file 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 tono, the command won't even try to use device-mapper. It's for testing and debugging, bestie. π§ͺ-l|--extents [-]Number[PERCENT]β Specifies the new size of the LV in logical extents. The--sizeand--extentsoptions are alternate methods of specifying size β pick your fighter. The total number of physical extents used will be greater when redundant data is needed for RAID levels.
There's also an alternate syntax that lets the size be figured out indirectly, as a percentage of the size of a related VG, LV, or set of PVs:
- the suffix
%VGmeans the total size of the VG - the suffix
%FREEmeans the remaining free space in the VG - the suffix
%PVSmeans the free space in the specified PVs - for a snapshot, the size can be expressed as a percentage of the total size of the origin LV with the suffix
%ORIGIN(100%ORIGINprovides space for the whole origin) π
When it's expressed as a percentage, the size defines an upper limit for the number of logical extents in the new LV. The precise number of logical extents in the new LV isn't determined until the command has finished β so don't @ it before it's done. β³ And when the plus + or minus - prefix is used, the value is not an absolute size, it's relative: it gets added to or subtracted from the current size.
-f|--force ...β Overrides various checks, confirmations and protections. Use with extreme caution. β οΈ Like, for real.--fs Stringβ Controls file system resizing when resizing an LV. Your options:checksize: Check the fs size and reduce the LV if the fs is not using the reduced space (fs reduce is not needed). If the reduced space is used by the fs, then do not resize the fs or the LV, and return an error. (checksize only applies when reducing, and does nothing for extend.)resize: Resize the fs by calling the fs-specific resize command. This may also include mounting, unmounting, or running fsck. See--fsmodeto control mounting behavior, and--nofsckto disable fsck.resize_fsadm: Use the old method of calling fsadm to handle the fs (deprecated.) π« Warning: this option does not preventlvreducefrom destroying file systems that are unmounted (or mounted if prompts are skipped.)ignore: Resize the LV without checking for or handling a file system. Warning: usingignorewhen reducing the LV size may destroy the file system. π
π Note: If you're resizing an LV without a file system and the new LV size matches the existing size, the command returns a non-zero status code (failure). But if a file system resize is also requested along with the LV resize, and the sizes already match, the command returns a zero status code (success). This happens because the external commands called to resize the file system return success even if the new and old file system sizes are identical. LVM follows the command status code behavior in this scenario. π€·βοΈ
--fsmode Stringβ Controls file system mounting behavior for fs resize. The vibes:manage: Mount or unmount the fs as needed to resize the fs, and attempt to restore the original mount state at the end. πnochange: Do not mount or unmount the fs. If mounting or unmounting is required to resize the fs, then do not resize the fs or the LV and fail the command.offline: Unmount the fs if it's mounted, and resize the fs while it's unmounted. If mounting is required to resize the fs, then do not resize the fs or the LV and fail the command.
-h|--helpβ Display help text. π--journal Stringβ Records information in the systemd journal. This info is in addition to whatever thelvm.conflog/journalsetting already enables:command: record information about the commandoutput: record the default command outputdebug: record full command debugging
--lockopt Stringβ Used to pass options for special cases tolvmlockd. Seelvmlockd(8)for more information. π--longhelpβ Display long help text. The deluxe version, bestie. π-n|--nofsckβ Do not perform fsck when resizing the file system with--resizefs. β--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. β¨--nolockingβ Disables locking. Use with caution β concurrent commands may produce incorrect results. π΅--noudevsyncβ Disables udev synchronization. The process won't wait for notification from udev, and it'll just keep going no matter what udev is doing in the background. Only use this if udev isn't running, or if it has rules that ignore the devices LVM creates. π--profile Stringβ An alias for--commandprofileor--metadataprofile, depending on the command. π«-q|--quiet ...β Suppresses output and log messages. Overrides--debugand--verbose. Repeat it once to also suppress any prompts with answer'no'. π€«--reportformat basic|json|json_stdβ Overrides the current output format for reports, which is normally 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 is prefixed with the report name for identification.jsonproduces report output in JSON format.json_stdproduces report output in JSON format which is more compliant with the JSON standard.
See lvmreport(7) for more information. π
-r|--resizefsβ Resize the fs using the fs-specific resize command (See:resize2fs(8),xfs_growfs(8),btrfs(8).) May include mounting, unmounting, or running fsck. See--fsmodeto control mounting behavior, and--nofsckto disable fsck. See--fsfor more options (--resizefsis equivalent to--fs resize.) π§-L|--size [-]Size[m|UNIT]β Specifies the new size of the LV. The--sizeand--extentsoptions are alternate methods of specifying size. The total number of physical extents used will be greater when redundant data is needed for RAID levels. When the plus+or minus-prefix is used, the value is not an absolute size β it's relative, and gets added to or subtracted from the current size. π-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. π§-v|--verbose ...β Sets the verbose level. Repeat it 1 to 4 times to increase the detail of messages sent to stdout and stderr. π--versionβ Display version information. π·οΈ-y|--yesβ Do not prompt for confirmation interactively but always assume the answer is yes. Use with extreme caution. (For automatic no, see-qq.) π
okay that's the top half of this page handled β there is absolutely more where that came from, so don't go anywhere, bestie π
π« VARIABLES π«
π·οΈ LV
Logical Volume name, bestie. Peep lvm(8) for what counts as a valid name. And ngl, an LV positional arg generally includes the VG name and the LV name together, like VG/LV β they're a package deal, you don't split them up. π«Ά
π€ String
It's giving "read the option description." Fr fr, the string content deets live in the description of whichever option you're using it with β go look there. β¨
π Size[UNIT]
Okay so Size is an input number, and it can optionally carry a unit with it. And here's the thing β input units are always treated as base two values, no matter how you capitalize them. Like k and K? Both of them mean 1024. The case does not matter AT ALL here. π
The default input unit gets specified as a letter, followed by |UNIT. And UNIT is where all the other possible input units live:
b|Bβ bytess|Sβ sectors of 512 bytesk|Kβ KiBm|Mβ MiBg|Gβ GiBt|Tβ TiBp|Pβ PiBe|Eβ EiB
β οΈ Do not confuse this with the output control --units, bestie β for that one, capital letters mean a multiple of 1000. Different vibe, different math, don't mix them up or you'll be sad. π
π± ENVIRONMENT VARIABLES π±
Head over to lvm(8) for the whole rundown on the environment variables lvm plays with, bestie. But for a lil taste: LVM_VG_NAME can generally be swapped in for a required VG parameter. Slay, honestly β no cap. π
π EXAMPLES π
Wanna shrink an LV by 3 logical extents? Say less:
lvreduce -l -3 vg00/lvol1
Periodt. That's the whole thing. π
π SEE ALSO π
The whole friend group, in formation. π
The OGs and the config crew:
PV gang:
pvchange(8),pvck(8),pvcreate(8),pvdisplay(8),pvmove(8),pvremove(8),pvresize(8),pvs(8),pvscan(8)
VG gang:
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)
LV gang:
lvcreate(8),lvchange(8),lvconvert(8),lvdisplay(8),lvextend(8),lvreduce(8),lvremove(8),lvrename(8),lvresize(8),lvs(8),lvscan(8)
Reporting + utility icon behavior:
Daemons and friends:
The deep lore (section 7, iykyk):
And that's a wrap, babe! π¦ This whole thing was brought to you by Red Hat, Inc., running LVM TOOLS 2.03.44(2) with a date stamp of 2026-10-27, and it's the LVREDUCE(8) page front to back. Go forth and reduce your LVs responsibly, bestie β measure twice, lvreduce once. πβ¨πΈ
π¦ 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