Skip to content


Linux Logical Volume Manager.

General flow

Physical volumes (pv) are grouped into volume groups (vg). Volume groups are sliced up into logical volumes (lv). Because of that, the general flow is something like:

## Partitioning is not necessary, so no need for fdisk or sgdisk
pvcreate /dev/sd{x..z}
vgcreate vg_scratch /dev/sd{x..z}
lvcreate -l 95%FREE -n lv_scratch vg_scratch
mkfs.ext4 /dev/vg_scratch/lv_scratch


Show a bunch of info

pvdisplay -v
pvs -v
pvs -a
pvs --segments
vgdisplay -v
vgs -v
vgs -a -o +devices

Show system disks and if they are in an LVM


Show all logical volumes


Activate all volume groups

vgchange -a y

Create a physical volume

physical volumes are groups of physical disks that can be used to create logical volumes

pvcreate pv_name /dev/sdb2 /dev/sdc2

Create a logical volume

This creates a specifically named logical volume on a volume group named vg_data

lvcreate -L 10G -n lv_name vg_data

Show how each logical volume is set up


Show free extents

vgs -o vg_free_count

Extend a volume group to 1TB

lvextend -L 1T /dev/vgroot/lv_srv && \
resize2fs /dev/mapper/vgroot-lv_srv && \
df -h /srv

Extend a volume group to its max

lvextend -l +100%FREE /dev/vgroot/lv_srv && \
resize2fs /dev/mapper/vgroot-lv_srv && \
df -h /srv