Post

Ultimate LVM Cheat Sheet for Linux Sysadmins

Ultimate LVM Cheat Sheet for Linux Sysadmins

Ultimate LVM Cheat Sheet for Linux Sysadmins

A complete reference for managing LVM on Linux systems. Covers creation, management, snapshots, thin provisioning, monitoring, troubleshooting, and best practices.


🔹 LVM Concepts

  • PV (Physical Volume) – Physical disk or partition used by LVM.
  • VG (Volume Group) – Pool of storage made from PVs.
  • LV (Logical Volume) – Virtual disk created from VG.
  • PE / LE (Physical / Logical Extents) – Storage allocation unit.
  • Snapshot – Point-in-time copy of an LV.
  • Thin LV – Logical volume with on-demand storage allocation.
  • Mirror / Stripe – LV layouts for redundancy and performance.

🔹 Physical Volumes (PV)

  • Create PV:
    1
    
    sudo pvcreate /dev/sdb
    
  • Display PV info:
    1
    2
    
    pvdisplay
    pvs
    
  • Remove PV:
    1
    
    sudo pvremove /dev/sdb
    
  • Move PV data:
    1
    
    pvmove /dev/sdb
    
  • Backup PV metadata:
    1
    
    pvcreate --restorefile /root/pvmetadata.bak /dev/sdb
    
  • Recover PV metadata:
    1
    
    vgcfgrestore vg_name
    

🔹 Volume Groups (VG)

  • Create VG:
    1
    
    sudo vgcreate vg_data /dev/sdb /dev/sdc
    
  • List VGs:
    1
    2
    
    vgdisplay
    vgs
    
  • Extend VG (add PV):
    1
    
    sudo vgextend vg_data /dev/sdd
    
  • Reduce VG (remove PV):
    1
    
    sudo vgreduce vg_data /dev/sdd
    
  • Rename VG:
    1
    
    sudo vgrename old_name new_name
    
  • Remove VG:
    1
    
    sudo vgremove vg_data
    
  • Check VG free space:
    1
    2
    
    vgdisplay vg_data
    vgs
    

🔹 Logical Volumes (LV)

  • Create LV:
    1
    
    sudo lvcreate -n lv_data -L 10G vg_data
    
  • Create LV using 100% free space:
    1
    
    sudo lvcreate -l 100%FREE -n lv_data vg_data
    
  • Display LVs:
    1
    2
    
    lvdisplay
    lvs
    
  • Remove LV:
    1
    
    sudo lvremove /dev/vg_data/lv_data
    
  • Resize LV (grow):
    1
    2
    3
    
    sudo lvextend -L +5G /dev/vg_data/lv_data
    resize2fs /dev/vg_data/lv_data   # ext4
    xfs_growfs /mount/point          # XFS
    
  • Resize LV (shrink – risky!):
    1
    2
    
    sudo lvreduce -L 5G /dev/vg_data/lv_data
    resize2fs /dev/vg_data/lv_data
    
  • Rename LV:
    1
    
    sudo lvrename vg_data lv_data lv_backup
    

🔹 LV Snapshots

  • Create snapshot:
    1
    
    sudo lvcreate -s -n lv_data_snap -L 1G /dev/vg_data/lv_data
    
  • List snapshots:
    1
    
    lvs -a
    
  • Remove snapshot:
    1
    
    sudo lvremove /dev/vg_data/lv_data_snap
    
  • Restore from snapshot:
    1
    
    lvconvert --merge /dev/vg_data/lv_data_snap
    

🔹 Thin Provisioning

  • Create thin pool:
    1
    
    lvcreate -L 50G -T vg_data/thinpool
    
  • Create thin LV:
    1
    
    lvcreate -V 10G -T vg_data/thinpool -n lv_thin
    
  • List thin LVs:
    1
    
    lvs -a -o+seg_monitor
    
  • Resize thin LV:
    1
    
    lvextend -L +5G /dev/vg_data/lv_thin
    

🔹 Advanced Layouts

  • Striped LV (performance):
    1
    
    lvcreate -i2 -I64 -L 20G -n lv_striped vg_data /dev/sdb /dev/sdc
    
  • Mirrored LV (redundancy):
    1
    
    lvcreate -m1 -L 10G -n lv_mirror vg_data
    
  • Convert to mirrored LV:
    1
    
    lvconvert -m1 /dev/vg_data/lv_data
    

🔹 Mounting & Filesystems

  • Format LV:
    1
    2
    
    mkfs.ext4 /dev/vg_data/lv_data
    mkfs.xfs /dev/vg_data/lv_data
    
  • Mount LV:
    1
    
    sudo mount /dev/vg_data/lv_data /mnt/data
    
  • Add to /etc/fstab:
    1
    
    /dev/vg_data/lv_data  /mnt/data  ext4  defaults  0 2
    
  • Check LV usage:
    1
    
    df -h /mnt/data
    

🔹 Monitoring & Troubleshooting

  • Check free space in VG:
    1
    2
    
    vgdisplay vg_data
    vgs
    
  • Check LV sizes:
    1
    2
    
    lvs
    lvdisplay
    
  • Check PVs and extents:
    1
    2
    
    pvdisplay
    pvs
    
  • Check filesystem on LV:
    1
    
    fsck /dev/vg_data/lv_data
    
  • Recover VG/LV metadata:
    1
    2
    
    vgcfgrestore vg_data
    lvconvert --repair /dev/vg_data/lv_data
    
  • Activate / Deactivate LV:
    1
    2
    
    lvchange -ay /dev/vg_data/lv_data
    lvchange -an /dev/vg_data/lv_data
    

🔹 Backup & Restore

  • Backup LVM metadata:
    1
    
    vgcfgbackup vg_data
    
  • Restore LVM metadata:
    1
    
    vgcfgrestore vg_data
    
  • Use snapshots for backups:
    1
    2
    3
    
    lvcreate -s -n lv_data_snap -L 1G /dev/vg_data/lv_data
    tar -czvf /backup/lv_data.tar.gz /mnt/data
    lvremove /dev/vg_data/lv_data_snap
    

🔹 LVM Legend

  • PV – Physical Volume
  • VG – Volume Group
  • LV – Logical Volume
  • PE / LE – Physical / Logical extents
  • Snapshot – Point-in-time copy of an LV
  • Thin LV – On-demand allocated LV
  • Mirror / Stripe – LV layout for redundancy/performance
  • Thin Pool – Storage pool for thin LVs
  • lvextend / lvreduce – Resize LVs
  • vgextend / vgreduce – Resize VGs
  • pvmove – Move data between PVs

🔹 Best Practices

  • Always backup data before resizing or removing LVs.
  • Use snapshots before risky operations.
  • Monitor VG free space regularly: vgs / vgdisplay.
  • Keep LVs logically organized by purpose (/var, /home, /data).
  • Avoid shrinking LVs unless filesystem contents are fully verified.
  • Use RAID underneath LVM for redundancy and performance.
  • Document LVM layout for disaster recovery.
  • Use thin provisioning carefully, monitor usage to avoid overcommit.
  • Periodically check filesystem integrity on LVs: fsck or xfs_repair.
  • Use activation/deactivation of LVs to manage maintenance safely.
This post is licensed under CC BY 4.0 by the author.