My root partition had unused space while /home was starving. I needed to resize both without data loss. I’d foreseen this and created my Linux partitions using LVM while installing Arch 😇 .

Since operations here involve resizing /, boot from Live USB and then perform them. Also make sure the USB is UEFI bootable; otherwise it’d mean changing BIOS settings to enable Legacy Boot. This may lead to GRUB’s disappearance from boot menu.

Shrink /

# Pick-up LVM volumes
sudo vgchange -a y

# verify volume groups
sudo vgs

# check file system
sudo e2fsck -fy /dev/lvmg1/root

# verify logical volumes
sudo lvdisplay

# Resize file system to size smaller than volume size
sudo resize2fs /dev/lvmg1/root 29G

# Resize logical volume to desired size
sudo lvreduce -L 30G /dev/lvmg1/root

# Refill file system to volume size
sudo resize2fs /dev/lvmg1/root

# Verify shrunk size in logical volumes
sudo lvdisplay

# Verify if free space shows up in volume group
sudo vgdisplay

Expand /home

# Expand logical volume to all of free space
sudo lvextend -l +100%FREE /dev/lvmg1/home

# Verify grown size in logical volumes
sudo lvdisplay

# Check file system
sudo e2fsck -fy /dev/lvmg1/home

# Grow file system to fill up volume
sudo resize2fs /dev/lvmg1/home

Overall LVM resizing experience: smooth!

References

  1. Decrease an LVM Partition
  2. Increase an LVM Partition