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.
Related: How to create an LVM physical volume
Related: How to create an LVM logical volume
Related: How to add a disk to an LVM 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.
$ 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.
$ 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.
$ 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.