Instalacja LVM2 w Gentoo
1.
Wstęp
Przewodnik ten bazuje na przykładzie komputera z dwoma dyskami twardymi
IDE. Oznacza to, że należy dostosować swoją konfigurację (dyski, nazwy partycji
oraz ich rozmiary) do posiadanego sprzętu.
Ostrzeżenie:
Należy tu zaznaczyć, że ten dokument nie miał być pełnym wykładem na temat LVM2.
Powstał on jedynie jako uzupełnienie procedury instalacji Gentoo opisanej w Handbook,
Part 1. Pamiętaj, aby przeczytać przewodnik po instalacji Gentoo,
zanim zaczniesz proces instalacji lvm2.
|
Uwaga:
W celu przejrzenia kompletnego przewodnika o LVM, skieruj swoją przeglądarkę na
stronę http://tldp.org/HOWTO/LVM-HOWTO
|
Podstawowe wymagania
Jeżeli przeprowadzamy nową instalację Gentoo, konieczne będzie użycie dysku
rozruchowego z obsługą LVM2 takiego jak np. płyta instalacyjna Gentoo. Wersję
dla architektury x86 można odnaleźć na serwerach lustrzanych Gentoo w katalogu
/releases/x86/current/installcd. Pozostałe architektury także
powinny być obsługiwane.
Jeżeli instalujemy LVM2 na części wolnego dysku działającego już systemu, musimy
posiadać skompilowany moduł LVM2 (dm-mod). Moduł ten jest dostępny
w jądrach gentoo-sources lub gentoo-sources.
Kompilacja jądra i konfiguracja LVM2 jest opisana w dalszej części tego
przewodnika.
Nie każde jądro z serii 2.4 dostępne w Gentoo posiada obsługę LVM2!
Partycje
Nasz przykładowy system posiada 2 dyski twarde IDE podzielone na partycje
następująco:
- /dev/hda1 -- /boot
- /dev/hda2 -- (swap)
- /dev/hda3 -- /
- /dev/hda4 -- Będzie używane przez LVM2
- /dev/hdb1 -- Będzie używane przez LVM2
Ważne:
Należy zwracać szczególną uwagę na nazwy partycji, ponieważ bardzo łatwo jest
pokręcić te wszystkie literki i cyferki. Jeden fałszywy ruch może zniszczyć
przypadkowo źle wskazaną partycję. Ostrzegaliśmy!
|
Pora zaczynać...
2.
Instalacja
Aż do rozdziału 4. Przygotowanie dysków należy postępować zgodnie z
instrukcjami podręcznika instalacji uwzględniając poniższe poprawki:
Należy używać programu fdisk tak jak to opisano w podręczniku instalacji,
ale używając schematu podziału na partycje przedstawionego w powyższym
przykładzie. To tylko przykład, a więc należy dostosować go do swoich
potrzeb.
Stwórzmy małą fizyczną partycję /boot (hda1). W tym przykładzie,
/boot nie będzie
partycją zarządzaną przez LVM2. Partycja ta będzie zawierała bootloader oraz
jądro systemu. 64MB powinny w zupełności wystarczyć nawet dla kilku jąder.
Stwórzmy teraz partycję swap (hda2).
Pora teraz na partycję / (hda3). Jeżeli będziemy chcieli zarządzać partycją
root przez LVM2 (co nie jest zalecane), należałoby zajrzeć dokumentacji
zamieszczonej na końcu tego przewodnika, znajduję się tam odnośnik do
krótkiego opisu jak tego dokonać. Partycja root nie musi być wcale duża, jeżeli
zamierzamy trzymać tylko /opt /usr /home /var oraz
/tmp na grupie wolumenów (vg), to 1GB miejsca powinno wystarczyć.
Uwaga:
Nie jest zalecane, trzymanie następujących katalogów na LVM2:
/etc, /lib, /mnt,
/proc, /sbin, /dev, /root.
Trzymając się tej reguły, nawet jeśli coś zepsujemy, ciągle będziemy mieli
możliwość zalogowania się do systemu (co prawda trochę okaleczonego, ale ciągle
dostępnego dla użytkownika root).
|
W tym momencie partycje /boot, swap oraz root nie używają całego
dysku, stwórzmy więc czwartą partycję na tym dysku i ustawmy jej typ na 8e
(Linux LVM). Posiadając więcej fizycznych dysków przeznaczonych na LVM, należy
stworzyć jedną partycję na każdym i ustawić dla nich ten sam typ (8e).
Uwaga:
Wobec tego, że dzisiejsze dyski mają ogromne pojemności, można wziąć pod uwagę
podział dysków na mniejsze partycje, zamiast tworzyć jedną dużą, która
będzie dodana do wolumenu grup jako jeden blok. LVM2 umożliwia łatwe
rozszerzanie wolumenów. W ten sposób pozostaje miejsce, które można kiedyś
wykorzystać np. do czegoś innego niż kolejna partycja LVM2. W skrócie, nie
należy używać od razu całości dysku, chyba że naprawdę wiadome jest, że będzie
to potrzebne. Dla przykładu podam, że jeden z moich współpracowników podzielił
swój 160 Gb dysk na 8 partycji po 20 Gb każda.
|
Nadszedł czas na utworzenie systemu plików na /dev/hda1 i
/dev/hda3 oraz utworzenie i aktywację parycji swap na
/dev/hda2 tak jak zostało to opisane w podręczniku.
Ładowanie modułu LVM2 dm-mod.
Listing 2.1: Ładowanie modułu LVM2 |
# modprobe dm-mod
|
Przed skanowaniem i aktywacją LVM może zajść potrzeba edytowania
/etc/lvm/lvm.conf w celu wykluczenia jakichś urządzeń. Domyślnie
LVM2 skanuje wszystkie urządzenia, nawet napędy CDROM, przez które mogą
pojawiać się niechciane błędy. W poniższym przykładzie linia zezwalająca na
skanowanie wszystkich urządzeń została zastąpiona przez taką, która wyklucza ze
skanowania wszystkie urządzenia poza naszymi dwoma dyskami IDE.
Listing 2.2: Aktywacja LVM |
# nano -w /etc/lvm/lvm.conf
filter = [ "a/.*/" ]
filter = [ "a|/dev/hd[ab]|", "r/.*/" ]
# vgchange -a y
|
Przygotowanie partycji.
Listing 2.3: Przygotowanie partycji |
# pvcreate /dev/hda4 /dev/hdb1
No physical volume label read from /dev/hda4
Physical volume "/dev/hda4" successfully created
No physical volume label read from /dev/hdb1
Physical volume "/dev/hdb1" successfully created
|
Skonfigurujemy teraz wolumen grup. Wolumen grup jest rezultatem połączenia
wielu fizycznych części dysku bądź dysków w jedno logiczne urządzenie.
W naszym przykładzie, /dev/hda1, /dev/hda2 i
/dev/hda3 są partycjami /boot, swap oraz root, więc
musimy połączyć /dev/hda4 oraz /dev/hdb1. Możemy
tego dokonać wydając jedną komendę, jednak, ponieważ to przykład, utworzymy nasz
wolumen grup, a następnie rozszerzymy go.
Listing 2.4: Tworzenie i rozszerzanie wolumenu grup |
# vgcreate vg /dev/hda4
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully created
# vgextend vg /dev/hdb1
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully extended
|
Tworzymy logiczne wolumeny. Logiczne wolumeny są odpowiednikami partycji
tworzonych za pomocą programu fdisk poza środowiskiem LVM2. W tym przykładzie
stworzymy następujące partycje:
| Katalog |
Wielkość |
| /usr |
10 GB |
| /home |
5 GB |
| /opt |
5 GB |
| /var |
10 GB |
| /tmp |
2 GB |
Odkąd planujemy używać LVM2, nie musimy się zbytnio obawiać o wielkość tych
partycji, ponieważ mogą one być łatwo rozszerzone w razie potrzeby.
Uwaga:
Jak to skomentował Terje Kvernes, łatwiej jest zwiększyć pojemność partycji niż
ją pomniejszyć. Warto zacząć z mniejszymi partycjami i rozszerzać je w
miarę potrzeb.
|
Listing 2.5: Tworzenie i rozszerzanie logicznych wolumenów |
# lvcreate -L10G -nusr vg
Logical volume "usr" created
# lvcreate -L5G -nhome vg
# lvcreate -L5G -nopt vg
# lvcreate -L10G -nvar vg
# lvcreate -L2G -ntmp vg
# lvextend -L+5G /dev/vg/home
|
Na utworzonych logicznych wolumenach tworzymy systemy plików dokładnie tak samo
jak na zwykłych partycjach. Użyjemy na nich systemu plików ext3, jednak każdy
inny będzie działał tak samo dobrze:
Listing 2.6: Tworzenie systemów plików |
# mke2fs -j /dev/vg/usr
# mke2fs -j /dev/vg/home
# mke2fs -j /dev/vg/opt
# mke2fs -j /dev/vg/var
# mke2fs -j /dev/vg/tmp
|
Należy teraz zamontować wszystkie partycje tak jak to nakazuje podręcznik
instalacji, a następnie wszystkie logiczne wolumeny LVM2 tak jak gdyby były one
zwykłymi partycjami. Jedyną różnicą jest adres urządzenia, który znajdziemy w
/dev/vg/nazwa_logicznego_wolumenu.
Listing 2.7: Montujemy logiczne wolumeny |
# mkdir /mnt/gentoo/usr
# mount /dev/vg/usr /mnt/gentoo/usr
# mkdir /mnt/gentoo/home
# mount /dev/vg/home /mnt/gentoo/home
# mkdir /mnt/gentoo/opt
# mount /dev/vg/opt /mnt/gentoo/opt
# mkdir /mnt/gentoo/var
# mount /dev/vg/var /mnt/gentoo/var
# mkdir /mnt/gentoo/tmp
# mount /dev/vg/tmp /mnt/gentoo/tmp
|
Uwaga:
Pozostała część podręcznika instalacji pozostaje w większości niezmieniona, więc
wskażemy tu tylko różnice.
|
Konfigurując jądro systemu, należy pamiętać aby zaznaczyć obsługę LVM2 (nie
wszystkie jądra serii 2.4 mają taką opcję). Zaznaczamy moduł LVM2 jak w
przykładzie:
Listing 2.8: Zaznaczamy moduł LVM2 w jądrach serii 2.4.x |
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
< > Logical volume manager (LVM) support
<M> Device-mapper support
< > Mirror (RAID-1) support
|
Listing 2.9: Zaznaczamy moduł LVM2 w jądrach serii 2.6.x |
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
<M> Device mapper support
|
Skompilowany moduł będzie miał nazwę dm-mod.ko
Kiedy już przebrniemy przez budowę jądra, dodajemy następujący wiersz do
/etc/modules.autoload.d/kernel-{KV}, gdzie {KV} reprezentuje wersję
jądra (2.4 lub 2.6), tak aby moduł LVM2 był ładowany w momencie startu
systemu:
Listing 2.10: Dodajemy moduł LVM2 do /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
dm-mod
|
Teraz, zainstalujmy pakiet lvm2.
Ważne:
Upewniamy się, że /usr/src/linux jest dowiązaniem do aktualnych
źródeł jądra którego używamy, ponieważ ebuild lvm2 zależy od ebuildu
device-mapper, który z kolei sprawdza obecność wymaganych plików źródłowych w
katalogu /usr/src/linux/include/linux.
|
Listing 2.11: Instalujemy LVM2 |
# emerge lvm2
|
Wyedytujmy teraz /etc/lvm/lvm.conf tak jak zostało to już opisane
wcześniej. Poprzednim razem edytowaliśmy plik
będący częścią środowiska instalacyjnego, który zniknie po najlbiższym ponownym
uruchomieniu. Tym razem musimy zmienić prawdziwy plik, znajdujący się wewnątrz
naszego świeżo zainstalowanego Gentoo.
Podczas edycji pliku /etc/fstab, postępujemy według instrukcji
podręcznika instalacji i dodajemy swoje logiczne wolumeny LVM2. Podajemy tu
kilka wierszy stosownych do naszego przykładu:
Listing 2.12: Zawartość pliku /etc/fstab |
/dev/hda1 /boot ext3 noauto,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
# Logiczne wolumeny
/dev/vg/usr /usr ext3 noatime 0 2
/dev/vg/home /home ext3 noatime 0 2
/dev/vg/opt /opt ext3 noatime 0 2
/dev/vg/var /var ext3 noatime 0 2
/dev/vg/tmp /tmp ext3 noatime 0 2
|
Kiedy przebrniemy przez przewodnik instalacji nie zapomnijmy odmontować
wszystkich logicznych wolumenów LVM2 i w dobrej wierze uruchommy następujące
komendy przed ponownym uruchomieniem systemu:
Listing 2.13: Kończymy pracę z LVM2 |
# vgchange -a n
|
Po ponownym uruchomieniu systemu wszystkie partycje powinny być widziane i
podmontowane.
3.
Wznawianie instalacji
Jeżeli z jakichś powodów instalacja Gentoo została przerwana w pewnym momencie,
a chcielibyśmy ją kontynuować, musimy najpierw stworzyć odpowiednie węzły
urządzeń wolumenu:
Listing 3.1: Przywracanie węzłów urządzeń wolumenów |
# vgscan --mknodes
|
Niektóre płyty instalacyjne ze starszymi narzędziami mogą czasem wymagać
reaktywacji wolumenów:
Listing 3.2: Reaktywacja wolumenów |
# vgchange -a n
# vgexport -a vg
# vgimport -a vg
# vgchange -a y
|
4.
Zasoby dokumentacji
5.
Podziękowania
Dziękuję Thilo Bangert oraz
Terje Kvernes za ich pomoc i uwagi
dotyczące tego dokumentu.
Zawartość tego dokumentu jest rozpowszechniana na podstawie licencji Creative Commons -
Attribution / Share Alike.
|