LVM – Logical Volume Manager i Dyski w Linux

Bardzo ciekawym i nie aż tak skomplikowanym tematem są LVM czyli Logical Volume Manager. Jest to bardzo elastyczny mechanizm do zarządzania przestrzenią dyskową. Dzięki temu narzędziu możemy w locie – podczas działania usług / systemu np. serwera www powiększać przestrzeń dyskową na stronę. Użytkownicy pozostali nie będą nic „czuli”. Nie będziesz musiał wyłączać systemu czy przerywać działania usługi.

Trochę teorii. Jak to działa? Myślę, że ten obrazek pokaże wszystko i nic nie będę musiał pisać.

 

lvm

 

Źródło: ivanvillareal.com

Poniżej przedstawiam parę podstawowych komend których używam.

Dostępne partycje / lub też dyski niezależne np. /dev/sda     /dev/sdb

/dev/sda1 /dev/sda2 /dev/sda3

Zainicjowanie fizycznych partycji do używania LVM:

pvcreate /dev/sda1
pvcreate /dev/sda2
pvcreate /dev/sda3

Wyświetlanie atrybutów fizycznych wolumenów:

pvdisplay & psv

Tworzenie grupy wolumenu:

vgcreate vdysk /dev/sda1 /dev/sda2 /dev/sda3

lub

(gdzie PE – Physical Extents będzie wynosił 32M, domyślnie 4M)

vgcreate -s 32 vdysk /dev/sda1 /dev/sda2 /dev/sda3

Wyświetlanie atrybutów grup wolumenów:

vgdisplay & vgs

Tworzenie logicznego wolumenu w grupie wolumenu:

lvcreate -L 32M -n part1 vdysk

Tworzenie systemu pików na logicznym wolumenie:

mkfs.ext4 /dev/vdysk/part1

Wyświetlanie atrybutów logicznych wolumenów:

lvdisplay & lvs

Tworzenie katalogu i montowanie:

mkdir /lvm
mount /dev/vdysk/part1 /lvm

lub

mount /dev/mapper/vdysk-part1

Powiększanie LVM

Wyświetlanie atrybutów grup wolumenów:

vgs

Rozszerzenie logicznych wolumenów o 12M:

lvextend -L +12M /dev/vdysk/part1

 

lub

Rozszerzenie logicznych wolumenów o 4 jednostki PE:

lvextend -l +4 /dev/vdysk/part1

lub o 50%

lvextend -l +50%FREE /dev/vdysk/part1

 

Następnie aby rozszerzyć nasz logiczny dysk należy:

Rozszerzanie systemy plików:

resize2fs /dev/vdysk/part1

Sprawdzanie wielkości partycji:

df -h

Działa!

Zmniejszanie LVM

Odmontowanie logicznego wolumena zamontowanego w katalogu lvm:

umount /lvm

Zmniejszenie rozmiaru sytstemu plików do 32M

resize2fs /dev/vdysk/part1 32M

Zmiejszenie rozmiaru partycji do 32M

lvreduce -L 32 /dev/vdysk/part1
mount /dev/vdysk/part1 /lvm

Dodawanie dodatkowej partycji/miejsca do volumen grupy

pvcreate /dev/sda4
vgextend vdysk /dev/sda4

Zmniejszanie wielkości partycji

pvresize /dev/sda2 --setphysicalvolumesize 50G

Odłączenie dysku od grupy

(pvmove – Przenosi dane na inne partycje dostępne w volum grupie)

pvmove /dev/sda1

Odłączenie /dev/sda1 z grupy vdysk:

vgreduce vdysk /dev/sda1

Usuniecie oznaczenia LVM z fizycznej partycji

pvremove /dev/sda1

Snapshot

lvcreate -L 12M -n snapszot -s /dev/vdysk/part1

 

 

 

Dyski w systemach Linux

W tej sekcji szybko przypomnę narzędzie do obsługi dysków w systemie linux.

Uruchom konsolę jako administrator i sprawdź jakie dyski i partycje są aktualnie podłączone, wydając polecenie :

fdisk -l

Odmontuj partycję, którą chcesz zmodyfikować poleceniem :

umount /dev/numer_partycji

Następnie za pomocą „fdisk” wejdź na tę partycję, np :

fdisk /dev/sdb

Teraz możesz wykonać zmiany na wybranej partycji za pomocą polecenia :

– „d” usuń partycję
– „n” utwórz nową
– wybierz rodzaj partycji: „p” – główna lub „e” – rozszerzona
– podaj numer pierwszego i ostatniego cylindra
– wybierz rodzaj systemu plków: „l” wyświetli listę kodów partycji
– „w” zapisz zmiany
– zawsze możesz wyświetlić pomoc „m”.

Ciekawie opisane szczegóły partycjonowania opisane są na tym blogu. Ja nie będę się w to zagłębiał. Ponieważ w obecnych czasach wirtualizacji pracuje się głównie na LVM’ach. Z resztą partycjonowanie nie jest takie trudne 😉 wymaga wprawy. Polecam wirtualną maszynę do testów i zabawę małymi kilkoma dyskami o pojemności 1GB/2GB.

 

Formatowanie mkfs

Jeśli chcesz sformatować partycję w trybie tekstowym to możesz to zrobić za pomocą programu „mkfs” wydając polecenie :

mkfs.rodzaj_systemu_plików /dev/numer_partycji

Rodzaj systemu plików możesz wybrać według własnego uznania, np. ext3, ext4, reiserfs, xfs, vfat (fat32), ntfs, jfs jeśli formatujesz partycję dysku twardego, dla pamięci USB wybierz „vfat” wydając polecenie :

mkfs.vfat /dev/sdb1
LVM – Logical Volume Manager i Dyski w Linux
4.8 / 5 z 4 głosów

Autor

Dominik

Zajmuje się tworzeniem stron internetowych i realizacją działań SEO na rzecz dużych i małych przedsiębiorstw. Pracowałem między innymi dla Semahead czy wydawnictwa HELION. Prowadzę szkolenia z zakresu HTML5 i SEO. Każdego dnia odkrywam nowe możliwości, tak by rozwijać Twój biznes w sieci.

8 myśli do „LVM – Logical Volume Manager i Dyski w Linux”

  1. Super sprawa:) Miałby Pan Panie Dominiku chęć dopisać krótki dodatkowy rozdział o wyłaczeniu LVM? Fakt ze to sa raptem 3 komendy ale mogloby sie ot przydać 🙂 zwlaszcza do zabawy z lvm na wirtualnych maszynach

  2. Dzięki za dobry artykuł.

    A co jeśli jeden z dysków padnie? Czy LVM nadal będzie działał? Jeżeli nie, to co trzeba zrobić aby odpalić go na pozostałych (działających) dyskach?

    1. LVM stosuje się zazwyczaj jako pewną warstwę abstrakcji. Uszkodzenia fizyczne dysków powinny być zabezpieczone za pomocą kontrolera RAID. To na tym poziomie powinniśmy zadbać o kwestię związaną z ich awaryjnością. Po prostu kontroler RAID udostępnia nam pewną pule pamięci to na niej operujemy tworząc LVM’y. Nie interesuje nas rzeczywista liczba fizycznych dysków oraz ich stan. W przypadku uszkodzenia, wymieniasz dysk – macierz sama powinna się odbudować. LVM nie powinien odczuć żadnych problemów – może prócz mniejszej wydajności. Wszystko zależy od sprzętowej realizacji danej przestrzeni dyskowej.

      W sytuacji kiedy mam jeden fizyczny dysk i na nim stworzone LVM’y to w sytuacji uszkodzenia, LVMy przestają funkcjonować.

    1. Jeśli nie widzisz potencjału w dodawaniu w locie przestrzeni dyskowej bez konieczności wyłączania serwera danej usługi która musi działać bez przerwy – no to może nie jest Ci potrzebny LVM. To wygoda, głównie dla administratorów centrów danych, rozwiązań chmurowych. Pozdrawiam i dziękuję za komentarz!

Dodaj komentarz

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