Physical volumes (any block device such as hard disk, partition) -> Volume group -> Logical volumes (filesystems) -> mounted as /dev/vgx/lvx
LVM creating:
Copy 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:
Copy [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):
Copy [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:
Copy [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.
Copy [root@localhost ali]# vgcreate -s 8M vgdata /dev/nvme0n2p1
Volume group "vgdata" successfully created
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.
Copy [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:
Copy [root@localhost ali]# lvcreate -L 1G -n lvdata /dev/vgdata
Logical volume "lvdata" created.
lvdata-ya filesystem yazıram:
Copy [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:
Copy [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:
Copy [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:
Copy [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:
Copy [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.
Copy [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:
Copy /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:
Copy [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:
Copy [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.
Copy # 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:
Copy umount /mnt/data
# remove line from /etc/fstab
lvremove /dev/vgdata/lvdata
vgremove vgdata
pvremove /dev/vdb2 /dev/vdb1
Extend olunmasi:
Resize the logical volume to exactly 128 extents in size
Add 128 extents to the current size of the logical volume.
Resize the logical volume to exactly 128 MiB.
Add 128 MiB to the current size of the logical volume.
Add 50 percent of the current free space in the VG to the LV.
Extending swap space:
Copy # 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
Copy 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