Logical Volument Managment (LVM)

Wstęp

Logical Volument Managment (LVM) pozwala stworzyć bardzo elastyczny system zardządzania dyskami i przestrzenią dyskową (zwiększać w locie wielkość partycji oraz tworzyć partycje rozciągnięte między partycjami fizycznymi i dyskami fizycznymi).
LVM składa się z trzech warstw:

  • Logival Volumens (lv) – są to odpowiedniki partycji, je montujemy w systemie oraz na nich zapisujemy dane,
  • physical volumes (pv) – są to volumeny bezpośrednio związane z partycjami dyskowymi (np. /dev/hda1, /dev/sda3),
  • VG (volume groups) – grupują fizyczne wolumeny w grupy twrzorząc „pule przesrzeni” z ktorych tworzeone są logical Volumens, dzięki grupom możliwe jest więc tworzenie partycji przekraaczających rozmiarem pojedyńcze dyski. Grupy volumentów można porównać do wirtualnych dysków na których tworzymy partycje (logical Volumens).

Ze względów technicznych nie będziemy omawiać starszej wersji LVM, tylko nowszą LVM2.

Operacje podstawowe

Volumeny fizyczne (phisical volumens – pv)

Tworzenie volumenów fizycznych (pv)

Tworzenie volumenu fizycznego na partycji /dev/hdb1

pvcreate /dev/hdb1

Uwaga: Tworzenie fizycznych volumenów na całych dyskach jest niezalecane, gdyż nie wszystkie programy do pracy z dyskami i partycjami poprawnie rozpoznają taki układ i mogą oznaczyć miejsce jako wolne.

pvdisplay – informacje o fizycznych volumenach

Polcenie vpdisplay pozwoli nam obejrzeć informacje dostepnych fizycznych volumenach w systemie.

[root@localhost lvmtest]# pvdisplay
--- Physical volume ---
PV Name               /dev/sdb1
VG Name               lvm
PV Size               1019.75 MB / not usable 3.75 MB
Allocatable           yes
PE Size (KByte)       4096
Total PE              254
Free PE               254
Allocated PE          0
PV UUID               HFMMMi-pkwC-IOxP-E77D-C160-xKQY-HZatwd

Grupy volumenów (volumen groups – vg)

Tworzenie grup volumenów

Poleceniem vgcreate tworzymy z fizycznych volumenów grupę volumenów. Jako pierwszy parametr podajemy nazwę przyszłej grupy volumenów a na końcu nazwy fizycznych volumentów (urządzeń przetworzonych w poprzednim punkcie na fizyczne volumeny), które włączymy do grupy:

vgcreate sys /dev/hdd2 /dev/hdc1

Uwaga: Nie można utworzyć grupy wolumenów, ktora nie zawiera żadnego volumena fizycznego (jest pusta).

Raport o grupach volumenów
debian:/usr/share/doc# vgs
File descriptor 3 left open
File descriptor 5 left open
File descriptor 7 left open
  VG      #PV #LV #SN Attr   VSize   VFree
  debian    1   3   0 wz--n- 772,00M    0
  vgdata1   2   0   0 wz--n-   1,99G 1,99G
 

Logiczne volumeny (logical volumens -lv)

Tworzenie logicznych volumenów (lv)
lvcreate -L 5000 -n homes sys

Następne na tak utworznym volumenie należy utworzyć system plików:

mkfs.ext3 /dev/sys/homes

Jaki system plików wybrać?

ext2/ext3 może mieć problemy ze zmianą wielkości partycji podczas pracy on-line (wymaga odmountowania, mozliwe jest jednak zastosowanie patch-a ex2online). 

Dalsze zarządzanie volumenami

Zmiana wielkości logicznego volumenu

Zmiane wielkości volumenu logicznego przewaznie odbywa sie w locie :). Wszystko jednak zależy od systemu plików na którym pracujemy.

Zmniejszenie volumenu logincznego i  partycji, ktora jest na nim:

umount /dev/lvm/testlv
resize_reiserfs /dev/lvm/testlv
mount -treiserfs /dev/lvm/testlv /home

lvreduce -L500M /dev/lvm/testlv

Zwiększenie volumenu logicznego i  partycji, ktora na niej jest:

pvcreate /dev/sda1
vgextend -L9.8G extra
lvextend -L9.8G /dev/extra/pub
resize2fs /dev/extra/pub

Dodanie nowego fizycznego volumenu do grupy volumenów

Napierw tworzymy nowy volumen fizyczny (jeżeli jeszcze go nie mamy)

debian:~# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

A następnie dodajemy go do volumenu logicznego

debian:~# vgextend debian /dev/sdb1
Volume group "debian" successfully extended

Inne działania

Scanowanie urządzeń w systemie w celu wykrycia volumenów

debian:/usr/share/doc# lvmdiskscan
File descriptor 3 left open
File descriptor 5 left open
File descriptor 7 left open
  /dev/ram0  [        8,00 MB]
  /dev/dm-0  [      775,54 MB] LVM physical volume
  /dev/ram1  [        8,00 MB]
  /dev/sda1  [      243,14 MB]
  /dev/dm-1  [      512,00 MB]
  /dev/ram2  [        8,00 MB]
  /dev/dm-2  [       96,00 MB]
  /dev/ram3  [        8,00 MB]
  /dev/dm-3  [      164,00 MB]
  /dev/ram4  [        8,00 MB]
  /dev/ram5  [        8,00 MB]
  /dev/sda5  [      776,55 MB]
  /dev/ram6  [        8,00 MB]
  /dev/ram7  [        8,00 MB]
  /dev/ram8  [        8,00 MB]
  /dev/ram9  [        8,00 MB]
  /dev/ram10 [        8,00 MB]
  /dev/ram11 [        8,00 MB]
  /dev/ram12 [        8,00 MB]
  /dev/ram13 [        8,00 MB]
  /dev/ram14 [        8,00 MB]
  /dev/ram15 [        8,00 MB]
  /dev/sdb   [        1,00 GB] LVM physical volume
  /dev/sdc   [        1,00 GB] LVM physical volume
  0 disks
  21 partitions
  2 LVM physical volume whole disks
  1 LVM physical volume

Raport o fizycznych volumenach (pv) dla skryptów

debian:/usr/share/doc# pvs
  PV         VG      Fmt  Attr PSize    PFree
  /dev/dm-0  debian  lvm2 a-    772,00M       0
  /dev/sdb   vgdata1 lvm2 a-   1020,00M 1020,00M
  /dev/sdc   vgdata1 lvm2 a-   1020,00M 1020,00M

Sprwadzenie poprawnosci matadabych grup volumenów

Do tego zadania można użyć polecenia vgck.

vgmknodes

recreate volume group directory and logical volume special files

przenoszenie pv pomiędzy dyskami

[root@localhost ~]# lvdisplay -m /dev/VolGroup00/LogVol01

  — Logical volume —

  LV Name                /dev/VolGroup00/LogVol01

  VG Name                VolGroup00

  LV UUID                GQ2lTR-rVP0-WQ0v-LBcE-XfpE-HDrb-jV3KDC

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                320.00 MB

  Current LE             10

  Segments               1

  Allocation             inherit

  Read ahead sectors     0

  Block device           253:1

  — Segments —

  Logical extent 0 to 9:

    Type                linear

    Physical volume     /dev/sda2

    Physical extents    48 to 57
[root@localhost ~]# pvmove -n /dev/VolGroup00/LogVol01 /dev/sda2 /dev/sdb

  /dev/sda2: Moved: 30.0%

  /dev/sda2: Moved: 60.0%

  /dev/sda2: Moved: 90.0%

  /dev/sda2: Moved: 100.0%

[root@localhost ~]#

[root@localhost ~]# lvdisplay -m /dev/VolGroup00/LogVol01

  — Logical volume —

  LV Name                /dev/VolGroup00/LogVol01

  VG Name                VolGroup00

  LV UUID                GQ2lTR-rVP0-WQ0v-LBcE-XfpE-HDrb-jV3KDC

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                320.00 MB

  Current LE             10

  Segments               1

  Allocation             inherit

  Read ahead sectors     0

  Block device           253:1

  — Segments —

  Logical extent 0 to 9:

    Type                linear

    Physical volume     /dev/sdb

    Physical extents    0 to 9

Backupowanie danych

backupowanie informacji o grupach volumenów

W przypadku backupowania danych o grupach volumenów przydatne mogą być polecenia vgcfgbackup oraz vgcfgrestore.

Sprawdzenie wersji LVM

lvmiopversion
200

Uwagi

 

 

 

  • LVM powoduje zwiększenie zagrożenia utratą danych związanych z fizycznymi uszkodzeniami dysków. Zaleca się używanie go razem z systemami RAID.
  • Dla pojedynczego dysku zaleca sie stworzenie jednego fizycznego volumenu (pv), gdyz tylko wtedy moznabyc pewnym ze wprowadzenie striped LV nie obnizy wydajnosci
  • Partycja /boot nie moze byc na umieszczona na logicznych wolumenach, wynika to z problemow z bootowaniem systemu.  

     

     

    Zalety

    •  lvm pozwala lepiej zarządzać miejscem na partycjach
    • lvm pozwala na lepsze zardządanie przestrzeniami nazw partyacji (np. mozna nazwać partycje swap czy home :)).
    • Po dodaniu nowej partycji nie trzeba restartowac systemu 🙂

    Wady

    •  Większa wrażlliwość na uszkodzenia dysków (zaleca się stosowanie rozwiazań RAID)

     

    W Internecie

    http://www.tldp.org/HOWTO/LVM-HOWTO/

     

    Todo

    jaki system plików dla LVM jest najlepszy 😉

Dodaj komentarz