1. Co to jest Menedżer Woluminów Logicznych (Logical Volume Manager LVM)?
LVM umiejscawia się jako logiczna, abstrakcyjna płaszczyzna pomiędzy mediami fizycznymi, czyli dyskami, a systemem plików, który zawiera dane. Zasada działania LVM polega na tym, że fizyczne dyski są dzielone na jednostki pamięci. Jednostki pamięci różnych dysków można łączyć w tak zwane Logical Volumes. Ich pojemność przydziela się następnie poszczególnym partycjom. W ten sposób Logical Volume Manager umożliwia zmianę wielkości partycji w trakcie pracy. Stosownie do zapotrzebowania na przestrzeń dyskową administrator może przydzielać partycjom więcej lub mniej pamięci fizycznej. Załóżmy teoretycznie, że na jednej z partycji brak już wolnego miejsca. Za pomocą LVM można rozwiązać ten problem, przydzielając partycji w trakcie pracy więcej jednostek pamięci. Jednostki mogą pochodzić z tego samego lub z innego dysku w komputerze. LVM umożliwia także zarządzanie woluminami w zdefiniowanych przez użytkownika grupach (np. 'zatrudnienie', 'sprzedaż'), zamiast fizycznych nazw dysków (jak 'sda' i 'sdb').
2. Najnowsza wersja Logical Volume Manager - LVM2.
LVM2 jest (właściwie nowym) narzędziem umożliwiającym wygodne zarządzanie logicznymi woluminami, jednakże jest (wstecznie) kompatybilny z oryginalnym narzędziem LVM (LVM1). Aby móc wykorzystywać LVM2 konieczne jest posiadanie 3 rzeczy:
3. Device Mapper
Jest to nowy sterownik w jądrze linuxa 2.6, wspomagający zarządzanie
woluminami. Umożliwia zdefiniowanie nowego bloku urządzenia złożonego ze zbioru
sektorów istniejących urządzeń. Może być wykorzystane do tworzenia partycji
dysku lub logicznych woluminów. Ten mało obciążający jądro składnik może
doskonale wspomóc zarządzające woluminami narzędzia z przestrzeni użytkownika.
Sterownik ten mapuje zestawy sektorów w odpowiedni 'sposób mapowania' do nowego
logicznego urządzenia zgodnie z tabelą mapowania. Obecnie tabela mapowania musi
być dostarczona do Device Mappera poprzez interfejs ioctl. Wcześniejsze wersje
tego urządzenia miały także interfejs obsługujący zwykłe pliki (dmfs), ale
zaprzestano stosowania tego rozwiązania.
Tabela mapowania zawiera uporządkowaną listę reguł w postaci:
<start> <length> <target> [<target args> ...]
która mapuje <length> sektorów
zaczynając od <start> rodzajem
mapowania target.
Każdy sektor w nowym urządzeniu musi zostać zdefiniowany - nie może być przerw
między regułami. Pierwsza reguła ma <start> = 0. Każda następna reguła zaczyna
się od poprzedniej <start> + <length> + 1
Kiedy jest już dostępny sektor nowego urządzenia logicznego, funkcja make_request sprawdza właściwy rodzaj mapowania, a następnie wysyła żądanie rozpoczęcia nowego mapowania zgodnie z argumentem target. Dostępne są następujące rodzaje mapowania:
Zazwyczaj tabele mapowania są małych rozmiarów. Do przechowywania mapowania sektorów (ilość/rozmiar -> rodzaj mapowania) jest wykorzystane b-drzewo. Jeśli wszystkie elementy b-drzewa są znane z wyprzedzeniem, to możemy zbudować drzewo niewielkich rozmiarów, pomijając te wskaźniki do potomków, które mogą zostać wyliczone.
Device Mapper jest stosunkowo nowym sterownikiem, więc cały czas trwa jego testowanie i nie wszystkie funkcje są automatycznie dostępne (wciąż wychodzą nowe "łatki" rozszerzające jego funkcjonalność i poprawiające słabe elementy).
4. Linki
autor: Mateusz Konikowski