Strona główna‎ > ‎

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 ~]#


Comments