Chapter 7

MANAGING LOGICAL VOLUMES

Physical volumes (any block device such as hard disk, partition) -> Volume group -> Logical volumes (filesystems) -> mounted as /dev/vgx/lvx

LVM creating:

pvcreate /dev/sdb1                # create physical volume
vgcreate vgdata /dev/sdb1         # create the volume group
lvcreate -n lvdata -L 1G vgdata   # create logical volume
mkfs /dev/vgdata/lvdata           # create a filesystem

LVM create example:

VM-ə yeni hard disk (nvme) əlavə etdikdən sonra lsblk yazaraq onun əlavə olunduğunu görürəm:

[root@localhost ali]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n2     259:3    0   20G  0 disk 
└─nvme0n2p1 259:5    0    2G  0 part 



[root@localhost ali]# mkfs.vfat /dev/vgdata/lvdata 
mkfs.fat 4.1 (2017-01-24)

[root@localhost ali]# mkdir /mnt/lvdata

[root@localhost ali]# echo "/dev/vgdata/lvdata /mnt/lvdata vfat defaults 0 0" >> /etc/fstab

[root@localhost ali]# mount -a

[root@localhost ali]# systemctl daemon-reload

pvcreate əmri vasitəsilə LVM tərəfindən istifadə olunması üçün physical volume initialize edirəm (burada partition yox device da ola bilərdi):

[root@localhost ali]# pvcreate /dev/nvme0n2p1 
  Physical volume "/dev/nvme0n2p1" successfully created.

pvs əmri vasitəsilə yeni yaratdığım PV(physical volume) list edirəm:

[root@localhost ali]# pvs
  PV             VG Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 rl lvm2 a--  <49.00g    0 
  /dev/nvme0n2p1    lvm2 ---    2.00g 2.00g

vgcreate əmri vasitəsilə vgdata adlı volume group yaradıram.

bu əmr /dev/vgdata cihazını yaradır.

[root@localhost ali]# vgcreate -s 8M vgdata /dev/nvme0n2p1 
  Volume group "vgdata" successfully created

burada -s 8M dedikdə o nəzərdə tutulur ki (PV/extent=chunk, yəni 2GB/8M=256 ədəd chunk)

vgs əmri vasitəsilə yeni yaratdığım volume group-a baxıram: aşağıdakı nəticədən də görmək olur ki, vgdata adlı volume group-da LV(logical volume) hələki yoxdur.

[root@localhost ali]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  rl       1   2   0 wz--n- <49.00g    0 
  vgdata   1   0   0 wz--n-   1.99g 1.99g

LV (logical volume) yaratmaq üçün lvcreate əmrindən istifadə edirəm:

[root@localhost ali]# lvcreate -L 1G -n lvdata /dev/vgdata
  Logical volume "lvdata" created.

burada yazılan 1G, 128 ədəd logical extent-dən ibarət olacaq. hər biri physical extentə mapped olacaq. Bu əmr /dev/vgdata içindəlvdata yaradır.

Dolayısıyla bu da doğrudur:

lvcreate -l 128 -n lvdata /dev/vgdata (128*8M=1G)

lvdata-ya filesystem yazıram:

[root@localhost ali]# mkfs.vfat /dev/vgdata/lvdata 
mkfs.fat 4.1 (2017-01-24)

lvdata-nı mount etmək üçün əməliyyat sistemində qovluq yaradıram:

[root@localhost ali]# mkdir -v /mnt/lvdata
mkdir: created directory '/mnt/lvdata'

fstab-a dəyişiklik edirəm persistent mount üçün. sonra isə mount -a optionu ilə config səhvlərinə qarşı test edirəm:

[root@localhost ali]# echo "/dev/vgdata/lvdata /mnt/lvdata vfat defaults 0 0" >> /etc/fstab
[root@localhost ali]# mount -a
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
[root@localhost ali]# systemctl daemon-reload

sistemi yenidən başlatdıqdan sonra lsblk nəticəsi:

[ali@localhost ~]$ lsblk
nvme0n2           259:3    0   20G  0 disk 
└─nvme0n2p1       259:4    0    2G  0 part 
  └─vgdata-lvdata 253:2    0    1G  0 lvm  /mnt/lvdata

Device mapper və LVM device adları

Sistemi yenidən başlatdıqdan sonra mount əmrinə baxsaq orada mapper görə bilərik:

[root@localhost ali]# mount | grep lvdata
/dev/mapper/vgdata-lvdata on /mnt/lvdata type vfat (rw,relatime....

Biz LV yaratdıqda LVM device mapper-i istifadə edib müvafiq adlı cihazı /dev/mapper içində yaradır.

Device mapper logical volume üçün bir cihaz adı yaradır (məs. dm-2)

LVM həm /dev/mapper həm /dev/volumegroup qovluqlarını həmin cihaza yönləndirir.

[root@localhost ali]# ls -l /dev/mapper/vgdata-lvdata /dev/vgdata/lvdata 
lrwxrwxrwx. 1 root root 7 Jul 10 18:39 /dev/mapper/vgdata-lvdata -> ../dm-2
lrwxrwxrwx. 1 root root 7 Jul 10 18:39 /dev/vgdata/lvdata -> ../dm-2

dm-2 cihazının adı hər dəfə boot olunanda dəyişə bilər. Əmrlərdə istifadə edərkən hər iki addan istifadə etmək doğrudur:

/dev/mapper/vgdata-lvdata
/dev/vgdata/lvdata

LVMdə LV resize etmək

Shrinking (kiçiltmək) sadəcə ext4 fayl sistemində mümkündür. XFS-də mümkün deyil.

vgs əmri vasitəsilə istifadə olunmayan disk həcminə baxırıq:

[root@localhost ali]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree   
  rl       1   2   0 wz--n- <49.00g       0 
  vgdata   1   1   0 wz--n-   1.99g 1016.00m

hesablanma qaydası: 1 MB = 1024 * 1024 byte

df ilə hazırki ölçüyə baxıram:

[root@localhost ali]# df -h | grep mnt
/dev/mapper/vgdata-lvdata 1022M  4.0K 1022M   1% /mnt/lvdata

hesablanma qaydası: 1 MB = 1000 * 1000

Bir VG-nin ölçüsünü azaltmaq üçün PV-nı VG-dan remove etmək lazımdır. Əgər pvdisplay zamanı PV-də allocated PE olarsa, pvremove əmri error verəcək. Bu səbəbdən PV-da olan PE-ləri digər PV-ya köçürmək lazımdır. Bunun üçün pvmove əmri istifadə edilir.

# allocate olan PE-leri sdb-dan vg-daki diger pv-ya kocurururk:
pvmove /dev/sdb

# sdbc01 adli vg-dan sdb adli PV-ni cixardiriq.
vgreduce sdbc01 /dev/sdb
lvextend

xfs: xfs_growfs
ext4:resize2fs

Silinməsi:

umount /mnt/data
# remove line from /etc/fstab

lvremove /dev/vgdata/lvdata
vgremove vgdata
pvremove /dev/vdb2 /dev/vdb1

Extend olunmasi:

Command
Results

lvextend -l 128

Resize the logical volume to exactly 128 extents in size

lvextend -l +128

Add 128 extents to the current size of the logical volume.

lvextend -L 128M

Resize the logical volume to exactly 128 MiB.

lvextend -L +128M

Add 128 MiB to the current size of the logical volume.

lvextend -l +50%FREE

Add 50 percent of the current free space in the VG to the LV.

Extending swap space:

# swapoff -v /dev/vgname/lvname
swapoff -v /dev/rhel/swap

# lvextend etmekcun rhel vg-da free extend olmalidir.
# vgs rhel emri vasitesile baxa bilerik free varmi.
# eger yoxdursa, yeni disk elave etdikden sonra:

vgextend <vgname> <diskname>
vgextend rhel /dev/sdc

lvextend -L +2G /dev/rhel/swap
swapoff /dev/rhel/swap
mkswap /dev/rhel/swap
swapon -v /dev/rhel/swap

my notes for lab

cfdisk command to resize the partition.
pvresize /dev/sda3
lvresize /dev/mapper/ubuntu--vg-ubuntu--lv /dev/sda3

df -Th (to check if XFS or EXT4)
XFS:
xfs_growfs /dev/mapper/ubuntu--vg-ubuntu--lv
EXT:
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

Last updated

Was this helpful?