Linux Logical Volume Manager (LVM) tutorial
We use LVM to create partitions, physical volumes, a virtual group, logical volumes, and filesystems on a hard disk. We’ll also show how to mount, extend, and remove our newly created logical volumes. By the end of this tutorial, you’ll have a full understanding of how to use LVM and apply your configurations.
In this tutorial you will learn:
How to install LVM on major Linux distros
How to create partitions
How to create physical volumes
How to create a virtual group
How to create logical volumes
How to create a filesystem on logical volumes
How to edit fstab to automatically mount partitions
How to mount logical volumes
How to extend a logical volume
How to remove a logical volume
Identify the new hard disks
This is achieved using the lsblk
command. lsblk
lists information about all available or specified block devices. It reads the sysfs filesystem and udev db to gather information.
lsblk
Here, sdb
and sdc
is the new hard disks that we have added.
Create physical volumes
This is done with pvcreate
. This initializes physical volume(s) for later use by the Logical Volume Manager (LVM). Each physical volume can be a disk partition, whole disk, meta-device, or loopback file.
pvcreate /dev/sdb /dev/sdc
pvdisplay command for view volumes
pvdisplay
Create a volume group
vgcreate
creates a new volume group named DEMO on physical volumes /dev/sdb and /dev/sdc.
vgcreate DEMO /dev/sdb /dev/sdc
vgdisplay to view
vgdisplay
Create a logical volume
lvcreate
creates a logical volume in a volume group. In this case, it's creating a logical volume named demo_lab
with a size of 1G in the volume group DEMO
.
lvcreate -n demo_lab --size 1G DEMO
lvdisplay to view
lvdisplay
Partition of the new logical volume
fdisk
is a dialogue-driven command-line utility that creates and manipulates partition tables and partitions on a hard disk.
fdisk /dev/mapper/DEMO-demo_lab
Here you're asked to press n
to create a new partition. then press p
for primary then mention size or press enter, enter.
Then again will ask for the option press w
to write and exit
Error:
WARNING: Re-reading the partition table failed with error 22: Invalid argument. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
then put the command below
partprobe /dev/DEMO/demo_lab
check if you are able to view the partition with
lsblk
Create a filesystem
mkfs.ext4
is used to create an ext4 filesystem on the partition.
mkfs.ext4 /dev/mapper/DEMO-demo_lab
Create a mount point and mount the logical volume
Create a directory that will serve as the mount point, and then use the mount
command to mount the logical volume.
mkdir our-demo
mount /dev/mapper/DEMO-demo_lab our-demo
Extend the logical volume
lvextend
allows you to extend the size of a logical volume. Here, you're extending the logical volume demo_lab
by an additional 2G.
lvextend -L +2G /dev/mapper/DEMO-demo_lab
Resize the filesystem
resizefs
resize the filesystem on the logical volume to use all of the available space.
resize2fs /dev/mapper/DEMO-demo_lab
Create a snapshot
lvcreate
with -s
creates a snapshot logical volume, which is a read-only copy of another logical volume.
lvcreate -L 1GB -s -n demo_lab_snap /dev/mapper/DEMO-demo_lab
Merge the snapshot
lvconvert
with --merge
will merge the snapshot back into its origin volume. If both the origin and snapshot volumes are not open the merge will start immediately, otherwise, it will be delayed until the origin volume becomes inactive.
lvconvert --merge /dev/mapper/DEMO-demo_lab_snap
Reboot and you can see the status
Mirror
It creates a mirror of data in all physical drives
lvcreate -L 2GB -m1 -n testmirror DEMO
Remove a logical volume
The command lvremove
can be used to remove logical volumes. We should make sure a logical volume does not have any valuable data stored on it before we attempt to remove it. Moreover, we should make sure the volume is not mounted.
lvremove /dev/mapper/DEMO-demo_lab
Now to remove the DEMO
volume
lvremove /dev/mapper/DEMO
In the above ways we can perform multiple tasks using Logical volume manager.
Subscribe to my newsletter
Read articles from Shubham Nimkar directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Shubham Nimkar
Shubham Nimkar
A passionate DevOps & High Performance Computing enthusiast from India