“Hey guys…. I heard a lot about LVM….. Please tell me what it is?”
- LVM stands for Logical Volume Manager (or Logical Volume Management).
- Logical Volume Manager allows for a layer of abstraction between your operating system and the disks/partitions it uses.
- It is a system of managing logical volumes, or file systems.
- With LVM, disks and partitions can be abstracted to contain multiple disks and partitions into one device.
“Hmmmm…. looks exciting….. Now tell me why should I use LVM……Tell me some advantages of using LVM….”
- Most operations can be done on the fly, while the system is running.
- LVM can expand a partition while it is mounted, if the file system used on it also supports that ( like the usual ext3/4 ).
- LVM can move a partition while it is in use, and will not corrupt your data if it is interrupted.
- It allows to take snapshot at any moment, even while the system is running.
“Well, you forced me to think….. So how LVM is different from traditional disk management?”
Traditional Disk Management
- Operating system looks for what disks are available (/dev/sda, /dev/sdb, etc.).
- Then looks at what partitions are available on those disks (/dev/sda1, /dev/sda2, etc.).
LVM Disk Management
- A physical disk is divided into one or more physical volumes.
- Physical Volumes corresponds to physical disk partitions.
- Logical volume groups are created by combining Physical Volumes.
- A logical volume group is a collection of physical volumes from which a logical volume can be created.
- Logical volumes correspond to partitions and they hold a file system.
- A logical volume lives in a volume group that is made up of one or more physical volumes.
“Ooppssss…. that was too much technical for me… but how I can manage LVM?”
There are adequate commands to manage LVM. Each LVM command is preceded by one of the following:
- Physical Volume = pv
- Volume Group = vg
- Logical Volume = lv
To get LVM information you can use
“Things are going over my head….. Show me some practical stuffs……. Please do some LVM stuffs for me….. Okey, I will give you some scenarios…. and you have to do it for me….”
“Howdy Techies….Here I am to destroy your sleep…..
Add three new disks to my Linux machine…..
Create partitions on these three disks….”
I am adding three disks to my Ubuntu VM.
Start the VM after adding the disks.
I am going to use the fdisk command to check the newly added disks. We can see the three added disks in the below screen shot:
Partitioning 1st disk
t = Change partition type
8e = Hexa decimal code for Linux LVM
Partitioning 2nd disk
“Our disk partitioning is over!!!!!!
Partitioning is time consuming…
I am tired…. Show me something new so that I do not sleep…..
Okey…. Show me LVM Stuff…..”
# apt-get install lvm2
Now we have 3 partitions of type Linux LVM.
1./dev/sdb1 600MB on 1st Disk
2./deb/sdb2 400MB on 1st Disk
3./dev/sdc1 1GB on 2nd Disk
We are going to create two physical volumes from the first two partitions of the above list.
Using these two physical volumes we will create a volume group.
After that we will create a logical volume of size 800MB.
Then we will format the logical volume and mount and use it.
Creating physical volumes
Creating volume group
Our physical volumes are created, we need to create the volume group.
#vgcreate Volume_Group_name List_of_Physical_Volumes
Creating logical volume
To create the logical volume
# lvcreate -L Size -n Name_of_the_new_lv volume_group_name
Format and Mount the Logical Volume
Show some real use of LVM….”
“I am copying my personal stuffs in /lvm_training folder.
I have already consumed almost 500MB, just 262MB free space is remaining here.
I need to copy a movie of size 700MB here.
Urgently give me 500MB more space, I don’t have time, I am currently working with the files in /lvm_training folder.
I can’t unmount /lvm_training, I can’t shutdown the machine…… but I need more space here!!!!!!”
Adding more space
Right now our volume group vgtraining has size 1016MB, out of which 800MB is already allocated.
We need 500MB more space.
So we will add the /dev/sdc1 partition (of the 2nd disk) to this volume group, to increase its size.
Extend the logical volume:
We can specify the size of the logical volume in two ways:
-L+500M = Add 500MB more space to this volume.
-L1400M = Extend the volume size to 1400MB.
So I am going to add 500MB to the logical volume lvtraining1
“Oppss….. still our df command is showing space utilization as it was before.
We have added 500MB space to the volume group.
Where the new space has gone????????”
Extend file system
After extending the Logical Volume we need to expand the filesystem to use the new space.
“That was cool…..
But the movie I copied was only 300MB.
Right now I have 435MB free in /lvm_training.
You IT guys are charging me too much $/MB of storage.
So I have decided to release 250MB of free space, so that I can save few $ .”
We have to unmount the partition to reduce the space from the partition as resize2fs do not support on-line shrinking.
-L : Specify the size.
-r : It will run the resize2fs and the filesystem checks.
Note: If you run the above command on a mounted partition, you may severely damage the file system in that partition.
“What will happen if I run the previous command on a mounted partition?
Suppose I run the command to reduce space from the logical volume, but the amount to reduced I specified is more than the free space available on this partition.”
It may damage the file system in that partition.
The command will fail.
“That was quite impressive.
But guys… I am finding the disk speed quite low, can you give me a faster disk??????????
Again I am very busy… so I can’t give you any down time….”
We have added third disk (/dev/sdd) of 2GB size while adding the disks at the beginning of this hands on (we are assuming that this is a faster disk ).
Now we will add this disk to the volume group vgtraining and will move all the data of the disks (/dev/sdb and /dev/sdc) to this new disk.
We will remove the disks /dev/sdb and /dev/sdc
We can see that /dev/sdd1 is free right now.
Also if we run pvmove –n logical_vol /dev/sdb1 then Logical Volume logical_vol on the /dev/sda1 Physical Volume will be moved.
“Hey Guys you are doing wonderful jobs….
But my needs are ever-growing…..
Meet my folks…..
They are quite impressed with my collections of music and songs that I stored in my /lvm_training folder…. They need a copy of that folder…. Hey don’t think my requirement as a simple one….
I will keep updating that folder at any moment of time… but I want to give them the current content (content at this moment of time)…. While you are copying the files I may be updating/adding files in this folder…. But my folks should not get the new/updated contents.”
- The LVM allows you to take a snapshot of any logical volume.
- When you create a snapshot, you create a new Logical Volume to act as a clone of the original Logical Volume.
- If we make some changes to the original volume, the changed blocks are copied to the snapshot volume before they are changed.
- One of the coolest things about LVM snapshots is your file system is never taken offline.
- To create a snapshot we need to create a new logical volume with enough free space to hold any new information that will be written to the logical volume while we make a backup.
Create New Snapshot
Now it's time to create the snapshot of the /dev/vgtraining/lvtraining1
“I am updating contents of this folder now…..
I think I don’t need problem11.csv file…..I am going to delete this file…..”
“But you have to give my folks the previous contents of this folder.
Copy the contents to /tmp folder…. from there my folks will download it.”
“I am so fool…..
I have updated some source code files in the folder /lvm_training and one application depends on those files stopped running.
My boss yet to know about it…. If he learns about it… probably he will send me back to Africa…..
God help me…. Wish I could go back to the time when I asked you to take snapshot….”
Reverting/Merging To The Snapshot's State
- Once you have a snapshot available, you can change the original logical volume to the state of that snapshot.
- Unmount that logical volume if you want to see the change to happen immediately.
- If we run merging without unmounting the logical volume, then changes will take effect after next reboot.