LVM Physical Volumes

A physical volume (pv) is any block device (a disk, a partition, a RAID device, an iSCSI device, etc.). All these devices can become a member of a volume group.

The commands used to manage a physical volume start with pv:

pvchange    pvck        pvcreate    pvresize    pvs
pvscan      pvdisplay   pvmove      pvremove

pvcreate

Use the pvcreate command to add devices to lvm. This example shows how to add a disk to lvm.

# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created

This example shows how to add a partition to lvm.

# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

You can also add multiple disks or partitions as target to pvcreate. This example adds three disks to lvm:

# pvcreate /dev/sde /dev/sdf /dev/sdg
  Physical volume "/dev/sde" successfully created
  Physical volume "/dev/sdf" successfully created
  Physical volume "/dev/sdg" successfully created

pvremove

Use the pvremove command to remove physical volumes from lvm. The devices may not be in use.

# pvremove /dev/sdc
  Labels on physical volume "/dev/sdc" successfully wiped

You can also remove multiple disks using the pvremove command. This example removes three disks from lvm:

# pvremoe /dev/sde /dev/sdf /dev/sdg
  Labels on physical volume "/dev/sde" successfully wiped
  Labels on physical volume "/dev/sdf" successfully wiped
  Labels on physical volume "/dev/sdg" successfully wiped

pvresize

When you used fdisk to resize a partition on a disk, then you must use pvresize to make lvm recognize the new size of the physical volume that represents this partition:

# pvresize /dev/sdc1
  Physical volume "/dev/sdc1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

pvchange

With pvchange you can prevent the allocation of a Physical Volume in a new Volume Group or Logical Volume. This can be useful if you plan to remove a Physical Volume:

# pvchange -xn /dev/sde
  Physical volume "/dev/sde" changed
  1 physical volume changed / 0 physical volumes not changed

To revert your previous decision, this example shows you how te re-enable the Physical Volume to allow allocation:

# pvchange -xy /dev/sde
  Physical volume "/dev/sde" changed
  1 physical volume changed / 0 physical volumes not changed

pvmove

With pvmove you can move Logical Volumes from within a Volume Group to another Physical Volume. This must be done before removing a Physical Volume.

# pvmove /dev/sdg
  Moved: 21.4%
  Moved: 54.8%
  Moved: 70.1%
  Moved: 100.0%

pvs

The easiest way to verify whether devices are known to lvm is with the pvs command:

# pvs
  PV         VG         Fmt  Attr PSize   PFree
  /dev/sda2  vg30       lvm2 a-    15.88G      0
  /dev/sdb              lvm2 --   409.60M 409.60M
  /dev/sdc   vg33       lvm2 a-   408.00M 408.00M
  /dev/sdd   vg33       lvm2 a-   408.00M 408.00M

The above example shows that only /dev/sda2 is currently known for use with LVM. It shows that /dev/sda2 is part of vg30 and is almost 16GB in size. It also shows /dev/sdc and / dev/sdd as part of vg33. The device /dev/sdb is known to lvm, but not linked to any Volume Group.

pvscan

The pvscan command will scan all disks for existing Physical Volumes. The information is similar to pvs, plus you get a line with total sizes.

# pvscan
  PV /dev/sdc    VG vg33         lvm2  [408.00 MB / 408.00 MB free]
  PV /dev/sdd    VG vg33         lvm2  [408.00 MB / 408.00 MB free]
  PV /dev/sda2   VG vg30         lvm2  [15.88 GB / 0     free]
  PV /dev/sdb                    lvm2  [409.60 MB]
  Total: 4 [17.07 GB] / in use: 3 [16.67 GB] / in no VG: 1 [409.60 MB]

pvdisplay

Use pvdisplay to get more information about physical volumes:

# pvdisplay /dev/sda2
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg30
  PV Size               15.90 GB / not usable 20.79 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              508
  Free PE               0
  Allocated PE          508
  PV UUID               2bb9351c-d23e-479d-9818-eb2771cc10ce

You can also use pvdisplay without an argument to display information about all physical (lvm) volumes.