Skip to content

LVM

Inspect storage

Show block devices and filesystems

lsblk --fs

List physical volumes

sudo pvs
sudo pvdisplay

List volume groups

sudo vgs
sudo vgdisplay

List logical volumes, devices, and tags

sudo lvs -o +devices,tags
sudo lvdisplay

Physical volumes

Create a physical volume

The device must not contain data that needs to be retained.

sudo pvcreate {{path/to/block_device}}

Resize a physical volume after enlarging its device

sudo pvresize {{path/to/block_device}}

Volume groups

Create a volume group

sudo vgcreate {{volume_group_name}} {{path/to/physical_volume}}

Add a physical volume to a volume group

sudo vgextend {{volume_group_name}} {{path/to/physical_volume}}

Rename a volume group

sudo vgrename {{current_volume_group_name}} {{new_volume_group_name}}

Logical volumes

Create a logical volume with a fixed size

sudo lvcreate --size {{size, e.g. 20G}} --name {{logical_volume_name}} {{volume_group_name}}

For example, use a size such as 20G or 500M.

Create a logical volume using all free space

sudo lvcreate --extents 100%FREE --name {{logical_volume_name}} {{volume_group_name}}

Create a striped logical volume

Specify one physical volume for each stripe.

sudo lvcreate --stripes {{number_of_stripes}} --size {{size, e.g. 20G}} --name {{logical_volume_name}} {{volume_group_name}} {{path/to/physical_volume_1}} {{path/to/physical_volume_2}}

Rename a logical volume

sudo lvrename {{volume_group_name}} {{current_logical_volume_name}} {{new_logical_volume_name}}

Add or remove a tag

sudo lvchange --addtag {{tag_name}} {{volume_group_name}}/{{logical_volume_name}}
sudo lvchange --deltag {{tag_name}} {{volume_group_name}}/{{logical_volume_name}}

Activate or deactivate a logical volume

Unmount the filesystem before deactivating its logical volume.

sudo lvchange --activate y {{volume_group_name}}/{{logical_volume_name}}
sudo lvchange --activate n {{volume_group_name}}/{{logical_volume_name}}

Filesystems

Create and mount an ext4 filesystem

sudo mkfs.ext4 /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo mkdir -p {{path/to/mount_point}}
sudo mount /dev/{{volume_group_name}}/{{logical_volume_name}} {{path/to/mount_point}}

Extend a logical volume and its filesystem

Add a fixed amount:

sudo lvextend --resizefs --size +{{amount_to_add, e.g. 10G}} /dev/{{volume_group_name}}/{{logical_volume_name}}

Use all remaining free space in the volume group:

sudo lvextend --resizefs --extents +100%FREE /dev/{{volume_group_name}}/{{logical_volume_name}}

Reduce an ext4 logical volume and filesystem

Back up the filesystem first. Reducing a logical volume incorrectly can destroy data. XFS filesystems cannot be shrunk.

sudo umount /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo e2fsck -f /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo resize2fs /dev/{{volume_group_name}}/{{logical_volume_name}} {{new_size, e.g. 20G}}
sudo lvreduce --size {{new_size, e.g. 20G}} /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo mount /dev/{{volume_group_name}}/{{logical_volume_name}} {{path/to/mount_point}}

Move data between physical volumes

Move all allocated extents

Both physical volumes must belong to the same volume group.

sudo pvmove {{path/to/source_physical_volume}} {{path/to/destination_physical_volume}}

Move one logical volume

sudo pvmove --name {{volume_group_name}}/{{logical_volume_name}} {{path/to/source_physical_volume}} {{path/to/destination_physical_volume}}

Remove an unused physical volume from a volume group

Confirm that pvs reports no allocated extents on the device before removing it.

sudo vgreduce {{volume_group_name}} {{path/to/physical_volume}}
sudo pvremove {{path/to/physical_volume}}

Snapshots

Create a snapshot

Snapshot space must accommodate changes made to the origin while the snapshot exists.

sudo lvcreate --snapshot --size {{snapshot_size, e.g. 10G}} --name {{snapshot_name}} /dev/{{volume_group_name}}/{{origin_logical_volume_name}}

Restore a snapshot

Merging discards changes made to the origin after the snapshot was created. If the origin is active, the merge completes on its next activation.

sudo lvconvert --merge /dev/{{volume_group_name}}/{{snapshot_name}}

Remove a snapshot

sudo lvremove /dev/{{volume_group_name}}/{{snapshot_name}}

RAID

Create a RAID 1 logical volume

sudo lvcreate --type raid1 --mirrors 1 --size {{size, e.g. 20G}} --name {{logical_volume_name}} {{volume_group_name}} {{path/to/physical_volume_1}} {{path/to/physical_volume_2}}

Convert an existing logical volume to RAID 1

sudo lvconvert --type raid1 --mirrors 1 /dev/{{volume_group_name}}/{{logical_volume_name}}

Check RAID health

sudo lvs -a -o name,segtype,devices,health_status

Remove LVM storage

These commands permanently destroy the logical volume and its data.

sudo umount /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo lvremove /dev/{{volume_group_name}}/{{logical_volume_name}}
sudo vgremove {{volume_group_name}}
sudo pvremove {{path/to/physical_volume}}