Cały proces dodawania dysku do LVMa można opisać w 6 krokach;
- Stworzenie partycji i ustawienie jej typu na LVM;
- Stworzenie fizycznego wolumenu (PV – Phisical Volume);
- Stworzenie grupy wolumenów (VG – Volume Group) z utworzonego krok wcześniej fizycznego wolumenu;
- Stworzenie logicznego wolumenu (LV – Logical Volume);
- Stworzenie systemu plików na logicznym wolumenie;
- Zamontowanie wolumenu;
Czyli cały proces konfiguracji LVM przebiega z następujący sposób:
Create partition and set type to lvm -> Phisical Volumens (PV) -> Volume Group (VG) -> Logical Volume (LV) -> creating Linux file system -> mount partition
Terminologia:
Volume Group (vg) – podstawowa jednostka LVM, w której skład wchodzą, dyski, partycje, macierze…. (pv – physical volumes).
Z Volume Group /dev/vg/lv można wykreować LV – Logical Volumes
Przykład:
Do serwera zostaje podłączony kolejny dysk fizyczny o poj. 16GB. W celu sprawdzenia poprawności dodania dysku i dołączenia go do LVMa należy wykonywać kolejno kroki wymienione poniżej..
1. Stworzenie partycji i ustawienie jej typu na LVM;
W celu sprawdzenia poprawności dodania dysku należy wykonać polecenie lsblk (list block devices), które wyświetli poniższy wynik:
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 25G 0 disk ├─sda1 8:1 0 600M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 23.4G 0 part └─ol-root 252:0 0 23.4G 0 lvm / sdb 8:16 0 16G 0 disk sr0 11:0 1 9.6G 0 rom
Widać, że dysk został wykryty pod nazwą sdb (SCSI disk B).
Polecenie lsblk pozyskuje informacje z pliku /proc/partitions, dlatego polecenie cat /proc/partitions wyświetli poniższy – podobny aczkolwiek mniej czytelny wynik:
[root@localhost ~]# cat /proc/partitions major minor #blocks name 8 0 26214400 sda 8 1 614400 sda1 8 2 1048576 sda2 8 3 24549376 sda3 11 0 10027008 sr0 252 0 24547328 dm-0 8 16 16777216 sdb
Polecenie fdisk -l /dev/sda wyświela wszystkie partycje na dysku:
[root@localhost ~]# fdisk -l /dev/sda Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: BEFFE3B2-43D7-4E9A-AE0C-BAC834D4B18D Device Start End Sectors Size Type /dev/sda1 2048 1230847 1228800 600M EFI System /dev/sda2 1230848 3327999 2097152 1G Linux filesystem /dev/sda3 3328000 52426751 49098752 23.4G Linux LVM [root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 byte
Założenie partycji na nowo podłączonym dysku poprzez wydanie polecenia fdisk /dev/sdb a następnie parametru n (new), następnie ustawienie typu t (type) pratycji na LVM (kod 8e);
Poniżej widać nowo utworzoną partycję sdb1, z której można utworzyć Phisical Volume.
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 25G 0 disk ├─sda1 8:1 0 600M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 23.4G 0 part └─ol-root 252:0 0 23.4G 0 lvm / sdb 8:16 0 16G 0 disk └─sdb1 8:17 0 16G 0 part sr0 11:0 1 1024M 0 rom
2. Stworzenie fizycznego wolumenu (PV – Phisical Volume).
pvcreate /dev/sdb1
3. Stworzenie grupy wolumenów (VG – Volume Group) o rozmiarze bloku (extent lub PE – Phisical Extend ) 8MB o nazwie np. vgdata, w którego wchodzi PV sdb1.
vgcreate -s 8M vgdata /dev/sdb1
Do wyświetlenia informacji nt. PV i VG służą komendy: pvdisplay oraz vgdisplay.
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name vgdata PV Size <16.00 GiB / not usable 6.98 MiB Allocatable yes PE Size 8.00 MiB Total PE 2047 Free PE 2047 Allocated PE 0 PV UUID 55c4tK-g32P-0nti-WdBc-RA96-uKYh-Fwwbpr --- Physical volume --- PV Name /dev/sda3 VG Name ol PV Size 23.41 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 5993 Free PE 0 Allocated PE 5993 PV UUID zXhR0W-j7O8-9He9-Iol1-oGVh-lkyL-lUQuNE
[root@localhost ~]# vgdisplay --- Volume group --- VG Name vgdata System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 15.99 GiB PE Size 8.00 MiB Total PE 2047 Alloc PE / Size 0 / 0 Free PE / Size 2047 / 15.99 GiB VG UUID K0PHCb-W2Xr-O8J5-I3As-HlZh-vP1l-M4Z2i0 --- Volume group --- VG Name ol System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 23.41 GiB PE Size 4.00 MiB Total PE 5993 Alloc PE / Size 5993 / 23.41 GiB Free PE / Size 0 / 0 VG UUID c24xsa-PRu0-0lqb-74A2-ifD1-ie7M-an8aci
4. Stworzenie logicznego wolumenu (LV – Logical Volume) o nazwie np. lvdata z całej puli dostępnej przestrzeni dyskowej vgdata.
lvcreate -l 100%FREE -n lvdata /dev/vgdata
5. Stworzenie systemu plików XFS na logicznym wolumenie lvdata.
mkfs.xfs /dev/vgdata/lvdata
6. Zamontowanie zasobu.
mkdir /mounts mkdir /mounts/lvm1 vim /etc/fstab /dev/vgdata/lvdata /mount/lvm1 xfs defaults 0 0 mount -a
Do odmontowania zasobu służy polecenie unmount (poleceniem lsof /mnt można sprawdzić jakie są aktualnie otwarte pliki w przypadku problemów z odmontowaniem napędu/dysku)
Polecenie findmnt wyświetla wszystkie zamontowane zosoby.
usunięcie Logical Volume: lvremove / dev/vgdata/lvdata
usunięcie Virtual Group: vgremove /dev/vgdata
powiększenie istniejącej Virtual Group, np ol: vgextend ol /dev/sdb1
powiększenie istniejącego Logical Volume: lvextend -l +100%FREE /dev/ol/root
aktualizacja systemu plików xfs: xfs_growfs /dev/ol/root
Źródła:
https://www.redhat.com/sysadmin/resize-lvm-simple
https://phoenixnap.com/kb/linux-check-disk-space