LVM Basics in Linux

Logical Volume Management (LVM) provides a flexible and efficient way to manage disk storage in Linux. This guide covers the essential concepts of LVM, helping you understand how to configure and manage logical volumes effectively.

What is LVM?

LVM is a method of allocating space on mass-storage devices that is more flexible than traditional partitioning schemes. It allows you to create, resize, and move storage volumes without worrying about the underlying physical storage.

Key Concepts

  • Physical Volume (PV): A physical disk or partition that LVM can use for storage.
  • Volume Group (VG): A pool of storage that combines multiple Physical Volumes.
  • Logical Volume (LV): A block of storage carved out from a Volume Group, acting like a virtual partition.

Learn more about Linux storage management.

Why Use LVM?

LVM provides several advantages over traditional disk partitioning:

  • Dynamic Resizing: Easily resize logical volumes without unmounting or rebooting.
  • Snapshots: Create snapshots of logical volumes for backups or testing.
  • Storage Pooling: Combine multiple disks or partitions into a single storage pool, making it easier to manage large datasets.

Setting Up LVM

Step 1: Create Physical Volumes

Start by initializing your physical disks or partitions as Physical Volumes (PVs):

sudo pvcreate /dev/sda1 /dev/sdb1

Step 2: Create a Volume Group

Next, create a Volume Group (VG) that combines the Physical Volumes:

sudo vgcreate my_vg /dev/sda1 /dev/sdb1

Step 3: Create a Logical Volume

Now, allocate space from the Volume Group to create a Logical Volume (LV):

sudo lvcreate -L 10G -n my_lv my_vg

Step 4: Format and Mount the Logical Volume

Format the Logical Volume with a file system and mount it:

sudo mkfs.ext4 /dev/my_vg/my_lv
sudo mount /dev/my_vg/my_lv /mnt

Advanced LVM Features

Resizing Logical Volumes

LVM allows you to resize logical volumes on the fly:

  • Increase Size:
    sudo lvextend -L +5G /dev/my_vg/my_lv
    sudo resize2fs /dev/my_vg/my_lv
  • Reduce Size: Ensure data safety before reducing:
    sudo resize2fs /dev/my_vg/my_lv 10G
    sudo lvreduce -L 10G /dev/my_vg/my_lv

Creating Snapshots

Snapshots capture the state of a Logical Volume at a specific point in time:

sudo lvcreate -L 1G -s -n my_lv_snapshot /dev/my_vg/my_lv

This is useful for backups or testing without affecting the live data.