lvm
LVM(8) LVM(8)
NAME
lvm - Linux Logical Volume Manager
DESCRIPTION
lvm is a logical volume manager for Linux. It enables you to concate-
nate several physical volumes (hard disks etc.) into a so called vol-
ume group (VG, see pvcreate(8) and vgcreate(8) ) forming a storage
pool, like a virtual disk. IDE, SCSI disks as well as multiple devices
(MD) are supported. The storage capacity of a volume group can be
divided into logical volumes (LVs), like virtual disk partitions. The
size of a logical volume is in multiples of physical extents (PEs, see
lvcreate(8) ).
The size of the physical extents can be configured at volume group cre-
ation time. If a logical volume is too small or too large you can
change its size at runtime ( see lvextend(8) and lvreduce(8) ). lvcre-
ate(8) can be used to create snapshots of existing logical volumes (so
called original logical volumes in this context) as well.
Creating a snapshot logical volumes grants access to the contents of
the original logical volume it is associated with and exposes the read
only contents at the creation time of the snapshot. This is useful for
backups or for keeping several versions of filesystems online.
If you run out of space in a volume group it is possible to add one or
more pvcreate'd disks to the system and put them into an existing vol-
ume group ( see vgextend(8) ). The space on these new physical volumes
can be dynamically added to logical volumes in that volume group ( see
lvextend(8) ).
To remove a physical volume from the system you can move allocated log-
ical extents to different physical volumes ( see pvmove(8) ). After the
pvmove the volume group can be reduced with the vgreduce(8) command.
Inactive volume groups must be activated with vgchange(8) before use.
vgcreate(8) automatically activates a newly created volume group.
Abbreviations
PV for physical volume, PE for physical extent, VG for volume group, LV
for logical volume, and LE for logical extent.
Command naming convention
All command names corresponding to physical volumes start with pv, all
the ones concerned with volume groups start with vg and all for logical
volumes with lv. General purpose commands for the lvm as a whole start
with lvm.
VGDA
The volume group descriptor area (or VGDA for short) holds the neces-
sary metadata to handle the LVM functionality. It is stored at the
beginning of each pvcreate'd disk. It contains four parts: one PV
descriptor, one VG descriptor, the LV descriptors and several PE
descriptors. LE descriptors are derived from the PE ones at vgchange(8)
time. Automatic backups of the VGDA are stored in files in /etc/lvm-
conf/ (please see vgcfgbackup(8)/vgcfgrestore(8) too). Take care to
include these files in your regular (tape) backups as well.
Limits
Currently up to 99 volume groups with a grand total of 256 logical vol-
umes can be created. The limit for the logical volumes is not caused by
the LVM but by Linux 8 bit device minor numbers.
This means that you can have 99 volume groups with 1-3 logical volumes
each or on the other hand 1 volume group with up to 256 logical volumes
or anything in between these extreme examples.
Depending on the physical extent size specified at volume group
creation time (see vgcreate(8) ), logical volumes of between a maximum
of 512 Megabytes and 1 Petabyte can be created. Actual Linux kernels
on IA32 limit these lvm possibilities to a maximum of 2 Terabytes per
logical and per physical volume as well. This enables you to have as
much as 256 Terabytes under LVM control with all possible 128 scsi disk
subsystems. You can have up to 65534 logical extents (on IA32) in a
logical volume at the cost of 1 Megabyte in kernel memory. Physical
volumes can have up to 65534 physical extents.
/proc filesystem support
The operational state of active volume groups with their physical and
logical volumes can be found in the /proc/lvm/ directory.
/proc/lvm/global contains a summary of all available information
regarding all VGs, LVs and PVs. The two flags for PV status in brack-
ets mean A/I for active/inactive and A/N for allocatable or non-allo-
catable. The four flags for LV status in brackets mean A/I for
active/inactive, R/W for read-only or read/write, D/C for discontiguous
or contiguous and L/S for linear or striped. S can optionally be fol-
lowed by the number of stripes in the set. At /proc/lvm/VGs/ starts a
subdirectory hierarchy containing information about every VG in a dif-
ferent subdirectory named /proc/lvm/VGs/VolumeGroupName where Vol-
umeGroupName stands for an arbitrary VG name. /proc/lvm/VGs/Vol-
umeGroupName/ in turn holds a file group containing summary information
for the VG as a total. /proc/lvm/VGs/VolumeGroupName/LVs/LogicalVolu-
meName holds information for an arbitrary LV named LogicalVolumeName
/proc/lvm/VGs/VolumeGroupName/PVs/PhysicalVolumeName contains informa-
tion for an arbitrary PV named PhysicalVolumeName. All of the informa-
tion in the files below /proc/lvm/VGs/ is presented in attribute/value
pairs to be easyly parsable.
Examples
We have disk partitions /dev/sda3, /dev/sdb1 and /dev/hda2 free for use
and want to create a volume group named "test_vg". Steps required:
1. Change partition type for these 3 partitions to 0x8e with fdisk.
(see pvcreate(8): 0x8e identifies LVM partitions)
2. pvcreate /dev/sda3 /dev/sdb1 /dev/hda2
3. vgcreate test_vg /dev/sda3 /dev/sdb1 /dev/hda2
With our volume group "test_vg" now online, we can create logical vol-
umes. For example a logical volume with a size of 100MB and standard
name (/dev/test_vg/lvol1) and another one named "my_test_lv" with size
200MB striped (RAID0) across all the three physical volumes.
Steps required:
1. lvcreate -L 100 test_vg
2. lvcreate -L 200 -n my_test_lv -i 3 test_vg
Now let's rock and roll. For example create a file system with "mkfs
-t ext2 /dev/test_vg/my_test_lv" and mount it with "mount
/dev/test_vg/my_test_lv /usr1"
See also
e2fsadm(8), lvchange(8), lvcreate(8), lvdisplay(8),
lvextend(8), lvmchange(8), lvmdiskscan(8),
lvmcreate_initrd(8), lvmsadc(8), lvmsar(8),
lvreduce(8), lvremove(8), lvrename(8),
lvscan(8), pvchange(8), pvcreate(8), pvdata(8),
pvdisplay(8), pvmove(8), pvscan(8), vgcfgbackup(8),
vgcfgrestore(8), vgchange(8), vgck(8), vgcreate(8),
vgdisplay(8), vgexport(8), vgextend(8), vgimport(8),
vgmerge(8), vgmknodes(8), vgreduce(8), vgremove(8),
vgrename(8), vgscan(8), vgsplit(8)
AUTHOR
Heinz Mauelshagen <Linux-LVM@Sistina.com>
Heinz Mauelshagen LVM TOOLS LVM(8)