Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Pamięci masowe
LVM
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

LVM

<- ->
 

LVM (Logical Volume Management) to system zaawansowanego zarządzania przestrzenią dyskową, który jest o wiele bardziej elastyczny, niż klasyczne partycje dyskowe. To wiąże się z bardziej złożoną konstrukcją, która składa się z następujących struktur:

  • PV (physical volumes) - fizyczne woluminy: są bezpośrednio związane z partycjami dyskowymi (np. /dev/hda1, /dev/sdb3).

  • VG (volume groups) - grupy woluminów: składają się z co najmniej jednego PV, ich wielkość to suma objętości wszystkich PV należących do danej grupy. Uzyskane miejsce dyskowe może być dowolnie dysponowane pomiędzy kolejne LV.

  • LV (logical volumes) - woluminy logiczne: są obszarami użytecznymi dla systemu (podobnie jak partycje dyskowe). LV są obszarami wydzielonymi z VG, zatem suma wielkości woluminów nie może zatem przekraczać objętości VG, do którego należą.

Schemat LVM-u, który zostanie użyty jako przykład w tym rozdziale:

 PV1   PV2
   \  /
    VG
   / | \
LV1 LV2 LV3

Planowanie woluminów

Musimy wyznaczyć urządzenia blokowe których chcemy użyć do stworzenia struktur PV. Jeśli główny system plików ma być umieszczony na woluminie logicznym to musimy przeznaczyć małą partycję dla gałęzi /boot, gdyż bootloadery lilo i grub nie potrafią czytać danych z woluminów. Szczegółowy opis dzielenia dysków na partycje zamieściliśmy w tym dokumencie.

Załóżmy, że mamy dwa dyski twarde po 250GB (/dev/sda i /dev/sdb), których powierzchnię chcemy połączyć i rozdysponować pod system operacyjny. Jako, że rootfs także będzie na woluminie to rozplanowanie miejsca może wyglądać następująco:

  • /dev/sda1: mała partycja na /boot o pojemności 50MB

  • /dev/sda2: druga partycja dla woluminów (reszta dysku)

  • /dev/sdb: cały dysk dla woluminów

VG będzie miało rozmiar ~500GB miejsca, z czego 400GB przydzielimy do użytku, a resztę pozostawimy dla przyszłych, nieokreślonych na razie zastosowań. Miejsce na VG rozdysponujemy następująco:
  • swap: 5GB

  • / (rootFS): 25GB

  • /home: 370GB

Instalacja

Omawiamy implementację LVM2, zatem instalujemy pakiet lvm2, jeśli LVM ma być użyty jako główny system plików to potrzebujemy jeszcze pakiet lvm2-initrd do wygenerowania odpowiedniego obrazu initrd.

Budowanie woluminów

Ładujemy moduł device mappera:

# modprobe dm-mod

Dzielimy dysk /dev/sda na dwie opisane powyżej partycje, a następnie wskazujemy urządzenia Physical Volumes:

# pvcreate /dev/sda2 /dev/sdb

tworzymy Volume Group o nazwie "vgsys" z wskazanych powyżej PV:

# vgcreate vgsys /dev/sda2 /dev/sdb

W powstałej VG tworzymy woluminy o podanych pojemnościach (-L) i dowolnych nazwach (-n):

# lvcreate -L 5GB -n swap vgsys
# lvcreate -L 25GB -n rootfs vgsys
# lvcreate -L 370GB -n home vgsys

na naszym VG pozostaje 100GB wolnego miejsca, które możemy rozdysponować w przyszłości (przykład dalszej części rozdziału). Rzucającą się w oczy cechą woluminów logicznych jest możliwość swobodnego nadawania im nazw, co znacznie ułatwia utrzymanie porządku. Do utworzonych powyżej woluminów odwołujemy się za pomocą utworzonych przed chwilą urządzeń: /dev/vgsys/swap, /dev/vgsys/rootfs i /dev/vgsys/home. Woluminy są już gotowe do pracy, musimy jeszcze tylko utworzyć na nich systemy plików, co robimy jak w przypadku tradycyjnych partycji np.:

# mkswap /dev/vgsys/swap
# mkfs.xfs /dev/vgsys/rootfs
# mkfs.xfs /dev/vgsys/home

partycja dla gałęzi /boot:

# mkfs.ext2 /dev/sda1

Teraz montujemy woluminy w klasyczny sposób i jeśli wszystko przebiegło bez błędów dokonujemy odpowiednich modyfikacji w /etc/fstab.

Konfiguracja startowa

Woluminy są automatycznie aktywowane przez rc-skrypt /etc/rc.d/rc.sysinit lub initrd. Moduł device mappera również jest ładowany automatycznie. Jeśli chcemy umieścić główny system plików na LV, to musimy jeszcze wygenerować nowy obraz initrd, z obsługą LVM. Zostało to szczegółowo przedstawione w tym dokumencie. W konfiguracji bootloadera ustawiamy opcję 'root=' na /dev/vgsys/rootfs. Teraz instalujemy system, instalujemy bootloader i możemy zrestartować maszynę.

Gdy zajdzie potrzeba "ręcznego" aktywowania woluminów (np. spod RescueCD), to na początek musimy się upewnić, że jest załadowany moduł dm-mod. Kernel nie zgłasza komunikatów o odnalezieniu woluminów, tak jak ma to miejsce z partycjami, należy je odszukać za pomocą odpowiednich narzędzi: lvmdiskscan i lvscan. Jeśli odnaleźliśmy żądane struktury, to możemy je aktywować:

# vgchange -a y

Narzędzia diagnostyczne

Skrócone informacje o każdym z rodzaju komponentów (PV/VG/LV) wyświetlimy za pomocą programów pvs, vgs, lvs. Więcej informacji uzyskamy za pomocą programów: pvdisplay, vgdisplay, lvdisplay.

Do niektórych operacji z woluminami będziemy musieli je odmontować i deaktywować. Aby deaktywować wszystkie woluminy użyjemy polecenia

# vgchange -a n

aby wszystkie aktywować wywołujemy:

# vgchange -a y

Zarządzanie: powiększanie woluminu

Teraz przedstawimy potęgę LVM-a: pokażemy jak powiększyć wolumin, gdy dochodzimy do wniosku, że przeznaczonego miejsca jest za mało. Załóżmy, że mamy woluminy utworzone zgodnie z wcześniejszymi przykładami i chcemy przeznaczyć całą dostępną wolną przestrzeń na naszym VG (100GB) dla /dev/vgsys/homes:

# lvextend  -l 100%VG  /dev/vgsys/home

Teraz, kiedy wolumin jest powiększony, musimy rozszerzyć system plików, w naszych przykładach jest to XFS, zatem musimy podmontować wolumin, a następnie:

# xfs_growfs /home

Operacja trwa krótko i nie powoduje utraty danych, jednak jak przypadku każdych operacji dyskowych, powinniśmy wcześniej wykonać kopię zapasową. Każdy system plików posiada własne narzędzia do zmiany rozmiaru systemu plików, szczegóły w ich dokumentacji.

Porady

Woluminy LVM powodują zwiększone ryzyko uszkodzenia danych, gdyż awaria jednego dysku może spowodować utratę wszystkich danych. Z tego powodu zaleca się tworzenie woluminów na macierzach RAID.

 
<- ->