How to reduce LVM partition size in RHEL and OEL


If observe a particular file system is not used fully and a lot of free space is available then we can make some free space in the volume group by reducing the LVM using lvreduce command.

Example:  To reduce /oracle mount by 2GB which is on LVM partition & formated as ext4

[root@funebs122 ~]# df -h /oracle/
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg_funebs122-lvol1
                       12G   9.2G  1.9G  84%  /oracle
   

Steps:
   
   
1. Umount the file system

[root@funebs122 ~]# umount -v /oracle/


2. Check the file system for Errors using e2fsck command

[root@funebs122 ~]# e2fsck -f /dev/mapper/vg_funebs122-lvol1
 e2fsck 1.41.12 (17-May-2010)
 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/mapper/vg_funebs122-lvol1: 12/70640 files (0.0% non-contiguous), 446686/308428 blocks
Note: In the above command e2fsck , we use the option ‘-f’ to forcefully check the file system, even if the file system is clean.


3. Reduce or Shrink the size of /oracle to the desire size.

In my case size of /oracle is 12 GB , so by reducing it by 2GB , then the size will become 10GB.

[root@funebs122 ~]# resize2fs /dev/mapper/vg_funebs122-lvol1 10G
 resize2fs 1.41.12 (17-May-2010)
 Resizing the filesystem on /dev/mapper/vg_funebs122-lvol1 to 2621440 (4k) blocks.
 The filesystem on /dev/mapper/vg_funebs122-lvol1 is now 2621440 blocks long.
 
4. Reduce the size using lvreduce command

[root@funebs122 ~]# lvreduce -L 10G /dev/mapper/vg_funebs122-lvol1
 WARNING: Reducing active logical volume to 10.00 GiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
 Do you really want to reduce lvol1? [y/n]: y
 Reducing logical volume lvol1 to 10.00 GiB
 Logical volume lvol1 successfully resized

5. Now check the reduced file system for errors (Optional)

[root@funebs122 ~]# e2fsck -f /dev/mapper/vg_funebs122-lvol1
 e2fsck 1.41.12 (17-May-2010)
 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/mapper/vg_funebs122-lvol1: 12/70640 files (0.0% non-contiguous), 446686/308428 blocks
 
6. Mount the file system and verify its size.

[root@funebs122 ~]# mount /oracle/
 [root@funebs122 ~]# df -h /oracle/
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg_funebs122-lvol1
                       9.9G  9.2G  208M  98% /oracle



Note for XFS file system: 

While the XFS file systems can be grown while mounted, their size cannot be reduced. 

Workarounds may be done:
Use some backup/restore solution, such as xfsdump and xfsrestore. This may be useful especially if the filesystem is mostly empty.

Use the xfs_quota command to implement project (directory tree) quotas. Project quotas implement space limitations for all files within a directory subtree, similar to behavior under a new filesystem mount point.





If you like please follow and comment