Logical Volume Manager - Tworzenie i modyfikacja

LVM (Logical Volume Manager) to mechanizm umożliwiający zarządzanie przestrzenią dyskową. Z braku laku jest zastępnikiem solarisowego ZFSa na Linuksach. Posiada kilka pożytecznych cech jak zmiany wielkości przestrzeni dyskowej przeznaczonej dla woluminów logicznych czy grup woluminów … przydatne są też snapshoty.

Z reguły dostajemy zlecenia od DBA, by stworzyć użytkownika mysqlX z katalogiem domowym oraz ze specjalnie przygotowanym zasobem jako wolumin logiczny (Logical Volume) o odpowiedniej wielkości. W takim przypadku poza standardowym krokami:

    1. zmiany w /etc/shadow

    2. zmiany w /etc/passwd

    3. stowrzenie katalogu domowego (z reguły /home/mysqlX)

    4. nadanie odpowiednich uprawnień (z reguły "chown mysqlX:dba /home/mysqlX")

    5. stworzenie katalogu do zamontowania zasobu (z reguły /mysql/mydataX)

    6. nadanie odpowiednich uprawnień (z reguły "chown mysqlX:dba /mysql/mydataX")

LVM - tworzenie

    • Na początek wypada zerknąć ile to przestrzeni jest dostępnej w grupie woluminów (Volume group):

      • $ vgdisplay | grep Free Free PE / Size 591620 / 2,26 TiB

    • Jeśli jest jej wystarczająco, to można stworzyć logiczny wolumin (Logical volume):

      • lvcreate -n <lv_name> -L <lv_size>G <vg_name>

      • np.

      • lvcreate -n mysql-X -L ZG mysql

      • gdzie X numerek mysqla, natomiast Z wielkość wolumenu w gigabajtach

    • Następnie stworzony wolumin trzeba wyposażyć w filesystem np.:

      • mkfs.xfs -f /dev/mapper/mysql-mysql--X

    • Kolejnym krokiem jest podmontowanie zasobu:

      • mount -o nobarrier /dev/mapper/mysql-mysql--X /mysql/mydataX

    • oraz zapewnienie, by zasób montował się również po restarcie maszyny poprzez dodanie do /etc/fstab odpowiedniej linii:

      • /dev/mapper/mysql-mysql--X /mysql/mydataX xfs nobarrier 0 3

    • Po podmontowaniu warto jeszcze raz wykonać 6. punkt, ponieważ pierwsze podmontowywanie zasobów zmienia uprawnienia katalogu na "root:root". Po takiej czynności zasób przy każdym podmontowaniu powinien zachowywać już poprawne prawa.

LVM - modyfikowanie

Czasem zdarza się, że zasób trzeba powiększyć. Schemat postępowania jest prosty: odmontuj, zwiększ wolumin, podmontuj zasób i powiększ mu filesystem.

umount /mysql/mydataX

lvextend -L+ZG /dev/mapper/mysql-mysql--X

gdzie Z to znów liczba gigabajtów, o które zwiększamy wolumin logiczny (można zamiast +Z dać samo Z, ale wtedy będzie to oznaczać liczba gigabajtów, do której zwiększamy wolumin)

mount -o nobarrier /dev/mapper/mysql-mysql--X /mysql/mydataX

xfs_growfs -d /mysql/mydataX

W teorii można próbować bez odmontowywania i podmontowania (wtedy polecenia umount i mount pomijamy). Ale staramy być tutaj bardzo ostrożni i robimy to na naprawdę specjalną prośbę.

UWAGA!! Pod żadnym warunkiem nie należy zmniejszać zasobu poleceniem lvreduce.

==============================================================

Plik z configiem znajduje się w /etc/lvm/

pvcreate /dev/sdb vgcreate mysql /dev/sdb vgcfgrestore -f /a/etc/lvm/backup/<VG_name> mysql

po tym zabiegu powinny pojawić się zasoby LVM, zasoby te są nieaktywne. Aktywacja:

modprobe dm-mod vgchange -ay #11 logical volume(s) in volume group "mysql" now active

tworzenie filesystem dla pojedynczego zasobu:

mkfs.xfs -f /dev/mapper/mysql-mysql--X

tworzenie filesystm dla kilku zasobów:

for i in $(ls /dev/mapper/mysql-mysql--*);do mkfs.xfs -f $i ;done

tworzymy drzewo katalogów (/a/etc/fstab) musi zostać uzupełniony (do poprawienia w skrypcie!!):

awk '/mysql/{print $2}' /etc/fstab|xargs mkdir -p

montujemy:

mount -a

[root@pgwp-2 ~]# lvs

LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert

postgres-1 mywp -wi-ao--- 32,00g

[root@pgwp-2 ~]# vgs

vgs vgscan vgsplit

[root@pgwp-2 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

mywp 1 1 0 wz--n- 68,36g 36,36g

[root@pgwp-2 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb mywp lvm2 a-- 68,36g 36,36g

[root@pgwp-2 ~]#