About Logical Volume Management (LVM)

#### Beyond Linux® From Scratch - Version 2019-02-27

### Chapter 5. File Systems and Disk Management

- Prev

  LVM2-2.03.02

- Next

  About RAID

- Up
- Home

# About Logical Volume Management (LVM)

LVM manages disk drives. It allows multiple drives and partitions to be combined into larger volume groups, assists in making backups through a snapshot, and allows for dynamic volume resizing. It can also provide mirroring similar to a RAID 1 array.

A complete discussion of LVM is beyond the scope of this introduction, but basic concepts are presented below.

To run any of the commands presented here, the LVM2-2.03.02 package must be installed. All commands must be run as the `root` user.

Management of disks with lvm is accomplished using the following concepts:

physical volumes

  These are physical disks or partitions such as /dev/sda3 or /dev/sdb.

volume groups

  These are named groups of physical volumes that can be manipulated by the administrator. The number of physical volumes that make up a volume group is arbitrary. Physical volumes can be dynamically added or removed from a volume group.

logical volumes

  Volume groups may be subdivided into logical volumes. Each logical volume can then be individually formatted as if it were a regular Linux partition. Logical volumes may be dynamically resized by the administrator according to need.

To give a concrete example, suppose that you have two 2 TB disks. Also suppose a really large amount of space is required for a very large database, mounted on `/srv/mysql`. This is what the initial set of partitions would look like:

    Partition  Use    Size      Partition Type
    /dev/sda1  /boot  100MB     83 (Linux)
    /dev/sda2  /       10GB     83 (Linux)
    /dev/sda3  swap     2GB     82 (Swap)
    /dev/sda4  LVM    remainder 8e (LVM)
    /dev/sdb1  swap     2GB     82 (Swap)
    /dev/sdb2  LVM    remainder 8e (LVM)

First initialize the physical volumes:

    pvcreate /dev/sda4 /dev/sdb2

Next create a volume group named lfs-lvm:

    vgcreate lfs-lvm /dev/sda4  /dev/sdb2

The status of the volume group can be checked by running the command vgscan. Now create the logical volumes. Since there is about 3900 GB available, leave about 900 GB free for expansion. Note that the logical volume named mysql is larger than any physical disk.

    lvcreate --name mysql --size 2500G lfs-lvm
    lvcreate --name home  --size  500G lfs-lvm

Finally the logical volumes can be formatted and mounted. In this example, the jfs file system (jfsutils-1.1.15) is used for demonstration purposes.

    mkfs -t ext4 /dev/lfs-lvm/home
    mkfs -t jfs  /dev/lfs-lvm/mysql
    mount /dev/lfs-lvm/home /home
    mkdir -p /srv/mysql
    mount /dev/lfs-lvm/mysql /srv/mysql

The LFS boot scripts automatically make these file systems available to the system in the checkfs script. Edit the `/etc/fstab` file as required to automatically mount them.

A LVM logical volume can host a root filesystem, but requires the use of an initramfs (initial RAM file system) and is not discussed here.

For a more information about LVM, see the LVM HOWTO and the lvm man pages.

Last updated on 2013-02-11 12:51:17 -0600

- Prev

  LVM2-2.03.02

- Next

  About RAID

- Up
- Home