LVM: Reduce an existing Logical Volume / Filesystem

LVM: Reduce an existing Logical Volume / Filesystem

# Tested on RHEL 5, 6 & 7

# *** It is not possible to reduce an xfs filesystem so this recipe is valid only for
#     ext2/ext3/ext4 filesystems.

# *** As of February 2016, new implementation of LVM didn't permit reducing a RAID volume:
#     "Unable to reduce RAID LV - operation not implemented."

# Just in case, I recommended to backup up all important data before reducing
a F.S.

SIZE=128M               # Final size, in Mbytes. Without "M" to specify size in Bytes.

VG=`mount | awk '{if ( $3 == "'$MNTPT'" ) print$1}' | cut -f4 -d'/' | cut -f1 -d '-'`
LV=`mount | awk '{if ( $3 == "'$MNTPT'" ) print$1}' | cut -f4 -d'/' | cut -f2 -d '-'`

df -h $MNTPT
   Filesystem            Size  Used Avail Use% Mounted on
                         788M   17M  731M   3% /testmntpt

lvs | grep $LV
   testlv   testvg mwi-aom-- 800.00m                     testlv_mlog   100.00

umount $MNTPT

# First, we check the file system. 'e2fsck' is used to check the ext2/ext3/ext4 family of
# file systems. '-f' option force checking even if the file system seems clean. This step
# is mandatory.

e2fsck -f /dev/$VG/$LV
   e2fsck 1.39 (29-May-2006)
   Pass 1: Checking inodes, blocks, and sizes
   Pass 2: Checking directory structure
   Pass 3: Checking directory connectivity
   Pass 4: Checking reference counts
   Pass 5: Checking group summary information
   /dev/testvg/testlv: 11/102592 files (9.1% non-contiguous), 7532/204800 blocks

# Then, we reduce the size of the filesystem

resize2fs -p /dev/$VG/$LV $SIZE
   resize2fs 1.39 (29-May-2006)
   Resizing the filesystem on /dev/testvg/testlv to 32768 (4k) blocks.
   Begin pass 3 (max = 7)
   The filesystem on /dev/testvg/testlv is now 32768 blocks long.

# And finally, we reduce the size of the logical volume

lvreduce -L $SIZE /dev/$VG/$LV
     WARNING: Reducing active logical volume to 128.00 MB
     THIS MAY DESTROY YOUR DATA (filesystem etc.)
   Do you really want to reduce testlv? [y/n]: y
     Reducing logical volume testlv to 128.00 MB
     Logical volume testlv successfully resized

lvs | grep $LV
  testlv   testvg mwi-ao 128.00M
                     testlv_mlog   100.00

mount  /dev/$VG/$LV  $MNTPT

df -h $MNTPT
Filesystem            Size  Used Avail Use% Mounted on
                      127M   17M  104M  14% /testmntpt
0 (0)
Article Rating (No Votes)
Rate this article
There are no attachments for this article.
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
YUM CRON Enabling automatic updates in Centos 7 and RHEL 7
Viewed 11274 times since Fri, Oct 26, 2018
Red Hat 8 How to Set Up Automatic Updates for CentOS 8
Viewed 2587 times since Fri, Sep 25, 2020
Configuring VLAN interfaces in Linux
Viewed 4390 times since Mon, May 21, 2018
How to enable Proxy Settings for Yum Command on RHEL / CentOS Servers
Viewed 10634 times since Thu, Jul 19, 2018
RHEL: Rebuilding the initial ramdisk image
Viewed 5321 times since Sat, Jun 2, 2018
ZPOOL: Add a mirror to a concat zpool
Viewed 2713 times since Sun, Jun 3, 2018
RHEL: Extending the maximum inode count on a ext2/ext3/ext4 filesystem
Viewed 2313 times since Sun, May 27, 2018
RHEL: Allowing users to ’su’ to "root" / Allowing ’root’ to login directly to the system using ’ssh’
Viewed 2018 times since Sat, Jun 2, 2018
8 Vim Tips And Tricks That Will Make You A Pro User
Viewed 2332 times since Fri, Apr 19, 2019
20 Linux YUM (Yellowdog Updater, Modified) Commands for Package Management YUM
Viewed 10361 times since Thu, Oct 25, 2018