LVM Explained: Logical Volume Management for Linux Admins
Why LVM Exists
Traditional partitions are fixed in size. LVM adds an abstraction layer: pool physical disks into a volume group, carve it into logical volumes, resize them online — no data migration required.
Physical Volumes (PVs) → /dev/sdb, /dev/sdc
↓
Volume Group (VG) → vg_data (combined pool)
↓
Logical Volumes (LVs) → lv_app, lv_logs, lv_backup
↓
File Systems → ext4 / xfs mounted at /app, /var/log, /backup
---
Creating an LVM Setup
# 1. Initialize physical volumes
pvcreate /dev/sdb /dev/sdc
# 2. Create a volume group
vgcreate vg_data /dev/sdb /dev/sdc
# 3. Create logical volumes
lvcreate -L 20G -n lv_app vg_data
lvcreate -L 30G -n lv_logs vg_data
lvcreate -l 100%FREE -n lv_backup vg_data
# 4. Create file systems and mount
mkfs.ext4 /dev/vg_data/lv_app
mount /dev/vg_data/lv_app /app
echo '/dev/vg_data/lv_app /app ext4 defaults 0 2' >> /etc/fstab
---
Extending a Logical Volume
# Check available space
vgdisplay vg_data | grep "Free"
# Extend LV + resize filesystem in one step (ext4)
lvextend -L +10G -r /dev/vg_data/lv_app
# For XFS (must resize separately)
lvextend -L +10G /dev/vg_data/lv_app
xfs_growfs /app
---
Adding a New Disk
pvcreate /dev/sdd
vgextend vg_data /dev/sdd
---
Shrinking (ext4 only — XFS cannot shrink)
umount /app
e2fsck -f /dev/vg_data/lv_app
resize2fs /dev/vg_data/lv_app 15G # shrink filesystem FIRST
lvreduce -L 15G /dev/vg_data/lv_app # then reduce LV
mount /dev/vg_data/lv_app /app
---
Snapshots
lvcreate -L 5G -s -n lv_app_snap /dev/vg_data/lv_app
mount -o ro /dev/vg_data/lv_app_snap /mnt/snapshot
tar -czf /backup/app.tar.gz /mnt/snapshot
umount /mnt/snapshot && lvremove /dev/vg_data/lv_app_snap
---
Quick Reference
pvs / vgs / lvs # compact listing
pvdisplay / vgdisplay / lvdisplay # detailed info
Practice in the ShellGenius Linux Labs — disk management challenges cover real partition and LVM scenarios used in RHCSA exams.