Logical Volume Management (LVM) Explained
Key Concepts
- Physical Volumes (PVs)
- Volume Groups (VGs)
- Logical Volumes (LVs)
- Extending and Reducing Volumes
- Snapshots
Physical Volumes (PVs)
Physical Volumes are the basic building blocks of LVM. They are physical storage devices like hard drives or partitions that are initialized for use with LVM. The pvcreate
command is used to initialize a device as a Physical Volume.
Imagine Physical Volumes as individual Lego blocks. Each block is a separate piece of storage that can be combined with others to build something larger.
Example: To initialize a partition /dev/sdb1
as a Physical Volume, you would use the command sudo pvcreate /dev/sdb1
.
Volume Groups (VGs)
Volume Groups are collections of Physical Volumes combined into a single pool of storage. This pool can then be divided into Logical Volumes. The vgcreate
command is used to create a Volume Group from one or more Physical Volumes.
Think of Volume Groups as a Lego baseplate. Multiple Lego blocks (Physical Volumes) are placed on the baseplate to form a larger structure that can be divided into smaller sections (Logical Volumes).
Example: To create a Volume Group named "vgdata" using the Physical Volume /dev/sdb1
, you would use the command sudo vgcreate vgdata /dev/sdb1
.
Logical Volumes (LVs)
Logical Volumes are the virtual partitions created from a Volume Group. They can be resized and moved around without affecting the underlying Physical Volumes. The lvcreate
command is used to create a Logical Volume from a Volume Group.
Consider Logical Volumes as individual Lego structures built on the baseplate (Volume Group). Each structure can be resized or moved without affecting the baseplate or other structures.
Example: To create a Logical Volume named "lvdata" with a size of 10GB from the Volume Group "vgdata", you would use the command sudo lvcreate -L 10G -n lvdata vgdata
.
Extending and Reducing Volumes
LVM allows for dynamic resizing of Logical Volumes. This means you can extend or reduce the size of a Logical Volume without unmounting it. The lvextend
and lvreduce
commands are used for these operations.
Think of extending and reducing volumes as adding or removing Lego blocks from a structure. You can make the structure larger or smaller without dismantling it entirely.
Example: To extend the Logical Volume "lvdata" by 5GB, you would use the command sudo lvextend -L +5G /dev/vgdata/lvdata
. To reduce it by 2GB, you would use sudo lvreduce -L -2G /dev/vgdata/lvdata
.
Snapshots
Snapshots are read-only copies of Logical Volumes taken at a specific point in time. They are useful for backup purposes and can be created with minimal overhead. The lvcreate
command with the -s
option is used to create a snapshot.
Imagine snapshots as taking a photograph of a Lego structure. The photograph captures the exact state of the structure at that moment, allowing you to revert to that state later if needed.
Example: To create a snapshot named "lvdata_snapshot" of the Logical Volume "lvdata", you would use the command sudo lvcreate -s -n lvdata_snapshot -L 5G /dev/vgdata/lvdata
.