LVM has created some pretty amazing features. We can now add, remove, extend, shrink, and snapshot volumes very quickly and easily. Since the overhead of LVM is so small and there are so many features, I enjoy using LVM partitions quite a bit.
We can combine multiple drives to make them look as one. To create a new LVM partition we will create a partition with fdisk and assign it type 8e (Linux LVM), then initialize it as a physical volume, then create a volume group, then create a logical volume within that volume group, then format it and mount it. It’s that simple!
Example: Combine drives sdb and sdc into one logical volume
fdisk /dev/sdb #Go through fdisk process to create the partition table sdb and sdc #select "n add a new partition" -> fill in to your specifications #select "t change a partition's system id" -> select "8e" for Linux LVM #type "w" to write it out and save it. fdisk -l #verify partition was created pvcreate /dev/sdb1 /dev/sdc1 #initialize both drives as physical volumes vgcreate myVolumeGroup /dev/sdb1 /dev/sdc1 #create a volume group with these drives in it lvcreate --name myLogicalVolume --size 100G myVolumeGroup #create a 100G partition in the volume group mkfs.ext3 /dev/myVolumeGroup/myLogicalVolume #format it
That’s it! Now you can mount it wherever you want and begin using it. Don’t forget to add it to /etc/fstab so it shows up on your next reboot.
The process to extend a LVM partition is very similar to creating one. The best part? for 2.6 Kernels using ext3 you can do this on the fly without un-mounting your drives!
Example: add device ‘/dev/sdd’ to our newly created volume group above then extend the logical volume
fdisk /dev/sdd #Go through fdisk process to create the partition table sdd #select "n add a new partition" -> fill in to your specifications #select "t change a partition's system id" -> select "8e" for Linux LVM #type "w" to write it out and save it. fdisk -l #verify partition was created mkfs.ext3 /dev/sdd1 pvcreate /dev/sdd1 vgextend myVolumeGroup /dev/sdd1 lvextend -L +10G /dev/myVolumeGroup/myLogicalVolume resize2fs /dev/myVolumeGroup/myLogicalVolume #for ext3 and 2.6 Kernels works with mounted partitions! #Otherwise you will have to unmount the volume first
There are a few tools that you can use to verify/monitor/look at your LVM partitions. Run without any parameters will display all items that it finds.
pvdisplay – display physical volumes
lvdisplay – display logical volumes
vgdisplay – display volume groups
A little known “feature” of LVM is that by default, it reserves 5% of your blocks. This comes in handy when an LVM partition gets crippled from overflowing. You can use tune2fs to free some more space up. I wouldn’t dip into these reserved blocks if not necessary though!