Physical volumes stay unusable for logical volumes until they belong to a volume group. Creating the VG combines one or more initialized PVs into an allocation pool that LVM can later divide into logical volumes.

The vgcreate command takes the new volume group name first and the physical volume paths after it. The examples use two unused PVs named /dev/sdb and /dev/sdc to create a volume group named vgdata.

Create the physical volumes before the VG so device selection, old signatures, and PV metadata are confirmed before the storage pool changes. vgcreate can initialize raw block devices, but keeping pvcreate separate makes the destructive disk-preparation step easier to review.

Steps to create an LVM volume group:

  1. List the physical volumes that should form the volume group.
    $ sudo pvs --options pv_name,vg_name,pv_size,pv_free /dev/sdb /dev/sdc
      PV       VG PSize   PFree
      /dev/sdb    100.00g 100.00g
      /dev/sdc    100.00g 100.00g

    A blank VG column means each PV is initialized but not assigned to a volume group.

  2. Create the volume group from the selected physical volumes.
    $ sudo vgcreate vgdata /dev/sdb /dev/sdc
      Volume group "vgdata" successfully created

    Replace vgdata and the device paths with the confirmed names. Adding the wrong PV attaches that disk or partition to the new storage pool.

  3. Verify the new volume group capacity.
    $ sudo vgs vgdata
      VG     #PV #LV #SN Attr   VSize    VFree
      vgdata   2   0   0 wz--n- 200.00g 200.00g

    #PV should match the number of physical volumes supplied to vgcreate, and VFree should show the space available for future logical volumes.

  4. Confirm that the physical volumes now belong to the new volume group.
    $ sudo pvs --options pv_name,vg_name,pv_attr,pv_size,pv_free /dev/sdb /dev/sdc
      PV       VG     Attr PSize   PFree
      /dev/sdb vgdata a--  100.00g 100.00g
      /dev/sdc vgdata a--  100.00g 100.00g

    The Attr value a-- shows the PV is allocatable. The space remains free until a logical volume consumes it.