Chapter 7. Managing LVM physical volumes
There are a variety of commands and procedures you can use to manage LVM physical volumes.
7.1. Scanning for block devices to use as physical volumes
You can scan for block devices that may be used as physical volumes with the
lvmdiskscan command, as shown in the following example.
lvmdiskscan/dev/ram0 [ 16.00 MB] /dev/sda [ 17.15 GB] /dev/root [ 13.69 GB] /dev/ram [ 16.00 MB] /dev/sda1 [ 17.14 GB] LVM physical volume /dev/VolGroup00/LogVol01 [ 512.00 MB] /dev/ram2 [ 16.00 MB] /dev/new_vg/lvol0 [ 52.00 MB] /dev/ram3 [ 16.00 MB] /dev/pkl_new_vg/sparkie_lv [ 7.14 GB] /dev/ram4 [ 16.00 MB] /dev/ram5 [ 16.00 MB] /dev/ram6 [ 16.00 MB] /dev/ram7 [ 16.00 MB] /dev/ram8 [ 16.00 MB] /dev/ram9 [ 16.00 MB] /dev/ram10 [ 16.00 MB] /dev/ram11 [ 16.00 MB] /dev/ram12 [ 16.00 MB] /dev/ram13 [ 16.00 MB] /dev/ram14 [ 16.00 MB] /dev/ram15 [ 16.00 MB] /dev/sdb [ 17.15 GB] /dev/sdb1 [ 17.14 GB] LVM physical volume /dev/sdc [ 17.15 GB] /dev/sdc1 [ 17.14 GB] LVM physical volume /dev/sdd [ 17.15 GB] /dev/sdd1 [ 17.14 GB] LVM physical volume 7 disks 17 partitions 0 LVM physical volume whole disks 4 LVM physical volumes
7.2. Setting the partition type for a physical volume
If you are using a whole disk device for your physical volume, the disk must have no partition table. For DOS disk partitions, the partition id should be set to 0x8e using the
cfdisk command or an equivalent. For whole disk devices only the partition table must be erased, which will effectively destroy all data on that disk. You can remove an existing partition table by zeroing the first sector with the following command:
dd if=/dev/zero of=PhysicalVolume bs=512 count=1
7.3. Resizing an LVM physical volume
If you need to change the size of an underlying block device for any reason, use the
pvresize command to update LVM with the new size. You can execute this command while LVM is using the physical volume.
7.4. Removing physical volumes
If a device is no longer required for use by LVM, you can remove the LVM label with the
pvremove command. Executing the
pvremove command zeroes the LVM metadata on an empty physical volume.
If the physical volume you want to remove is currently part of a volume group, you must remove it from the volume group with the
pvremove /dev/ram15Labels on physical volume "/dev/ram15" successfully wiped
7.5. Adding physical volumes to a volume group
To add additional physical volumes to an existing volume group, use the
vgextend command. The
vgextend command increases a volume group’s capacity by adding one or more free physical volumes.
The following command adds the physical volume
/dev/sdf1 to the volume group
vgextend vg1 /dev/sdf1
7.6. Removing physical volumes from a volume group
To remove unused physical volumes from a volume group, use the
vgreduce command. The
vgreduce command shrinks a volume group’s capacity by removing one or more empty physical volumes. This frees those physical volumes to be used in different volume groups or to be removed from the system.
Before removing a physical volume from a volume group, you can make sure that the physical volume is not used by any logical volumes by using the
pvdisplay /dev/hda1-- Physical volume --- PV Name /dev/hda1 VG Name myvg PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 1 PE Size (KByte) 4096 Total PE 499 Free PE 0 Allocated PE 499 PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
If the physical volume is still being used you will have to migrate the data to another physical volume using the
pvmove command. Then use the
vgreduce command to remove the physical volume.
The following command removes the physical volume
/dev/hda1 from the volume group
vgreduce my_volume_group /dev/hda1
If a logical volume contains a physical volume that fails, you cannot use that logical volume. To remove missing physical volumes from a volume group, you can use the
--removemissing parameter of the
vgreduce command, if there are no logical volumes that are allocated on the missing physical volumes.
If the physical volume that fails contains a mirror image of a logical volume of a
mirror segment type, you can remove that image from the mirror with the
vgreduce --removemissing --mirrorsonly --force command. This removes only the logical volumes that are mirror images from the physical volume.