Shrink LVM/ext4 partion
25 Sep 2012

Shrink the LVM logical volume that is mounted on /var inside a KVM quest, using ext4 filesystem.

Login to the host to get the vnc id.

[[email protected] ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 40    ntp-sc                         running

[[email protected] ~]# virsh vncdisplay 40
:11

Connect VNC to the guest.

MacBook-Pro:~ arlukin$ ssh [email protected] -L 5900:localhost:5911

Use your vncclient to connect to localhost:5900

Reboot the guest.

reboot

At the GRUB splash screen at boot time, press any key to enter the GRUB interactive menu.

Select the configuration you like to boot and type a to append the line.

Go to the end of the line and type single as a separate word. Press Enter to exit edit mode.

Wait for server to boot and login.

If you for example like to shrink the /var partion, first unmount the partion and all it's 'subpartions'. To do so, first list all partions.

    [[email protected] ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-root
                          4.0G  1.3G  2.6G  33% /
    tmpfs                 4.9G     0  4.9G   0% /dev/shm
    /dev/vda1              97M   27M   66M  29% /boot
    /dev/mapper/VolGroup00-home
                         1008M   34M  924M   4% /home
    /dev/mapper/VolGroup00-tmp
                         1008M   34M  924M   4% /tmp
    /dev/mapper/VolGroup00-var
                           94G   39G   50G  44% /var
    /dev/mapper/VolGroup00-varlog
                          4.0G  138M  3.7G   4% /var/log
    /dev/mapper/VolGroup00-vartmp
                         1008M   34M  924M   4% /var/tmp

Then unmount them

[[email protected] ~]# /var/log
[[email protected] ~]# /var/tmp
[[email protected] ~]# /var

Before you can shrink the partion, it must be check for errors.

e2fsck -f /dev/mapper/VolGroup00-var

Shrink ext4 and then the LV to the desired size

resize2fs -p /dev/mapper/VolGroup00-var 40G
lvreduce -L 40G /dev/mapper/VolGroup00-var

Before continuing, run e2fsck. If it bails because the partition is too small, don't panic! The LV can still be extended with lvextend until e2fsck succeeds, e.g.: lvextend -L +1G /dev/mapper/VolGroup00-var

e2fsck -f /dev/mapper/VolGroup00-var

Resize the filesystem to match the LVs size.

resize2fs -p /dev/mapper/VolGroup00-var

Check if the resize did go without any errors.

e2fsck -f /dev/mapper/VolGroup00-var

Reboot the machine

reboot