- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- 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"