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

ZFS na Ubuntu VPS — snapshoty, kompresja i backup send/receive

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Storage

ZFS to system plików z zarządzaniem woluminami w jednym — jego główne zalety to ochrona integralności danych przez checksumming, natychmiastowe snapshoty (Copy-on-Write), transparentna kompresja i wydajna replikacja przez zfs send/receive. Na VPS z Ubuntu możesz zainstalować ZFS jako dodatkowy system plików do przechowywania danych aplikacji, baz danych lub backupów. Ten artykuł pokazuje pełną konfigurację: od instalacji przez tworzenie pool i datasets, zarządzanie snapshotami, aż po automatyczny backup na zdalny serwer.

Instalacja ZFS na Ubuntu 22.04/24.04

# Na Ubuntu zfsutils jest w universe repo
sudo apt update
sudo apt install -y zfsutils-linux

# Sprawdz wersje i zaladowane moduly
zfs version
lsmod | grep zfs

# Wyswietl dostepne dyski (do tworzenia pool)
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
# lub
fdisk -l | grep "Disk /dev/"

# UWAGA: NIE uzywaj systemowego dysku (/) do ZFS pool na VPS
# Uzyj dodatkowych dyskow lub loopback devices (do testow)

Tworzenie zpool — podstawy

Zpool to pula przechowywania w ZFS — może składać się z jednego lub wielu dysków w różnych konfiguracjach (stripe, mirror, RAID-Z). Na VPS z jednym dodatkowym dyskiem tworzymy prosty single-disk pool.

# Tworz pool na dysku /dev/sdb (UWAGA: niszczy dane na dysku!)
sudo zpool create \
  -o ashift=12 \
  -O compression=lz4 \
  -O atime=off \
  -O xattr=sa \
  -m /mnt/data \
  datapool /dev/sdb

# Parametry:
# ashift=12   = 4K sektor alignment (NVMe/SSD wymaga tego)
# compression=lz4  = kompresja domyslna dla wszystkich datasets
# atime=off   = nie aktualizuj access time (drastycznie mniej I/O)
# xattr=sa    = extended attributes w systemic attributes (szybsze)
# -m /mnt/data = punkt montowania
# datapool    = nazwa poola

# Status poola
zpool status datapool
zpool list datapool

# Szczegolowe informacje
zfs get all datapool | grep -E 'compress|atime|xattr|used|avail'
# Mirror (RAID-1) na dwoch dyskach:
sudo zpool create datapool mirror /dev/sdb /dev/sdc

# RAID-Z1 (jak RAID-5) — minimum 3 dyski, tolleruje 1 awarie:
sudo zpool create datapool raidz1 /dev/sdb /dev/sdc /dev/sdd

# RAID-Z2 (jak RAID-6) — minimum 4 dyski, tolleruje 2 awarie:
sudo zpool create datapool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# Testowy pool na plikach loop (bez prawdziwych dyskow)
fallocate -l 5G /tmp/disk1.img
fallocate -l 5G /tmp/disk2.img
sudo zpool create testpool mirror /tmp/disk1.img /tmp/disk2.img

Datasets — hierarchiczna organizacja danych

Dataset to jednostka w ZFS — możesz tworzyć hierarchię datasets, każdy z własną konfiguracją (quotas, kompresja, snapshot policy). Dziedziczenie: dataset dziedziczy właściwości po rodzicu, chyba że nadpiszesz.

# Utwórz datasets (montowane automatycznie)
sudo zfs create datapool/db          # /mnt/data/db
sudo zfs create datapool/backups     # /mnt/data/backups
sudo zfs create datapool/app         # /mnt/data/app

# Osobne ustawienia per dataset
# Baza danych: wylacz kompresje (skompresowane dane DB i tak nie sa kompresowalne)
sudo zfs set compression=off datapool/db

# Backupy: mocniejsza kompresja (zstd dla lepszego ratio)
sudo zfs set compression=zstd datapool/backups

# Quota: ogranicz rozmiar datasetu
sudo zfs set quota=50G datapool/app
sudo zfs set refquota=20G datapool/app   # bez wliczania snapshotow

# Listuj datasets
zfs list
zfs list -r datapool

# Szczegóły
zfs get compression,quota,used,avail datapool/app

Snapshoty — tworzenie, rollback i usuwanie

# Utwórz snapshot (natychmiastowy)
zfs snapshot datapool/app@przed-aktualizacja
zfs snapshot -r datapool@caly-pool-snapshot  # Rekurencyjnie wszystkie datasets

# Listuj snapshoty
zfs list -t snapshot
zfs list -t snapshot -r datapool/app

# Rollback do snapshotu (COFA WSZYSTKIE ZMIANY po snapshocie)
zfs rollback datapool/app@przed-aktualizacja

# Usun snapshot
zfs destroy datapool/app@przed-aktualizacja

# Usun wszystkie snapshoty starsze niz 7 dni (przez find + destroy)
zfs list -t snapshot -H -o name datapool/app | head -5  # Sprawdz najpierw

# Backup inkrementalny przez zfs send/receive
# Pelny snapshot:
zfs send datapool/app@snapshot1 | ssh backup-server "zfs receive backuppool/app"
# Inkrementalny (tylko roznica):
zfs send -i datapool/app@snapshot1 datapool/app@snapshot2 | \
    ssh backup-server "zfs receive backuppool/app"

Najczęstsze pytania

Czym jest ZFS i dlaczego jest lepsze od ext4? +
ZFS (Zettabyte File System) to połączony system plików i manager woluminów z zaawansowanymi funkcjami ochrony danych. W odróżnieniu od ext4: ZFS sprawdza integralność każdego bloku danych przy odczycie (checksumming — wykrywa "silent corruption"), snapshoty są natychmiastowe i prawie bezkosztowe (Copy-on-Write), kompresja działa transparentnie na poziomie filesystemu (lz4, zstd), RAID-Z1/Z2/Z3 zastępuje hardware RAID z lepszą odpornością na uszkodzenia. ZFS jest droższy w RAM (ARC cache), ale oferuje poziom ochrony danych nieosiągalny w ext4.
Co to jest snapshot ZFS i jak szybko działa? +
Snapshot ZFS to point-in-time kopia filesystemu — natychmiastowa (dosłownie milisekundy), niezależnie od rozmiaru danych. ZFS używa Copy-on-Write: przy zmianie bloku stary blok pozostaje w snapshocie, nowy blok jest zapisany osobno. Snapshot początkowo zajmuje 0 miejsca i rośnie tylko wraz z modyfikacjami danych po jego utworzeniu. Możesz rollback do snapshotu w kilka sekund, klonować snapshot jako nowy dataset i wysyłać snapshoty przez sieć (zfs send/receive) jako inkrementalny backup. To rewolucja w stosunku do rsync który kopiuje bite po bitu.
ZFS vs BTRFS — co wybrać na serwer Linux? +
ZFS jest bardziej dojrzały, lepiej przetestowany produkcyjnie i stosowany w enterprise (Oracle, FreeBSD/TrueNAS, Proxmox). Ma lepszą ochronę danych (checksums end-to-end) i bardziej przewidywalne zachowanie. BTRFS jest wbudowany w kernel Linux (bez osobnego modułu), prostszy do użycia i ma natywne narzędzia distro (Fedora, SUSE używają BTRFS jako domyślny FS). BTRFS snapshoty i RAID mają historycznie więcej bugów (szczególnie BTRFS RAID5/6 — unikaj). Na server produkcyjny z ważnymi danymi — ZFS. Na desktop lub NAS z prostymi potrzebami — BTRFS jest ok.
Ile RAM potrzebuje ZFS ARC? +
ARC (Adaptive Replacement Cache) to cache danych ZFS w RAM. Domyślnie ZFS używa do 50% dostępnego RAM jako ARC — na maszynie z 8 GB do 4 GB, z 16 GB do 8 GB. Możesz ograniczyć przez parametr zfs_arc_max (w bajtach, ustawiany w /etc/modprobe.d/zfs.conf). Minimum dla sensownego działania ZFS to 1 GB RAM, rekomendowane 2+ GB. Ogólna zasada: 1 GB RAM na 1 TB danych (dla ZFS ARC). Na VPS z 2 GB RAM ZFS działa, ale ARC będzie małe i dużo I/O trafi na dysk.

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.