By default, most Linux Installers create separate /home partition, occupying most of the drive space.
When server is used mostly for system services, you may transfer free space from /home partition to /root.
Before adjustment we have 98% filled root partition and 141GB free space on /home, which we would like to use:
[root@oracle ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_oracle-lv_root 50G 1G 50G 98% / tmpfs 630M 0 630M 0% /dev/shm /dev/cciss/c0d0p1 477M 106M 346M 24% /boot /dev/mapper/vg_oracle-lv_home 149G 60M 141G 1% /home
1. First step is to unmount /home partition
umount /home
System may refuse to unmount /home if you have users logged on to the box or services running from /home. After logging off / stopping services command should succeed.
2. Shrink old /home partition to 20GB, (system will force you to check filesystem for errors by running e2fsck)
e2fsck -f /dev/mapper/vg_oracle-lv_home resize2fs /dev/mapper/vg_oracle-lv_home 20G
3. Reduce the LVM to 20G
lvreduce -L 20G /dev/mapper/vg_oracle-lv_home
4. Extend /root LVM to new size, utilizing 100% of free space on disk
lvextend -l +100%FREE /dev/mapper/vg_oracle-lv_root
5. Grow /root (ext3/4) partition to new LVM size
resize2fs /dev/mapper/vg_oracle-lv_root
6. Mount /home
mount /home
Result
[root@oracle ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_oracle-lv_root 178G 50G 128G 28% / tmpfs 630M 0 630M 0% /dev/shm /dev/cciss/c0d0p1 477M 106M 346M 24% /boot /dev/mapper/vg_oracle-lv_home 20G 45M 19G 1% /home
After these simple steps we have 72% of free disk space of root partition.
TL;DR
Resizing /home partition (/dev/mapper/vg_oracle-lv_home) to 20GB and transfering remaining space to /root (/dev/mapper/vg_oracle-lv_root):
umount /home e2fsck -f /dev/mapper/vg_oracle-lv_home resize2fs /dev/mapper/vg_oracle-lv_home 20G lvreduce -L 20G /dev/mapper/vg_oracle-lv_home lvextend -l +100%FREE /dev/mapper/vg_oracle-lv_root resize2fs /dev/mapper/vg_oracle-lv_root mount /home