|
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:
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:
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ć:
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
aby wszystkie aktywować wywołujemy:
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:
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.
|
|