Gentoo Logo

Instalacja LVM2 w Gentoo

Spis treści:

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ądrze 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

(Zapobiegamy skanowaniu wszystkich urządzeń poza dwoma dyskami IDE)
# nano -w /etc/lvm/lvm.conf
(Zwróćmy uwagę na poniższą linię)
   filter = [ "a/.*/" ]
(Zezwolenie na skanowanie /dev/hda i /dev/hdb oraz wykluczenie innych urządzeń)
    filter = [ "a|/dev/hd[ab]|", "r/.*/" ]
(Zapisanie pliku i wyjście z nano)
# 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

(Tworzymy wolumen grup i nazywamy go vg)
# vgcreate vg /dev/hda4
  /etc/lvm/backup: fsync failed: Invalid argument (Ignorujemy to ostrzeżenie ponownie i kolejne podobne także)
  Volume group "vg" successfully created
(Rozszerzamy istniejący wolumen grup)
# 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 (Następne podobne wiadomości zostały pominięte)
# lvcreate -L5G  -nhome vg
# lvcreate -L5G  -nopt  vg
# lvcreate -L10G -nvar  vg
# lvcreate -L2G  -ntmp  vg
(Ponieważ to przykład, pokażmy jak rozszerzyć logiczny wolumen o 5 Gb)
# 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

(Należy się upewnić, że mamy zamontowaną partycję root tak jak to opisuje podręcznik instalacji)
# 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
(Zwróćmy uwagę, że nie zaznaczamy LVM ponieważ dotyczy on LVM1)
  < >  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
(Dodajemy następującą linię)
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

(Wyłączamy)
# vgchange -a n
(Eksportujemy)
# vgexport -a
(Importujemy)
# vgimport -a
(Reaktywujemy)
# 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.



Drukuj

Zaktualizowano 10 lutego 2009

Podsumowanie: Konfiguracja Gentoo z "Logical Volume Manager" w wersji drugiej (LVM2).

Avi Schwartz
Autor

Rajiv Manglani
Współpracownik

Xavier Neys
Redaktor

Robert Frączek
Tłumaczenie

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.