How to create LVM on Linux systems? How to Extend LVM?

# 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

By:

Posted in:


Leave a comment