# create the physical volume. Partition or disk. Below is partition example.
[root@rhel1 ~]# pvcreate /dev/nvme0n2p3
[root@rhel1 ~]# pvcreate /dev/nvme0n2p4
# verify physical volume
[root@rhel1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a– <19.00g 0
/dev/nvme0n2p3 lvm2 — 2.00g 2.00g
/dev/nvme0n2p4 lvm2 — 2.00g 2.00g
# create volume group name vgdata
[root@rhel1 ~]# vgcreate vgdata /dev/nvme0n2p3
Volume group “vgdata” successfully created
[root@rhel1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz–n- <19.00g 0
vgdata 1 0 0 wz–n- <2.00g <2.00g
[root@rhel1 ~]# vgextend vgdata /dev/nvme0n2p4
Volume group “vgdata” successfully extended
[root@rhel1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz–n- <19.00g 0
vgdata 2 0 0 wz–n- 3.99g 3.99g
# verify volume group
[root@host1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz–n- <19.00g 0
vgdata 1 1 0 wz–n- 5.00g 5.00g
# create logical volume
[root@rhel1 ~]# lvcreate -n lvdata -L 1G vgdata
WARNING: xfs signature detected on /dev/vgdata/lvdata at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/vgdata/lvdata.
Logical volume “lvdata” created.
[root@rhel1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao—- <17.00g
swap rhel -wi-ao—- 2.00g
lvdata vgdata -wi-a—– 1.00g
## If you want to use %100 of disk, use command as below
[root@rhel1 ~]# lvcreate -n lvdata -l %100FREE vgdata
[root@rhel1 ~]# mkfs.xfs /dev/vgdata/lvdata
meta-data=/dev/vgdata/lvdata isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# Optional: Label files system for fstab (just for simlicity. Not necessary
[root@rhel1 ~]# xfs_admin -L “lvdata1” /dev/vgdata/lvdata
writing all SBs
new label = “lvdata1”
# create a mount point
mkdir /mounts/lvm1
# mount persistent put to /etc/fstab
# do not need to LABEL or UUID because lvm device independent
vi /etc/fstab
/dev/vgdata/lvdata /mounts/lvm1 xfs defaults 0 0
or
LABEL=lvdata1 /mounts/lvm1 xfs defaults 0 0
#verify mounts
mount
#findmnt
# Extend LVM “r” parameter is very IMPORTANT!!!
[root@rhel1 ~]# lvextend -r -L +512M /dev/vgdata/lvdata
Phase 1 – find and verify superblock…
Phase 2 – using internal log
– zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan (but don’t clear) agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
– process newly discovered inodes…
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– check for inodes claiming duplicate blocks…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
No modify flag set, skipping phase 5
Phase 6 – check inode connectivity…
– traversing filesystem …
– traversal finished …
– moving disconnected inodes to lost+found …
Phase 7 – verify link counts…
No modify flag set, skipping filesystem flush and exiting.
Size of logical volume vgdata/lvdata changed from 1.00 GiB (256 extents) to 1.50 GiB (384 extents).
Logical volume vgdata/lvdata successfully resized.
meta-data=/dev/mapper/vgdata-lvdata isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 393216
# If you forgot the “r”parameter. You should extend file system manually.
# e2resize ==> ext
# xfs_growfs ==> xfs
