Device Mapper

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