LVM2-2.03.26

#### Beyond Linux® From Scratch (systemd Edition) - Version 12.2

### Chapter 5. File Systems and Disk Management

- Prev

  jfsutils-1.1.15

- Next

  About Logical Volume Management (LVM)

- Up
- Home

# LVM2-2.03.26

## Introduction to LVM2

The LVM2 package is a set of tools that manage logical partitions. It allows spanning of file systems across multiple physical disks and disk partitions and provides for dynamic growing or shrinking of logical partitions, mirroring and low storage footprint snapshots.

This package is known to build and work properly using an LFS 12.2 platform.

### Package Information

- Download (HTTP): https://sourceware.org/ftp/lvm2/LVM2.2.03.26.tgz

- Download MD5 sum: 276620e7071b4f0ba18b0c5cf2150c79

- Download size: 2.7 MB

- Estimated disk space required: 38 MB (add 20 MB for tests; transient files can grow up to around 300 MB in the /tmp directory during tests)

- Estimated build time: 0.3 SBU (add 9 to 48 SBU for tests, depending on disk speed and whether ram block device is enabled in the kernel)

### LVM2 Dependencies

#### Required

libaio-0.3.113

#### Optional

mdadm-4.3, Valgrind-3.23.0, Which-2.21, xfsprogs-6.9.0 (all four may be used, but are not required, for tests), reiserfsprogs, thin-provisioning-tools, and vdo

## Kernel Configuration

Enable the following options in the kernel configuration and recompile the kernel:

### Note

There are several other Device Mapper options in the kernel beyond those listed below. In order to get reasonable results if running the regression tests, all must be enabled either internally or as a module. The tests will all time out if Magic SysRq key is not enabled.

    Device Drivers --->
      [*] Block devices --->                                               [BLK_DEV]
        <*/M> RAM block device support                                 [BLK_DEV_RAM]
      [*] Multiple devices driver support (RAID and LVM) --->                   [MD]
        <*/M> Device mapper support                                     [BLK_DEV_DM]
        <*/M>   Crypt target support                                      [DM_CRYPT]
        <*/M>   Snapshot target                                        [DM_SNAPSHOT]
        <*/M>   Thin provisioning target                      [DM_THIN_PROVISIONING]
        <*/M>   Cache target (EXPERIMENTAL)                               [DM_CACHE]
        <*/M>   Mirror target                                            [DM_MIRROR]
        <*/M>   Zero target                                                [DM_ZERO]
        <*/M>   I/O delaying target                                       [DM_DELAY]

    Kernel hacking --->
      Generic Kernel Debugging Instruments --->
        [*] Magic SysRq key                                            [MAGIC_SYSRQ]

## Installation of LVM2

Install LVM2 by running the following commands:

    PATH+=:/usr/sbin                \
    ./configure --prefix=/usr       \
                --enable-cmdlib     \
                --enable-pkgconfig  \
                --enable-udev_sync  &&
    make

The tests use udev for logical volume synchronization, so the LVM udev rules and some utilities need to be installed before running the tests. If you are installing LVM2 for the first time, and do not want to install the full package before running the tests, the minimal set of utilities can be installed by running the following instructions as the `root` user:

    make -C tools install_tools_dynamic &&
    make -C udev  install               &&
    make -C libdm install

To test the results, issue, as the `root` user:

    LC_ALL=en_US.UTF-8 make check_local

Some tests may hang. In this case they can be skipped by adding S=<testname> to the make command. Other targets are available and can be listed with make -C test help. The test timings are very dependent on the speed of the disk(s), and on the number of enabled kernel options.

The tests do not implement the “expected fail” possibility, and a small number of test failures is expected by upstream. More failures may happen because some kernel options are missing. For example, the lack of the dm-delay device mapper target explains some failures. Some tests may fail if there is insufficient free space available in the partition with the /tmp directory. At least one test fails if 16 TB is not available. Some tests are flagged “warned” if thin-provisioning-tools are not installed. A workaround is to add the following flags to configure:

         --with-thin-check=    \
         --with-thin-dump=     \
         --with-thin-repair=   \
         --with-thin-restore=  \
         --with-cache-check=   \
         --with-cache-dump=    \
         --with-cache-repair=  \
         --with-cache-restore= \

Some tests may hang. They can be removed if necessary, for example: rm test/shell/lvconvert-raid-reshape.sh. The tests generate a lot of kernel messages, which may clutter your terminal. You can disable them by issuing dmesg -D before running the tests (do not forget to issue dmesg -E when tests are done).

### Note

The checks create device nodes in the /tmp directory. The tests will fail if /tmp is mounted with the nodev option.

Now, as the `root` user:

    make install
    make install_systemd_units

## Command Explanations

PATH+=:/usr/sbin: The path must contain `/usr/sbin` for proper system tool detection by the configure script. This instruction ensures that PATH is properly set even if you build as an unprivileged user.

`--enable-cmdlib`: This switch enables building of the shared command library. It is required when building the event daemon.

`--enable-pkgconfig`: This switch enables installation of pkg-config support files.

`--enable-udev_sync`: This switch enables synchronisation with Udev processing.

`--enable-dmeventd`: This switch enables building of the Device Mapper event daemon.

make install_systemd_units: This is needed to install a unit that activates logical volumes at boot. It is not installed by default.

## Configuring LVM2

### Config File

`/etc/lvm/lvm.conf`

### Configuration Information

The default configuration still references the obsolete `/var/lock` directory. This creates a deadlock at boot time. Change this (as the `root` user):

    sed -e '/locking_dir =/{s/#//;s/var/run/}' \
        -i /etc/lvm/lvm.conf

## Contents

Installed Programs: blkdeactivate, dmeventd (optional), dmsetup, fsadm, lvm, lvmdump, and lvm_import_vdo. There are also numerous symbolic links to lvm that implement specific functionalities
Installed Libraries: libdevmapper.so and liblvm2cmd.so; optional: libdevmapper-event.so, libdevmapper-event-lvm2.so, libdevmapper-event-lvm2mirror.so, libdevmapper-event-lvm2raid.so, libdevmapper-event-lvm2snapshot.so, libdevmapper-event-lvm2thin.so, and libdevmapper-event-lvm2vdo.so
Installed Directories: /etc/lvm and /usr/lib/device-mapper (optional)

### Short Descriptions

blkdeactivate | is a utility to deactivate block devices
dmeventd | (optional) is the Device Mapper event daemon
dmsetup | is a low level logical volume management tool
fsadm | is a utility used to resize or check filesystem on a device
lvm | provides the command-line tools for LVM2. Commands are implemented via symbolic links to this program to manage physical devices (pv*), volume groups (vg*) and logical volumes (lv*)
lvmdump | is a tool used to dump various information concerning LVM2
vgimportclone | is used to import a duplicated VG (e.g. hardware snapshot)
`libdevmapper.so` | contains the Device Mapper API functions

- Prev

  jfsutils-1.1.15

- Next

  About Logical Volume Management (LVM)

- Up
- Home