How to work with LVM
LVM (Logical Volume Manager) is a special Linux OS subsystem that provides additional options for managing partitions on hard disks. It adds a layer of abstraction between your physical storage devices and the file systems, making storage management flexible and dynamic.
Key concepts
- PV (Physical Volume): a physical disk or partition initialized for use by LVM.
- VG (Volume Group): a pool of storage made up of one or more PVs.
- LV (Logical Volume): a virtual partition carved out of a VG, which is what you format and mount.
Installation
# Debian/Ubuntu
sudo apt-get install lvm2
# CentOS/RHEL
sudo yum install lvm2Creating an LVM setup
Step 1: Initialize physical volumes
sudo pvcreate /dev/sdb /dev/sdcVerify:
sudo pvdisplayStep 2: Create a volume group
sudo vgcreate my_vg /dev/sdb /dev/sdcVerify:
sudo vgdisplayStep 3: Create a logical volume
Create a 10 GB logical volume:
sudo lvcreate -L 10G -n my_lv my_vgOr use all remaining free space:
sudo lvcreate -l 100%FREE -n my_lv my_vgVerify:
sudo lvdisplayStep 4: Format and mount
sudo mkfs.ext4 /dev/my_vg/my_lv
sudo mkdir /mnt/mydata
sudo mount /dev/my_vg/my_lv /mnt/mydataAdd to /etc/fstab for automatic mounting at boot:
/dev/my_vg/my_lv /mnt/mydata ext4 defaults 0 2Extending a logical volume
Extend the logical volume by 5 GB and resize the filesystem:
sudo lvextend -L +5G /dev/my_vg/my_lv
sudo resize2fs /dev/my_vg/my_lvReducing a logical volume
Warning: always back up data before shrinking. Unmount first.
sudo umount /mnt/mydata
sudo e2fsck -f /dev/my_vg/my_lv
sudo resize2fs /dev/my_vg/my_lv 8G
sudo lvreduce -L 8G /dev/my_vg/my_lv
sudo mount /dev/my_vg/my_lv /mnt/mydataAdding a new disk to an existing volume group
sudo pvcreate /dev/sdd
sudo vgextend my_vg /dev/sddRemoving an LVM setup
sudo umount /mnt/mydata
sudo lvremove /dev/my_vg/my_lv
sudo vgremove my_vg
sudo pvremove /dev/sdb /dev/sdc