Heinz Mauelshagen's LVM (Logical Volume Manager) howto.             02/10/1999


Abstract:
---------
The LVM adds a kind of virtual disks and virtual partitions functionality
to the Linux operating system.

It achieves this by adding an additional layer between the physical peripherals
and the i/o interface in the kernel.

This allows the concatenation of several disk partitions or total disks
(so-called physical volumes or PVs) or even multiple devices
to form a storage pool (so-called Volume Group or VG) with
allocation units called physical extents (called PE).
You can think of the volume group as a virtual disk.
Please see scenario below.

Some or all PEs of this VG then can be allocated to so-called Logical Volumes
or LVs in units called logical extents or LEs.
Each LE is mapped to a corresponding PE.
LEs and PEs are equal in size.
Logical volumes are a kind of virtual partitions.


The LVs can be used through device special files similar to the known
/dev/sd[a-z]* or /dev/hd[a-z]* named /dev/VolumeGroupName/LogicalVolumeName.

But going beyond this, you are able to extend or reduce
VGs _AND_ LVs at runtime!

So...
If for example the capacity of a LV gets too small and your VG containing
this LV is full, you could add another PV to that VG and simply extend
the LV afterwards.
If you reduce or delete a LV you can use the freed capacity for different
LVs in the same VG.


The above scenario looks like this:

     /------------------------------------------\
     |  /--PV2---\      VG 1      /--PVn---\    |
     |  |-VGDA---|                |-VGDA-- |    |
     |  |PE1PE2..|                |PE1PE2..|    |
     |  |        |     ......     |        |    |
     |  |        |                |        |    |
     |  |    /-----------------------\     |    |
     |  |    \-------LV 1------------/     |    |
     |  |   ..PEn|                |   ..PEn|    |
     |  \--------/                \--------/    |
     \------------------------------------------/

PV 1 could be /dev/sdc1 sized 3GB
PV n could be /dev/sde1 sized 4GB
VG 1 could be test_vg
LV 1 could be /dev/test_vg/test_lv
VGDA is the volume group descriptor area holding the LVM metadata
PE1 up to PEn is the number of physical extents on each disk(partition)



Installation steps see INSTALL and insmod(1)/modprobe(1), kmod/kerneld(8)
to load the logical volume manager module if you did not bind it
into the kernel.


Configuration steps for getting the above scenario:

1. Set the partition system id to 0x8e on /dev/sdc1 and /dev/sde1.

2. do a "pvcreate /dev/sd[ce]1"
   For testing purposes you can use more than one partition on a disk.
   You should not use more than one partition because in the case of
   a striped LV you'll have a performance breakdown.

3. do a "vgcreate test_vg /dev/sd[ce]1" to create the new VG named "test_vg"
   which has the total capacity of both partitions.
   vgcreate activates (transfers the metadata into the LVM driver in the kernel)
   the new volume group too to be able to create LVs in the next step.

4. do a "lvcreate -L1500 -ntest_lv test_vg" to get a 1500MB linear LV named
   "test_lv" and it's block device special "/dev/test_vg/test_lv".

   Or do a "lvcreate -i2 -I4 -l1500 -nanother_test_lv test_vg" to get a 100 LE
   large logical volume with 2 stripes and stripesize 4 KB.

5. For example generate a filesystem in one LV with
   "mke2fs /dev/test_vg/test_lv" and mount it.

6. extend /dev/test_vg/test_lv to 1600MB with relative size by
   "lvextend -L+100 /dev/test_vg/test_lv"
   or with absolute size by
   "lvextend -L1600 /dev/test_vg/test_lv"
 
7. reduce /dev/test_vg/test_lv to 900 logical extents with relative extents by
   "lvreduce -l-700 /dev/test_vg/test_lv"
   or with absolute extents by
   "lvreduce -l900 /dev/test_vg/test_lv"
 
9. rename a VG by deactivating it with
   "vgchange -an test_vg"   # only VGs with _no_ open LVs can be deactivated!
   "vgrename test_vg whatever"
   and reactivate it again by
   "vgchange -ay whatever"

9. rename a LV after closing it by
   "lvchange -an /dev/whatever/test_lv" # only closed LVs can be deactivated
   "lvrename  /dev/whatever/test_lv  /dev/whatever/whatvolume"
   or by
   "lvrename  whatever test_lv whatvolume"
   and reactivate it again by
   "lvchange -ay /dev/whatever/whatvolume"

10. if you own Ted Tso's/Powerquest's resize2fs program, you are able to
    resize the ext2 type filesystems contained in logical volumes without
    destroyiing the data by
    "e2fsadm -L+100 /dev/test_vg/another_test_lv"

