The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/Documentation/LVM-HOWTO

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 Heinz Mauelshagen's LVM (Logical Volume Manager) howto.             02/10/1999
    2 
    3 
    4 Abstract:
    5 ---------
    6 The LVM adds a kind of virtual disks and virtual partitions functionality
    7 to the Linux operating system.
    8 
    9 It achieves this by adding an additional layer between the physical peripherals
   10 and the i/o interface in the kernel.
   11 
   12 This allows the concatenation of several disk partitions or total disks
   13 (so-called physical volumes or PVs) or even multiple devices
   14 to form a storage pool (so-called Volume Group or VG) with
   15 allocation units called physical extents (called PE).
   16 You can think of the volume group as a virtual disk.
   17 Please see scenario below.
   18 
   19 Some or all PEs of this VG then can be allocated to so-called Logical Volumes
   20 or LVs in units called logical extents or LEs.
   21 Each LE is mapped to a corresponding PE.
   22 LEs and PEs are equal in size.
   23 Logical volumes are a kind of virtual partitions.
   24 
   25 
   26 The LVs can be used through device special files similar to the known
   27 /dev/sd[a-z]* or /dev/hd[a-z]* named /dev/VolumeGroupName/LogicalVolumeName.
   28 
   29 But going beyond this, you are able to extend or reduce
   30 VGs _AND_ LVs at runtime!
   31 
   32 So...
   33 If for example the capacity of a LV gets too small and your VG containing
   34 this LV is full, you could add another PV to that VG and simply extend
   35 the LV afterwards.
   36 If you reduce or delete a LV you can use the freed capacity for different
   37 LVs in the same VG.
   38 
   39 
   40 The above scenario looks like this:
   41 
   42      /------------------------------------------\
   43      |  /--PV2---\      VG 1      /--PVn---\    |
   44      |  |-VGDA---|                |-VGDA-- |    |
   45      |  |PE1PE2..|                |PE1PE2..|    |
   46      |  |        |     ......     |        |    |
   47      |  |        |                |        |    |
   48      |  |    /-----------------------\     |    |
   49      |  |    \-------LV 1------------/     |    |
   50      |  |   ..PEn|                |   ..PEn|    |
   51      |  \--------/                \--------/    |
   52      \------------------------------------------/
   53 
   54 PV 1 could be /dev/sdc1 sized 3GB
   55 PV n could be /dev/sde1 sized 4GB
   56 VG 1 could be test_vg
   57 LV 1 could be /dev/test_vg/test_lv
   58 VGDA is the volume group descriptor area holding the LVM metadata
   59 PE1 up to PEn is the number of physical extents on each disk(partition)
   60 
   61 
   62 
   63 Installation steps see INSTALL and insmod(1)/modprobe(1), kmod/kerneld(8)
   64 to load the logical volume manager module if you did not bind it
   65 into the kernel.
   66 
   67 
   68 Configuration steps for getting the above scenario:
   69 
   70 1. Set the partition system id to 0x8e on /dev/sdc1 and /dev/sde1.
   71 
   72 2. do a "pvcreate /dev/sd[ce]1"
   73    For testing purposes you can use more than one partition on a disk.
   74    You should not use more than one partition because in the case of
   75    a striped LV you'll have a performance breakdown.
   76 
   77 3. do a "vgcreate test_vg /dev/sd[ce]1" to create the new VG named "test_vg"
   78    which has the total capacity of both partitions.
   79    vgcreate activates (transfers the metadata into the LVM driver in the kernel)
   80    the new volume group too to be able to create LVs in the next step.
   81 
   82 4. do a "lvcreate -L1500 -ntest_lv test_vg" to get a 1500MB linear LV named
   83    "test_lv" and it's block device special "/dev/test_vg/test_lv".
   84 
   85    Or do a "lvcreate -i2 -I4 -l1500 -nanother_test_lv test_vg" to get a 100 LE
   86    large logical volume with 2 stripes and stripesize 4 KB.
   87 
   88 5. For example generate a filesystem in one LV with
   89    "mke2fs /dev/test_vg/test_lv" and mount it.
   90 
   91 6. extend /dev/test_vg/test_lv to 1600MB with relative size by
   92    "lvextend -L+100 /dev/test_vg/test_lv"
   93    or with absolute size by
   94    "lvextend -L1600 /dev/test_vg/test_lv"
   95  
   96 7. reduce /dev/test_vg/test_lv to 900 logical extents with relative extents by
   97    "lvreduce -l-700 /dev/test_vg/test_lv"
   98    or with absolute extents by
   99    "lvreduce -l900 /dev/test_vg/test_lv"
  100  
  101 9. rename a VG by deactivating it with
  102    "vgchange -an test_vg"   # only VGs with _no_ open LVs can be deactivated!
  103    "vgrename test_vg whatever"
  104    and reactivate it again by
  105    "vgchange -ay whatever"
  106 
  107 9. rename a LV after closing it by
  108    "lvchange -an /dev/whatever/test_lv" # only closed LVs can be deactivated
  109    "lvrename  /dev/whatever/test_lv  /dev/whatever/whatvolume"
  110    or by
  111    "lvrename  whatever test_lv whatvolume"
  112    and reactivate it again by
  113    "lvchange -ay /dev/whatever/whatvolume"
  114 
  115 10. if you own Ted Tso's/Powerquest's resize2fs program, you are able to
  116     resize the ext2 type filesystems contained in logical volumes without
  117     destroyiing the data by
  118     "e2fsadm -L+100 /dev/test_vg/another_test_lv"
  119 

Cache object: 47703fe37679b5142702d416effdd089


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.