LVM (Logical Volume Manager) adds flexibility between physical disks and filesystems. Resize volumes, add disks, and take snapshots without downtime.
LVM Architecture
Physical Disks: /dev/sda /dev/sdb /dev/sdc
↓ ↓ ↓
Physical Volumes: PV1 PV2 PV3
↓ ↓ ↓
Volume Group: ←─── vg_data ────────────→
↓ ↓
Logical Volumes: lv_app lv_db
↓ ↓
Filesystems: /opt/app /var/lib/postgresBasic Workflow
1. Create Physical Volumes
# Partition the disk (or use whole disk)
sudo pvcreate /dev/sdb
sudo pvcreate /dev/sdc
# Verify
sudo pvs
sudo pvdisplay2. Create Volume Group
sudo vgcreate vg_data /dev/sdb /dev/sdc
# Verify
sudo vgs
sudo vgdisplay vg_data3. Create Logical Volumes
# Fixed size
sudo lvcreate -L 50G -n lv_app vg_data
# Percentage of free space
sudo lvcreate -l 80%FREE -n lv_db vg_data
# All remaining space
sudo lvcreate -l 100%FREE -n lv_logs vg_data
# Verify
sudo lvs
sudo lvdisplay4. Create Filesystem and Mount
sudo mkfs.ext4 /dev/vg_data/lv_app
sudo mkfs.xfs /dev/vg_data/lv_db
sudo mkdir -p /opt/app /var/lib/postgres
sudo mount /dev/vg_data/lv_app /opt/app
sudo mount /dev/vg_data/lv_db /var/lib/postgres
# Persistent mount
echo '/dev/vg_data/lv_app /opt/app ext4 defaults 0 2' | sudo tee -a /etc/fstab
echo '/dev/vg_data/lv_db /var/lib/postgres xfs defaults 0 2' | sudo tee -a /etc/fstabMaster this topic with hands-on labs
Go beyond reading — build real projects in sandboxed environments with expert video guidance.
Browse Courses →Resizing
Extend Logical Volume
# Add 20GB
sudo lvextend -L +20G /dev/vg_data/lv_app
# Extend to specific size
sudo lvextend -L 100G /dev/vg_data/lv_app
# Use all free space
sudo lvextend -l +100%FREE /dev/vg_data/lv_app
# Resize filesystem to match
sudo resize2fs /dev/vg_data/lv_app # ext4
sudo xfs_growfs /opt/app # xfs (mounted path)
# Or do both at once
sudo lvextend -L +20G --resizefs /dev/vg_data/lv_appext4 can grow online (while mounted). xfs can only grow, never shrink.
Add a New Disk
# Add physical volume
sudo pvcreate /dev/sdd
# Extend volume group
sudo vgextend vg_data /dev/sdd
# Now extend logical volumes with the new space
sudo lvextend -l +100%FREE --resizefs /dev/vg_data/lv_appShrink (ext4 only)
# Must unmount first!
sudo umount /opt/app
# Check filesystem
sudo e2fsck -f /dev/vg_data/lv_app
# Shrink filesystem first
sudo resize2fs /dev/vg_data/lv_app 30G
# Then shrink LV
sudo lvreduce -L 30G /dev/vg_data/lv_app
# Remount
sudo mount /dev/vg_data/lv_app /opt/appSnapshots
Point-in-time copy for backups:
# Create snapshot (needs free space in VG)
sudo lvcreate -L 5G -s -n lv_app_snap /dev/vg_data/lv_app
# Mount snapshot (read-only)
sudo mkdir /mnt/snap
sudo mount -o ro /dev/vg_data/lv_app_snap /mnt/snap
# Backup from snapshot
tar czf /backup/app-$(date +%Y%m%d).tar.gz /mnt/snap/
# Remove snapshot
sudo umount /mnt/snap
sudo lvremove /dev/vg_data/lv_app_snapRestore from Snapshot
# Merge snapshot back (restores to snapshot point)
sudo umount /opt/app
sudo lvconvert --merge /dev/vg_data/lv_app_snap
sudo mount /dev/vg_data/lv_app /opt/appMonitoring
# Overview
sudo pvs && sudo vgs && sudo lvs
# Detailed info
sudo pvdisplay
sudo vgdisplay
sudo lvdisplay
# Free space
sudo vgs -o +vg_free
# Disk usage
df -h
# Physical extent map
sudo pvs -o +pv_usedGet weekly IT automation tips
Docker, Ansible, Terraform, MLOps — curated insights delivered to your inbox. No spam.
Subscribe Free →Standard Disk Management (Without LVM)
# List disks
lsblk
fdisk -l
# Partition
sudo fdisk /dev/sdb
# or
sudo parted /dev/sdb
# Format
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
# Mount
sudo mount /dev/sdb1 /mnt/data
# Check filesystem
sudo fsck /dev/sdb1 # ext4 (must be unmounted)
sudo xfs_repair /dev/sdb1 # xfs
# Disk health
sudo smartctl -a /dev/sdaTroubleshooting
| Issue | Command | Fix | |
|---|---|---|---|
| Disk full | df -h | Extend LV or clean up files | |
| Inode exhaustion | df -i | Delete small files or resize | |
| Slow disk I/O | iostat -x 1 | Check for high %util or await | |
| Bad blocks | smartctl -a /dev/sda | Replace disk | |
| Can't extend LV | vgs | Add new PV to VG | |
| Mount fails | `dmesg \ | tail` | Check filesystem or fstab |
What's Next?
Our SELinux for System Admins course covers Linux system administration fundamentals. Docker Fundamentals teaches container storage management. First lessons are free. -e ---
Ready to go deeper? Explore our hands-on DevOps courses — practical labs covering Docker, Ansible, Terraform, and more.
Ready to learn by doing?
Stop reading tutorials — start building. Expert video courses with hands-on labs in real sandboxed environments.
Related Articles
Linux Cron Jobs Complete Guide
Master Linux cron jobs for scheduling. Crontab syntax, common patterns, error handling, output logging, and systemd timer alternatives.
Linux Networking for DevOps
Linux networking for DevOps. IP configuration, DNS, firewall rules, routing tables, packet capture with tcpdump, and troubleshooting.
Linux Process Management Guide
Manage Linux processes. ps, top, kill signals, background jobs, nice priorities, systemd services, and zombie process cleanup.
Linux File Permissions Explained
Master Linux file permissions. chmod, chown, umask, SUID, SGID, sticky bit, and ACLs with practical examples for system security.
Linux for Old Hardware in 2026
Revive old laptops and desktops with lightweight Linux distributions. Lubuntu, antiX, Puppy Linux, and more — tested on low-spec hardware.
Linux Gaming with Proton in 2026
Linux gaming has never been better. Proton, Steam Deck, and native ports make Linux a viable gaming platform. Here's the current state.
Explore topics
Browse more articles on the topics covered here.