Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

LVM — zarządzanie woluminami logicznymi na Linux

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Linux / Storage

Standardowe partycje mają stały rozmiar — gdy zapełnisz /var na serwerze produkcyjnym o 3:00 w nocy, bez LVM masz problem. LVM (Logical Volume Manager) to warstwa abstrakcji między dyskami fizycznymi a systemem plików, która pozwala rozszerzać woluminy online, tworzyć snapshoty i łączyć wiele dysków w jeden elastyczny pool przestrzeni dyskowej.

Architektura LVM: PV → VG → LV

LVM ma trójwarstwową architekturę:

  • PV (Physical Volume) — fizyczny dysk lub partycja przygotowana dla LVM przez pvcreate. Może to być cały dysk (/dev/sdb) lub partycja (/dev/sdb1).
  • VG (Volume Group) — pool przestrzeni złożony z jednego lub wielu PV. Możesz dodawać nowe PV do VG gdy brakuje miejsca. Analogia: VG to pula.
  • LV (Logical Volume) — wolumin logiczny wycięty z VG, na którym tworzysz system plików (ext4, xfs). To odpowiednik tradycyjnej partycji. Analogia: LV to naczynie z puli.

Tworzenie LVM od podstaw

Scenariusz: masz dodatkowy dysk /dev/sdb (100 GB) i chcesz użyć go przez LVM:

# Krok 1: Instalacja narzędzi LVM (jeśli brakuje)
sudo apt install lvm2          # Debian/Ubuntu
sudo yum install lvm2          # CentOS/RHEL

# Krok 2: Utwórz Physical Volume
sudo pvcreate /dev/sdb
# Physical volume "/dev/sdb" successfully created.

# Krok 3: Utwórz Volume Group
sudo vgcreate vg0 /dev/sdb
# Volume group "vg0" successfully created

# Krok 4: Utwórz Logical Volume (80 GB z 100 GB puli)
sudo lvcreate -L 80G -n data vg0
# Logical volume "data" created.

# Lub użyj całego dostępnego miejsca:
sudo lvcreate -l 100%FREE -n data vg0

Formatowanie i montowanie

# Utwórz system plików ext4
sudo mkfs.ext4 /dev/vg0/data

# Utwórz punkt montowania
sudo mkdir -p /data

# Zamontuj tymczasowo
sudo mount /dev/vg0/data /data

# Trwałe montowanie przez /etc/fstab
# Użyj UUID (bezpieczniejszy niż nazwa urządzenia)
sudo blkid /dev/vg0/data
# /dev/vg0/data: UUID="abcd-1234" TYPE="ext4"

# Dodaj do /etc/fstab:
# UUID=abcd-1234  /data  ext4  defaults,nofail  0  2

# Weryfikacja
df -h /data

Rozszerzenie LV online — bez downtime

To najważniejsza cecha LVM — możesz rozszerzyć zamontowany wolumin bez zatrzymywania aplikacji:

# Sprawdź bieżący stan
sudo lvs
sudo vgs                       # Sprawdź ile miejsca zostało w VG

# Rozszerz LV o 10 GB
sudo lvextend -L +10G /dev/vg0/data

# Lub użyj całego wolnego miejsca w VG
sudo lvextend -l +100%FREE /dev/vg0/data

# Rozszerz system plików ext4 (online, zamontowany)
sudo resize2fs /dev/vg0/data

# Dla XFS (inaczej niż ext4!):
# sudo xfs_growfs /data           # Argumentem jest punkt montowania, nie urządzenie

# Weryfikacja
df -h /data

Możesz też dodać nowy dysk do VG gdy LV zajął całe dostępne miejsce:

# Dodaj nowy dysk do istniejącej grupy woluminów
sudo pvcreate /dev/sdc
sudo vgextend vg0 /dev/sdc

# Teraz VG ma więcej miejsca — możesz rozszerzyć LV
sudo lvextend -l +100%FREE /dev/vg0/data
sudo resize2fs /dev/vg0/data

Zmniejszanie LV — tylko offline

Zmniejszenie LV to operacja bardziej ryzykowna i wymaga odmontowania. Zawsze rób backup przed redukcją:

# UWAGA: Zmniejszenie LV = ryzyko utraty danych. Zrób backup!

# Odmontuj wolumin
sudo umount /data

# Sprawdź i napraw system plików (OBOWIĄZKOWE przed redukcją)
sudo e2fsck -f /dev/vg0/data

# Zmniejsz system plików do docelowego rozmiaru (np. 30G)
sudo resize2fs /dev/vg0/data 30G

# Zmniejsz LV (musi być <= nowy rozmiar systemu plików)
sudo lvreduce -L 30G /dev/vg0/data

# Zamontuj z powrotem
sudo mount /dev/vg0/data /data

LVM Snapshot — migawka dla backupu

# Utwórz snapshot woluminu data (CoW — Copy on Write)
# --size = ile miejsca zarezerwować na zmiany od momentu snapshotu
sudo lvcreate --snapshot --name data-snap --size 5G /dev/vg0/data

# Zamontuj snapshot tylko do odczytu (np. dla backupu)
sudo mkdir -p /mnt/snap
sudo mount -o ro /dev/vg0/data-snap /mnt/snap

# Zrób backup z zamontowanego snapshotu
sudo rsync -avz /mnt/snap/ /backup/data/

# Odmontuj i usuń snapshot po backupie
sudo umount /mnt/snap
sudo lvremove /dev/vg0/data-snap

# Przywróć oryginał ze snapshotu (rollback):
# sudo umount /data
# sudo lvconvert --merge /dev/vg0/data-snap
# sudo lvchange -an /dev/vg0/data
# sudo lvchange -ay /dev/vg0/data
# sudo mount /dev/vg0/data /data

Thin Provisioning

Thin provisioning pozwala zaalokować więcej miejsca niż fizycznie dostępne — podobnie jak w chmurze. Przydatne gdy tworzysz wiele LV dla różnych serwisów i widzisz że nie wszystkie osiągną maksymalny rozmiar jednocześnie:

# Utwórz thin pool (50G fizycznej przestrzeni)
sudo lvcreate --thin -L 50G vg0/thin-pool

# Utwórz thin volumes (łącznie 80G, choć pool ma tylko 50G)
sudo lvcreate --thin -V 30G --name web-data vg0/thin-pool
sudo lvcreate --thin -V 30G --name db-data vg0/thin-pool
sudo lvcreate --thin -V 20G --name logs-data vg0/thin-pool

# Monitoruj użycie thin pool
sudo lvs -a vg0

Inspekcja — pvs, vgs, lvs

# Physical Volumes — lista dysków w LVM
sudo pvs
sudo pvdisplay /dev/sdb        # Szczegóły

# Volume Groups — lista grup
sudo vgs
sudo vgdisplay vg0             # Szczegóły (w tym wolne miejsce)

# Logical Volumes — lista woluminów
sudo lvs
sudo lvdisplay /dev/vg0/data   # Szczegóły

# Pełny przegląd drzewa LVM
sudo lvscan

LVM vs woluminy chmurowe — porównanie

Cecha LVM Cloud Volumes (EBS, Hetzner)
Rozszerzenie online Tak (lvextend + resize2fs) Tak (przez panel/API)
Snapshot Tak (lvcreate --snapshot) Tak (zarządzane przez chmurę)
Przenoszenie między serwerami Nie (dane na fizycznym dysku) Tak (odłącz i podłącz)
Koszt 0 zł (software) Dodatkowa opłata miesięczna
Najlepsze dla Dedyki, VPS z wieloma dyskami Efemeryczne serwery, łatwy backup

Najczęstsze pytania

Czym jest LVM i jakie problemy rozwiązuje? +
LVM (Logical Volume Manager) to warstwa abstrakcji między fizycznymi dyskami a systemem plików. Rozwiązuje trzy główne problemy: (1) Rozszerzenie partycji — tradycyjna partycja ma stały rozmiar; LVM pozwala rozszerzyć logical volume online bez restartu, nawet łącząc wiele dysków fizycznych. (2) Snapshot — LVM tworzy spójne migawki woluminu w ułamku sekundy, co jest podstawą backupów online bez zatrzymywania bazy danych. (3) Thin provisioning — możesz zaalokować więcej miejsca niż fizycznie dostępne, przydzielając je w miarę potrzeb (jak w chmurze).
Jak rozszerzyć partycję LVM bez restartu serwera? +
Trzy kroki: (1) lvextend -L +10G /dev/vg0/data — powiększ logical volume o 10 GB (lub -l +100%FREE żeby użyć całego wolnego miejsca). (2) resize2fs /dev/vg0/data — rozszerz system plików ext4 do nowego rozmiaru (jeśli ext4). Dla XFS: xfs_growfs /mount/point. (3) Zweryfikuj: df -h /mount/point. Całość zajmuje sekund, bez żadnego downtime.
Jak zrobić snapshot LVM i do czego go użyć? +
Snapshot LVM tworzy się w jednej sekundzie: lvcreate --snapshot --name data-snap --size 2G /dev/vg0/data. Parametr --size określa maksymalną ilość zmian które snapshot może przechowywać (CoW — Copy on Write). Użycia snapshotów: (1) Backup online — zamontuj snapshot read-only i zrób rsync/dump podczas gdy oryginał działa. (2) Testowanie migracji — zrób snapshot, przetestuj migrację, przywróć snapshot jeśli coś pójdzie nie tak: lvconvert --merge /dev/vg0/data-snap. (3) Punkt przywrócenia przed dużą aktualizacją systemu.
Kiedy używać LVM, a kiedy woluminów chmurowych? +
LVM ma sens na dedykowanych serwerach fizycznych (bare metal) lub VPS z wieloma dyskami, gdzie potrzebujesz elastycznej alokacji przestrzeni i snapshotów. Chmurowe woluminy (AWS EBS, Hetzner Volumes, DigitalOcean Volumes) są lepsze gdy: chcesz odłączyć dysk od serwera i podłączyć do innego, potrzebujesz automatycznych snapshotów zarządzanych przez chmurę, serwer jest efemeryczny. Na typowym Hetzner VPS lub Contabo VPS z jednym dyskiem LVM daje mniejszą wartość niż na dedyku z wieloma dyskami.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.