Wprowadzenie do koncepcji, terminologii i operacji LVM

Wprowadzenie

LVM, czyli Zarządzanie woluminami logicznymi, to technologia zarządzania urządzeniami pamięci masowej, która daje użytkownikom możliwość łączenia i abstrahowania od fizycznego układu urządzeń pamięci masowej w celu łatwiejszego i elastycznego administrowania. Wykorzystując mechanizm mapowania urządzeń jądra systemu Linux, obecna wersja LVM2 może być używana do łączenia istniejących urządzeń pamięci masowej w grupy i przydzielania jednostek logicznych z połączonej przestrzeni w zależności od potrzeb.

Główne zalety LVM to zwiększona abstrakcja, elastyczność i kontrola. Wolumeny logiczne mogą mieć znaczące nazwy, takie jak „bazy danych” lub „root-backup”. Wolumeny mogą być dynamicznie zmieniane wraz ze zmianą zapotrzebowania na miejsce i migrowane między urządzeniami fizycznymi w ramach puli w działającym systemie lub łatwo eksportowane. LVM oferuje również zaawansowane funkcje, takie jak migawki, striping i mirroring.

W tym przewodniku pokrótce omówimy działanie LVM, a następnie zademonstrujemy podstawowe polecenia potrzebne do szybkiego uruchomienia.

Architektura LVM i terminologia

Zanim zagłębimy się w faktyczne polecenia administracyjne LVM, ważne jest, aby mieć podstawowe pojęcie o tym, jak LVM organizuje urządzenia pamięci masowej, i znać terminologię, którą się posługuje.

Sztuktury zarządzania pamięcią masową LVM

LVM działa poprzez nakładanie warstw abstrakcji na fizyczne urządzenia pamięci masowej. Podstawowe warstwy używane przez LVM, zaczynając od najbardziej prymitywnych, to.

  • Woluminy fizyczne:
    • Przedrostek narzędzia LVM: pv...
    • Opis: Fizyczne urządzenia blokowe lub inne urządzenia przypominające dyski (na przykład inne urządzenia utworzone przez mapowanie urządzeń, takie jak macierze RAID) są używane przez LVM jako surowy materiał budowlany dla wyższych poziomów abstrakcji. Wolumeny fizyczne są zwykłymi urządzeniami pamięci masowej. LVM zapisuje nagłówek do urządzenia, aby przypisać je do zarządzania.
  • Grupy wolumenów:
    • Prefiks narzędzia LVM: vg...
    • Opis: LVM łączy woluminy fizyczne w pule pamięci masowej znane jako grupy woluminów. Grupy woluminów abstrahują od właściwości urządzeń bazowych i funkcjonują jako zunifikowane urządzenie logiczne o połączonej pojemności pamięci masowej woluminów fizycznych będących ich składnikami.
  • Woluminy logiczne:
    • Prefiks narzędzia LVM: lv... (generyczne narzędzia LVM mogą zaczynać się od lvm...)
    • Opis: Grupa woluminów może być podzielona na dowolną liczbę woluminów logicznych. Wolumeny logiczne są funkcjonalnie odpowiednikiem partycji na dysku fizycznym, ale z dużo większą elastycznością. Woluminy logiczne są podstawowym komponentem, z którym użytkownicy i aplikacje będą wchodzić w interakcję.

Podsumowując, LVM może być używany do łączenia woluminów fizycznych w grupy woluminów w celu ujednolicenia przestrzeni dyskowej dostępnej w systemie. Następnie administratorzy mogą segmentować grupy woluminów na dowolne woluminy logiczne, które działają jak elastyczne partycje.

Czym są ekstenty?

Każdy wolumin w grupie woluminów jest segmentowany na małe kawałki o stałym rozmiarze, zwane ekstentami. Rozmiar ekstentów jest określany przez grupę woluminów (wszystkie woluminy w ramach grupy mają ten sam rozmiar).

Etenty na woluminie fizycznym są nazywane ekstentami fizycznymi, natomiast ekstenty woluminu logicznego są nazywane ekstentami logicznymi. Wolumin logiczny to po prostu mapowanie, które LVM utrzymuje między logicznymi i fizycznymi rozszerzeniami. Ze względu na ten związek rozmiar zakresu reprezentuje najmniejszą ilość miejsca, które może zostać przydzielone przez LVM.

Ekspensje kryją w sobie wiele z elastyczności i mocy LVM. Logiczne ekstenty, które są prezentowane przez LVM jako zunifikowane urządzenie, nie muszą być mapowane na ciągłe ekstenty fizyczne. LVM może kopiować i reorganizować ekstenty fizyczne składające się na wolumin logiczny bez żadnych zakłóceń dla użytkowników. Wolumeny logiczne mogą być również łatwo rozszerzane lub zmniejszane poprzez proste dodawanie lub usuwanie elementów z wolumenu.

Proste przypadki użycia

Jak już znasz terminologię i struktury używane przez LVM, możemy zbadać kilka typowych sposobów użycia LVM. Zaczniemy od przejścia przez podstawową procedurę, która użyje dwóch dysków fizycznych do utworzenia czterech wolumenów logicznych.

Zaznaczenie urządzeń fizycznych jako woluminy fizyczne

Naszym pierwszym krokiem jest przeskanowanie systemu w poszukiwaniu urządzeń blokowych, które LVM może zobaczyć i zarządzać. Można to zrobić wpisując:

  • sudo lvmdiskscan

Wyjście wyświetli wszystkie dostępne urządzenia blokowe, z którymi LVM może wejść w interakcję:

Output
/dev/ram0 /dev/sda /dev/ram1 . . . /dev/ram15 /dev/sdb 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

Z powyższego wyjścia możemy zobaczyć, że obecnie istnieją dwa dyski i 17 partycji. Partycje to głównie /dev/ram* partycje, które są używane przez system jako dyski Ram w celu zwiększenia wydajności. Dyski w tym przykładzie to /dev/sda, który ma 200G miejsca, oraz /dev/sdb, który ma 100G.

Ostrzeżenie: Upewnij się, że dwukrotnie sprawdziłeś, czy urządzenia, których zamierzasz używać z LVM, nie mają już zapisanych żadnych ważnych danych. Użycie tych urządzeń w LVM spowoduje nadpisanie ich bieżącej zawartości. Jeśli masz już ważne dane na swoim serwerze, wykonaj kopie zapasowe przed kontynuowaniem.

Gdy znamy już urządzenia fizyczne, których chcemy użyć, możemy oznaczyć je jako woluminy fizyczne w LVM za pomocą polecenia pvcreate:

  • sudo pvcreate /dev/sda /dev/sdb
Output
Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created

To zapisze nagłówek LVM do urządzeń, aby wskazać, że są one gotowe do dodania do grupy woluminów.

Można szybko sprawdzić, czy LVM zarejestrował woluminy fizyczne, wpisując:

  • sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g

Jak widać, oba urządzenia są obecne w kolumnie PV, która oznacza wolumen fizyczny.

Add the Physical Volumes to a Volume Group

Teraz, gdy mamy już utworzone wolumeny fizyczne z naszych urządzeń, możemy utworzyć grupę wolumenów. Będziemy musieli wybrać nazwę dla grupy woluminów, którą zachowamy jako ogólną. W większości przypadków będziemy mieli tylko jedną grupę wolumenów na system, aby uzyskać maksymalną elastyczność w alokacji. Dla uproszczenia nazwiemy naszą grupę woluminów LVMVolGroup.

Aby utworzyć grupę woluminów i dodać do niej oba nasze woluminy fizyczne w jednym poleceniu, wpisz:

  • sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output
Volume group "LVMVolGroup" successfully created

Jeśli sprawdzimy ponownie dane wyjściowe pvs, zobaczymy, że nasze woluminy fizyczne są teraz powiązane z nową grupą woluminów:

  • sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

Możemy zobaczyć krótkie podsumowanie samej grupy woluminów, wpisując:

  • sudo vgs
Output
VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

Jak widać, nasza grupa wolumenów posiada obecnie dwa wolumeny fizyczne, zero wolumenów logicznych i ma łączną pojemność urządzeń bazowych.

Tworzenie wolumenów logicznych z puli grupy wolumenów

Teraz, gdy mamy dostępną grupę wolumenów, możemy użyć jej jako puli, z której możemy przydzielić wolumeny logiczne. W przeciwieństwie do konwencjonalnego partycjonowania, podczas pracy z woluminami logicznymi, nie musisz znać układu woluminu, ponieważ LVM mapuje i obsługuje to za Ciebie. Musisz tylko podać rozmiar woluminu i nazwę.

Z naszej grupy woluminów utworzymy cztery oddzielne woluminy logiczne:

  • 10G wolumen „projects”
  • 5G wolumen „www” na treści internetowe
  • 20G wolumen „db” na bazę danych
  • wolumen „workspace”, który wypełni pozostałą przestrzeń

Aby utworzyć wolumeny logiczne, używamy polecenia lvcreate. Musimy podać grupę woluminów, z której ma zostać wyciągnięty, i możemy nadać nazwę woluminowi logicznemu za pomocą opcji -n. Aby bezpośrednio określić rozmiar, można użyć opcji -L. Jeśli zamiast tego chcesz określić rozmiar w kategoriach liczby ekstentów, możesz użyć opcji -l.

Możemy utworzyć pierwsze trzy woluminy logiczne za pomocą opcji -L w następujący sposób:

  • sudo lvcreate -L 10G -n projects LVMVolGroup
  • sudo lvcreate -L 5G -n www LVMVolGroup
  • sudo lvcreate -L 20G -n db LVMVolGroup
Output
Logical volume "projects" created. Logical volume "www" created. Logical volume "db" created.

Możemy zobaczyć woluminy logiczne i ich relacje z grupą woluminów, wybierając opcję custom output z polecenia vgs:

  • sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

Dodaliśmy dwie ostatnie kolumny danych wyjściowych, abyśmy mogli zobaczyć miejsce przydzielone do naszych woluminów logicznych.

Teraz możemy przydzielić resztę miejsca w grupie woluminów do woluminu „workspace” używając flagi -l, która działa w extentach. Możemy również podać wartość procentową i jednostkę, aby lepiej zakomunikować nasze intencje. W naszym przypadku chcemy zaalokować pozostałą wolną przestrzeń, więc możemy przekazać 100%FREE:

  • sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output
Logical volume "workspace" created.

Jeśli ponownie sprawdzimy informacje o grupie woluminów, zobaczymy, że wykorzystaliśmy całą dostępną przestrzeń:

  • sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

Jak widać, wolumin „workspace” został utworzony, a grupa woluminów „LVMVolGroup” jest całkowicie zaalokowana.

Formatowanie i montowanie woluminów logicznych

Teraz, gdy mamy woluminy logiczne, możemy ich używać jak normalnych urządzeń blokowych.

Urządzenia logiczne są dostępne w katalogu /dev tak jak inne urządzenia pamięci masowej. Można uzyskać do nich dostęp w dwóch miejscach:

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

Aby sformatować nasze cztery woluminy logiczne z systemem plików Ext4, możemy wpisać:

  • sudo mkfs.ext4 /dev/LVMVolGroup/projects
  • sudo mkfs.ext4 /dev/LVMVolGroup/www
  • sudo mkfs.ext4 /dev/LVMVolGroup/db
  • sudo mkfs.ext4 /dev/LVMVolGroup/workspace

Albo możemy wpisać:

  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
  • sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

Po sformatowaniu możemy utworzyć punkty montowania:

  • sudo mkdir -p /mnt/{projects,www,db,workspace}

Możemy następnie zamontować woluminy logiczne w odpowiedniej lokalizacji:

  • sudo mount /dev/LVMVolGroup/projects /mnt/projects
  • sudo mount /dev/LVMVolGroup/www /mnt/www
  • sudo mount /dev/LVMVolGroup/db /mnt/db
  • sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

Aby uczynić montaże trwałymi, dodajemy je do /etc/fstab tak jak w przypadku zwykłych urządzeń blokowych:

  • sudo nano /etc/fstab
/etc/fstab
. . ./dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

System operacyjny powinien teraz montować woluminy logiczne LVM automatycznie przy starcie.

Podsumowanie

Mam nadzieję, że w tym momencie będziesz miał dość dobre zrozumienie różnych komponentów, którymi LVM zarządza, aby stworzyć elastyczny system pamięci masowej. Powinieneś także mieć podstawowe pojęcie o tym, jak uruchomić urządzenia pamięci masowej w konfiguracji LVM.

W tym przewodniku tylko krótko omówiliśmy możliwości i kontrolę, jakie LVM zapewnia administratorom systemów Linux. Aby dowiedzieć się więcej na temat pracy z LVM, sprawdź nasz przewodnik dotyczący używania LVM z Ubuntu 16.04.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *