How to Reduce a Logical Volume in GNU/Linux Using LVM
Logical Volume Management is a vast improvement over standard
partitioning schemes. Among many other things, it allows you to decrease the
size of a volume without recreating it completely.
All of the required steps must be performed on an unmounted
volume. If want to reduce the size of a non-root volume, simply unmount it. For
a root volume, you’ll have to boot from a CD. Any modern live or rescue CD
should work fine
In this
article I will explain how to reduce the Logical Volume in Red Hat Linux system
without loss of data.
STEPS:-
1.
Un mount the logical volume:
umount /mnt/logical_volume1
Ex-
[root@server01 ~]# df -h
Filesystem
Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G
26G 22G 55% /
tmpfs 7.8G
0 7.8G 0% /dev/shm
/dev/sda1 485M
32M 429M 7% /boot
/dev/mapper/VolGroup-lv_home 491G
55G 412G 12% /home
[root@server01 ~]# umount /home
If this file system is in use, Use the
following commands to unmount partition forcefully.
[root@server01 ~]# fuser –km /home
[root@server01 ~]# umount –f /home
2. Make a backup of logical Volume.
Steps:
- Check the size
of the logical volume (LV Size):
lvdisplay /dev/volume_group1/logical_volume1
Ex-
Ex-
--- Logical volume ---
LV Name /dev/mapper/VolGroup-lv_home
VG Name VolGroup
LV UUID AxihqP-Yt8l-5scY-bXNG-Bn5D-K3ms-X7v1Ys
LV Write Access read/write
LV Status available
# open 1
LV Size 200,00 GB
Current LE 6400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
LV Name /dev/mapper/VolGroup-lv_home
VG Name VolGroup
LV UUID AxihqP-Yt8l-5scY-bXNG-Bn5D-K3ms-X7v1Ys
LV Write Access read/write
LV Status available
# open 1
LV Size 200,00 GB
Current LE 6400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
Usually, snapshots are smaller than the original logical volume, but I recommend to use at least the same space.
- Create the
snapshot:
lvcreate -L200G -s -n backup_logical_volume1
/dev/volume_group1/logical_volume1
The -s param tells lvcreate to create a snapshot instead of a normal logical volume.
Ex-
lvcreate -L200G -s -n backup_logical_volume /dev/mapper/VolGroup-lv_home
3. Check the file system integrity:
fsck -f -y -v
/dev/volume_group1/logical_volume1
Ex-
[root@server01 ~]# fsck
-f -y -v /dev/mapper/VolGroup-lv_home
fsck from util-linux-ng 2.17.2
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
2634206 inodes used
(8.06%)
62765
non-contiguous files (2.4%)
7
non-contiguous directories (0.0%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth
histogram: 2634192/4
16246730 blocks used (12.43%)
0 bad blocks
3 large files
2589225 regular
files
44972 directories
0 character
device files
0 block device
files
0 fifos
0 links
0 symbolic
links (0 fast symbolic links)
0 sockets
--------
2634197 files
4. Resize
the file system to something smaller than the final size (around 190GB in this
case):
resize2fs
/dev/volume_group1/logical_volume1 190G
This Step takes a long time to resize the volume.
Ex-
[root@server01 ~]# resize2fs /dev/mapper/VolGroup-lv_home
190G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/VolGroup-lv_home to
49807360 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_home is now
49807360 blocks long.
5. Check
the filesystem integrity again:
fsck -f -y -v
/dev/volume_group1/logical_volume1
Ex-
fsck -f -y –v
/dev/mapper/VolGroup-lv_home
6. Reduce
the logical volume:
lvreduce -L 85G
/dev/volume_group1/logical_volume1
Ex-
[root@server01 ~]# lvreduce -L 195G
/dev/mapper/VolGroup-lv_home
WARNING: Reducing
active logical volume to 195.00 GiB
THIS MAY DESTROY
YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
Reducing logical volume
lv_home to 195.00 GiB
Logical volume
lv_home successfully resized
7. Resize
the filesystem to fit the logical volume:
resize2fs
/dev/volume_group1/logical_volume1
Ex-
[root@server01 ~]# resize2fs /dev/mapper/VolGroup-lv_home
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/VolGroup-lv_home to
51118080 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_home is now
51118080 blocks long.
8.
Check the filesystem to know whether the
reduction went fine:
fsck -f -y -v
/dev/volume_group1/logical_volume1
Ex-
fsck -f -y –v
/dev/mapper/VolGroup-lv_home
9.
Check
the size of Logical Volume.
[root@server01
~]# lvs
LV VG Attr
LSize Pool Origin Data% Move Log Copy% Convert
lv_home VolGroup -wi-a--- 195.00g
lv_root VolGroup -wi-ao-- 50.00g
lv_swap VolGroup -wi-ao-- 7.84g
10.
Mount the logical volume:
mount /mnt/logical_volume1
Ex-
mount /dev/mapper/VolGroup-lv_home /home
NOTE: if you aren’t careful with the disk space you
are using and the final disk space you are going to be using, this operation
can cause data loss. I recommend to backup the logical volume before the
reduction and to use around 5GB of “safe space” while reducing the filesystem
in order to avoid data loss.