The following article presents an overview of the commands used to manage physical and logical volumes for use with Logical Volume Manager (LVM) in Linux.Initializing Disks or Disk PartitionsBefore considering the various commands for LVM, lets first look at just what is meant by some of the terminology of LVM.
NOTE: Using Logical Volume Manager assumes that the disk or disks you will be using do not have a formatted partition. In Linux you would use the
fdisk
to remove the parition. KEEP IN MIND THAT THIS WILL REMOVE ALL DATA ON THAT DRIVE AND WILL NOT BE ABLE TO BE RECOVERED!!! As an example, lets remove the formatted partition on an external FireWire drive in Linux. Simply run thefdisk
command and follow the screens to remove all partitions.# fdisk /dev/sdaA Logical Volume lives in a Volume Group that is made up of one or more Physical Volumes. All Volume Groups are part of the Logical Volume Manager. Here is a table that lists the three types of Logical Volume's.
Logical Volume Types Logical Volume Physical Device File System volume group one or more disks vgdisplay physical volume group physical extents on a drive pvdisplay logical volume group multiple physical volume groups, one or more disks lvdisplay The following table provides an overview of some of the commands used in LVM and the functions they service.
LVM Commands Command LVM Function vgcreate Create a Volume Group. (Create a subset of the overall LVM.) pvcreate Create a Physical Volume, assign to Volume Group. (Specify a disk for inclusion in the overall LVM.) vgextend Add a new physical disk to a volume group. lvcreate Create a Logical Volume. (storage area for related files that is part of a Volume Group. A Volume Group consists of many logical volumes.) lvextend Increase the size of a Logical Volume. lvreduce Decrease the size of a Logical Volume. lvremove Removes a Logical Volume. (frees the storage area set aside for a logical volume.) vgreduce Reduce a Volume Group. (Reduces the number of disks in a Volume Group.) vgremove Remove a Volume Group. (Removes the designation of a group of disks as a Volume Group.) vgdisplay Volume Group Display. (Displays information about one or more Volume Groups.) pvdisplay Physical Volume Display. (Displays information about one or more Volume Groups.) lvdisplay Logical Volume Display. (Displays information about one or more Logical Volumes.)
Before you can use a disk or disk partition as a physical volume, you will have to initialize it. There are two ways to handle initializing a disk - as an entire disk or as a partition.Create Physical / Logical Volumes
- For entire disks:
- Run the
pvcreate
command:# pvcreate /dev/sdaThis creates a volume group descripter at the start of the disk.- If you get an error that LVM cannot initialize a disk with a partition table on it, first make sure that the disk you are operating on is the correct one. If you are very sure that it is, run the following:
The following commands will destroy the partition table on the disk being operated on. Be very sure it is the correct disk before continuing! # dd if=/dev/zero of=/dev/sda bs=1K count=1 # blockdev --rereadpt /dev/sda- For partitions:
- Set the partition type to 0x8e (Linux LVM) using fdisk or some other similar program.
- Run
pvcreate
on the partition:# pvcreate /dev/sda1This creates a volume group descripter at the start of the /dev/sda1 partition.
First, useView Physical / Logical Volumesfdisk
to remove any formatted partitions on the disk.The following set of commands perform the three steps required to create logical volumes:
- Use
pvcreate
to create a Physical Volume for use by the Logical Volume Manager (LVM).- Use
vgcreate
to create a Volume Group for the drive or for the partition you want to use for RAW devices. Here we do the entire single drive. In our example (below), the command will allow 256 logical partitions and 256 physical partitions with a 128K extent size.- Use
lvcreate
to create the Logical Volume(s) inside the volume group.Now lets scan the LVM:pvcreate -d /dev/sdavgcreate -l 256 -p 256 -s 128k /dev/pv1 /dev/sdalvcreate -L 500m /dev/pv1lvcreate -L 500m /dev/pv1lvcreate -L 300m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 100m /dev/pv1lvcreate -L 200m /dev/pv1lvcreate -L 200m /dev/pv1lvcreate -L 200m /dev/pv1lvcreate -L 200m /dev/pv1lvcreate -L 200m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 150m /dev/pv1lvcreate -L 50m /dev/pv1lvcreate -L 50m /dev/pv1lvcreate -L 500m /dev/pv1Click here to see the output from the above commands.# lvscan lvscan -- no volume groups found
Delete Physical / Logical Volumes
- Use
pvdisplay
to show details about a Physical Volume. If you are unsure of the name of the physical volume you want to view, usepvscan
:# pvscan pvscan -- reading all physical volumes (this may take a while...) pvscan -- ACTIVE PV "/dev/sda" of VG "pv1" [74.55 GB / 69.96 GB free] pvscan -- total: 1 [74.55 GB] / in use: 1 [74.55 GB] / in no VG: 0 [0]# pvdisplay /dev/sda --- Physical volume --- PV Name /dev/sda VG Name pv1 PV Size 74.55 GB [156340476 secs] / NOT usable 2.62 MB [LVM: 2.45 MB] PV# 1 PV Status available Allocatable yes Cur LV 26 PE Size (KByte) 128 Total PE 610683 Free PE 573083 Allocated PE 37600 PV UUID pbYmt7-5nq6-SOAJ-1Y3n-cCqw-mP0P-bAePUG- Use
vgdisplay
to show details about a Volume Group. If you are unsure of the name of the volume group you want to view, usevgscan
:# vgscan vgscan -- reading all physical volumes (this may take a while...) vgscan -- found active volume group "pv1" vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created vgscan -- WARNING: This program does not do a VGDA backup of your volume group# vgdisplay /dev/pv1 --- Volume group --- VG Name pv1 VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 26 Open LV 0 MAX LV Size 8 GB Max PV 256 Cur PV 1 Act PV 1 VG Size 74.55 GB PE Size 128 KB Total PE 610683 Alloc PE / Size 37600 / 4.59 GB Free PE / Size 573083 / 69.96 GB VG UUID DfKOWb-HwLj-kzSf-XpdJ-aLyJ-q9Ym-x6DyVh- Use
lvdisplay
to show details about a Logical Volume. If you are unsure of the name of the logical volume you want to view, uselvscan
:# lvscan lvscan -- ACTIVE "/dev/pv1/lvol1" [500 MB] lvscan -- ACTIVE "/dev/pv1/lvol2" [500 MB] lvscan -- ACTIVE "/dev/pv1/lvol3" [300 MB] lvscan -- ACTIVE "/dev/pv1/lvol4" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol5" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol6" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol7" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol8" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol9" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol10" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol11" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol12" [100 MB] lvscan -- ACTIVE "/dev/pv1/lvol13" [200 MB] lvscan -- ACTIVE "/dev/pv1/lvol14" [200 MB] lvscan -- ACTIVE "/dev/pv1/lvol15" [200 MB] lvscan -- ACTIVE "/dev/pv1/lvol16" [200 MB] lvscan -- ACTIVE "/dev/pv1/lvol17" [200 MB] lvscan -- ACTIVE "/dev/pv1/lvol18" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol19" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol20" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol21" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol22" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol23" [150 MB] lvscan -- ACTIVE "/dev/pv1/lvol24" [50 MB] lvscan -- ACTIVE "/dev/pv1/lvol25" [50 MB] lvscan -- ACTIVE "/dev/pv1/lvol26" [500 MB] lvscan -- 26 logical volumes with 4.59 GB total in 1 volume group lvscan -- 26 active logical volumes# lvdisplay /dev/pv1/lvol15 --- Logical volume --- LV Name /dev/pv1/lvol15 VG Name pv1 LV Write Access read/write LV Status available LV # 15 # open 0 LV Size 200 MB Current LE 1600 Allocated LE 1600 Allocation next free Read ahead sectors 1024 Block device 58:14
Before going into the details of how to drop all of the physical and logical volumes created in this article, it is very common to only want to remove a Logical Volume from a Volume Group. Let's say we no longer neededlvol15
. We can remove it and place its PE's back in the empty pool for the Volume Group. First, unmounting its filesystem (if it is mounted). Next, deactive it withlvchange
and finally delete it withlvremove
. Here is an example that removes thelvol15
:# lvchange -a n /dev/pv1/lvol15 # lvremove /dev/pv1/lvol15 lvremove -- do you really want to remove "/dev/pv1/lvol15"? [y/n]: y lvremove -- doing automatic backup of volume group "pv1" lvremove -- logical volume "/dev/pv1/lvol15" successfully removedNow, it you would like to delete all physical and logical volumes created in this article. In this example, we no longer need the
/dev/pv1
Physical Volume.lvremove -f /dev/pv1/lvol1lvremove -f /dev/pv1/lvol2lvremove -f /dev/pv1/lvol3lvremove -f /dev/pv1/lvol4lvremove -f /dev/pv1/lvol5lvremove -f /dev/pv1/lvol6lvremove -f /dev/pv1/lvol7lvremove -f /dev/pv1/lvol8lvremove -f /dev/pv1/lvol9lvremove -f /dev/pv1/lvol10lvremove -f /dev/pv1/lvol11lvremove -f /dev/pv1/lvol12lvremove -f /dev/pv1/lvol13lvremove -f /dev/pv1/lvol14lvremove -f /dev/pv1/lvol15lvremove -f /dev/pv1/lvol16lvremove -f /dev/pv1/lvol17lvremove -f /dev/pv1/lvol18lvremove -f /dev/pv1/lvol19lvremove -f /dev/pv1/lvol20lvremove -f /dev/pv1/lvol21lvremove -f /dev/pv1/lvol22lvremove -f /dev/pv1/lvol23lvremove -f /dev/pv1/lvol24lvremove -f /dev/pv1/lvol25lvremove -f /dev/pv1/lvol26vgchange -a n /dev/pv1vgremove /dev/pv1