Linux Tutorials
About Lesson

Introduction

LVM, or Logical Volume Management, is a storage device management technology that gives users the power to pool and abstract the physical layout of component storage devices for easier and flexible administration. Utilizing the device mapper Linux kernel framework, the current iteration, LVM2, can be used to gather existing storage devices into groups and allocate logical units from the combined space as needed.

The main advantages of LVM are increased abstraction, flexibility, and control. Logical volumes can have meaningful names like “databases” or “root-backup”. Volumes can be resized dynamically as space requirements change and migrated between physical devices within the pool on a running system or exported easily. LVM also offers advanced features like snapshotting, striping, and mirroring.

In this guide, we will briefly discuss how LVM works and then demonstrate the basic commands needed to get up and running quickly.

LVM Architecture and Terminology

Before we dive into the actual LVM administrative commands, it is important to have a basic understanding of how LVM organizes storage devices and some of the terminology it employs.

LVM Storage Management Structures

LVM functions by layering abstractions on top of physical storage devices. The basic layers that LVM uses, starting with the most primitive, are.

  • Physical Volumes:
    • LVM utility prefixpv...
    • Description: Physical block devices or other disk-like devices (for example, other devices created by device mapper, like RAID arrays) are used by LVM as the raw building material for higher levels of abstraction. Physical volumes are regular storage devices. LVM writes a header to the device to allocate it for management.
  • Volume Groups:
    • LVM utility prefixvg...
    • Description: LVM combines physical volumes into storage pools known as volume groups. Volume groups abstract the characteristics of the underlying devices and function as a unified logical device with combined storage capacity of the component physical volumes.
  • Logical Volumes:
    • LVM utility prefixlv... (generic LVM utilities might begin with lvm...)
    • Description: A volume group can be sliced up into any number of logical volumes. Logical volumes are functionally equivalent to partitions on a physical disk, but with much more flexibility. Logical volumes are the primary component that users and applications will interact with.

In summary, LVM can be used to combine physical volumes into volume groups to unify the storage space available on a system. Afterwards, administrators can segment the volume group into arbitrary logical volumes, which act as flexible partitions.

What are Extents?

Each volume within a volume group is segmented into small, fixed-size chunks called extents. The size of the extents is determined by the volume group (all volumes within the group conform to the same extent size).

The extents on a physical volume are called physical extents, while the extents of a logical volume are called logical extents. A logical volume is simply a mapping that LVM maintains between logical and physical extents. Because of this relationship, the extent size represents the smallest amount of space that can be allocated by LVM.

Extents are behind much of the flexibility and power of LVM. The logical extents that are presented as a unified device by LVM do not have to map to continuous physical extents. LVM can copy and reorganize the physical extents that compose a logical volume without any interruption to users. Logical volumes can also be easily expanded or shrunk by simply adding extents to or removing extents from the volume.

►LV(Logical Volume): Logical volumes are functionally equivalent to partitions on a physical disk, but with much more flexibility.

Advantages of LVM?

►Use any number of disks as one big disk.
►Have logical volumes stretched over several disks.
►Create small logical volumes and resize them “dynamically” as they get filled up.
►Resize logical volumes regardless of their order on disk. It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.
►Resize/create/delete logical and physical volumes online. File systems on them still need to be resized, but some (such as ext4) support online resizing.
►Online/live migration of LV being used by services to different disks without having to restart services.
►Snapshots allow you to backup a frozen copy of the file system, while keeping service downtime to a minimum.

Creating a LVM Partition:

[email protected]:~# lsblk
[email protected]:~# fdisk /dev/vdb2
:n ## new partition ##
:e ## extended ##
:n ## new ##
:l ## for logical partition ##
:+1G ## size of partition in GB ##
:t ## type of partition ##
:5 ## partition number ##
:8e ## Hex code for LVM partition ##
:w ## for save ##
[email protected]:~# partprobe
[email protected]:~# pvcreate /dev/vdb2 ## create PV for LVM ##
[email protected]:~# pvdisplay
[email protected]:~# vgcreate myvol /dev/vdb2 ## myvol is VG name ##
[email protected]:~# vgdisplay
[email protected]:~# lvcreate -n data -L +500M myvol ## "-n" name, "data" LV name, "-L" length of LV partition, "+500M" partition size for LV, "myvol" VG name  
[email protected]:~# lvdisplay
[email protected]:~# mkfs.ext4 /dev/myvol/data
[email protected]:~# mkdir /data
[email protected]:~# blkid /dev/myvol/data
[email protected]:~# echo "UUID ---- /data ext4 defaults 0 0" >> /etc/fstab
[email protected]:~# df -h​

How to extend LVM?

PE : Physical extent is the smallest contiguous extent (default 4 MiB) in the PV that can be assigned to a LV. Think of PEs as parts of  PVs that can be allocated to any LV.

There are 460MB free PE available = 1GB Free space available. So we can expand our logical volume up-to 450MB more. Let us use the PE size to extend.

[email protected]:~# lvextend -r -L +450M /dev/myvol/data

Note:  “-r” option means resize if you don’t put this option then you need to run one more command which is:

[email protected]:~# resize2fs -f /dev/myvol/data

Extend XFS partition:

The same command works here but “-r” option doesn’t work here so we need to run two commands which is:

[email protected]:~# lvextend -L +400M /dev/myvol/data
[email protected]:~# xfs-growfs /data

How to reduce the partition:

 

Note: Reducing a partition is not that good because you lose some data in reducing process but if you want to reduce then here’s the command:

[email protected]:~# lvreduce -r -L -200M /dev/myvol/data

Let’s Join our Hacking Team

We Are Indian We Are Great

Hope this article helpful for you. Thank You

Indian Cyber Army | Make IT Secure

Enjoy…Stay Happy…Stay Secure…

Hope this article helpful for you. Thank You


If You Appreciate What We Do Here On Hackonology, You Should Consider:

Hackonology is the fastest growing and most trusted community site where you can find lots of courses, articles about Technology/Hacking/Cracking. Millions of people visit Hackonology! to search or browse the thousands of published articles available FREELY to all.

Let's be a part of Hacker's Community! Join our Hacking Team

We Are Indian We Are Great