Czym jest OpenZFS?

OpenZFS to zaawansowany system plików i menedżer woluminów w jednym. Pierwotnie stworzony przez Sun Microsystems dla systemu Solaris, dziś jest rozwijany jako projekt open source i dostępny na Linuksie, FreeBSD, macOS i Windows.

ZFS wyróżnia się na tle tradycyjnych systemów plików (ext4, XFS) tym, że:

  • Łączy system plików z menedżerem woluminów — nie potrzebujesz osobno LVM
  • Gwarantuje integralność danych — każdy blok ma sumę kontrolną
  • Obsługuje snapshoty — natychmiastowe, bez kopiowania danych
  • Wspiera kompresję i deduplikację — oszczędność miejsca w locie
  • Oferuje RAID-Z — lepszy niż tradycyjny RAID5/6

Podstawowe pojęcia

Pula (pool)

Pula to zbiór dysków, z których ZFS tworzy jedną przestrzeń dyskową. To odpowiednik grupy woluminów w LVM, ale znacznie potężniejszy.

# Utworzenie puli z jednego dysku
zpool create mypool /dev/sdb

# Utworzenie puli mirror (RAID1) z dwóch dysków
zpool create mypool mirror /dev/sdb /dev/sdc

# Utworzenie puli RAID-Z1 (odpowiednik RAID5) z trzech dysków
zpool create mypool raidz1 /dev/sdb /dev/sdc /dev/sdd

Dataset

Dataset to logiczny kontener na dane wewnątrz puli — coś jak katalog, ale z własnymi ustawieniami (kompresja, limity, snapshoty).

# Utworzenie datasetu
zfs create mypool/documents
zfs create mypool/backups
zfs create mypool/vms

# Każdy dataset to osobny "system plików" z własnymi opcjami
zfs set compression=lz4 mypool/backups
zfs set quota=100G mypool/vms

Snapshot

Snapshot to migawka stanu datasetu w danym momencie. Tworzenie jest natychmiastowe i nie zajmuje dodatkowego miejsca (dopóki dane się nie zmienią).

# Utworzenie snapshotu
zfs snapshot mypool/documents@before-upgrade

# Lista snapshotów
zfs list -t snapshot

# Przywrócenie danych ze snapshotu
zfs rollback mypool/documents@before-upgrade

Instalacja na Linuksie

Ubuntu/Debian

sudo apt install zfsutils-linux

Fedora

sudo dnf install https://zfsonlinux.org/fedora/zfs-release-2-4.fc$(rpm -E %fedora).noarch.rpm
sudo dnf install zfs
sudo modprobe zfs

Arch Linux

# Z AUR
yay -S zfs-dkms

Po instalacji załaduj moduł:

sudo modprobe zfs

Praktyczne przykłady

Tworzenie puli i datasetów

# Pula mirror na dwóch dyskach
sudo zpool create tank mirror /dev/sdb /dev/sdc

# Datasety dla różnych zastosowań
sudo zfs create tank/home
sudo zfs create tank/docker
sudo zfs create tank/databases

# Włączenie kompresji (zalecane!)
sudo zfs set compression=lz4 tank

# Sprawdzenie statusu
zpool status tank
zfs list

Snapshoty i backup

# Codzienny snapshot przed aktualizacją
sudo zfs snapshot tank/home@$(date +%Y-%m-%d)

# Wysłanie snapshotu na zdalny serwer
zfs send tank/home@2026-02-05 | ssh backup-server zfs receive backup/home

# Przyrostowy backup (tylko zmiany)
zfs send -i tank/home@2026-02-04 tank/home@2026-02-05 | ssh backup-server zfs receive backup/home

Kompresja

# Sprawdzenie współczynnika kompresji
zfs get compressratio tank

# Przykładowy wynik dla danych tekstowych:
# NAME  PROPERTY       VALUE  SOURCE
# tank  compressratio  2.50x  -

LZ4 daje świetny balans między wydajnością a kompresją. Dla archiwów można użyć zstd:

sudo zfs set compression=zstd tank/archives

RAID-Z: Lepszy niż tradycyjny RAID

ZFS oferuje trzy poziomy RAID-Z:

  • RAID-Z1 — odpowiednik RAID5, toleruje awarię 1 dysku
  • RAID-Z2 — odpowiednik RAID6, toleruje awarię 2 dysków
  • RAID-Z3 — toleruje awarię 3 dysków
# RAID-Z2 na 6 dyskach (4 dyski na dane, 2 na parzystość)
sudo zpool create tank raidz2 /dev/sd{b,c,d,e,f,g}

Dlaczego RAID-Z jest lepszy?

  • Brak “write hole” — ZFS zapisuje dane i metadane atomowo
  • Sumy kontrolne — wykrywa i naprawia ciche uszkodzenia danych (bit rot)
  • Scrub — regularna weryfikacja integralności wszystkich danych
# Uruchomienie scrub (zalecane co miesiąc)
sudo zpool scrub tank

# Sprawdzenie postępu
zpool status tank

Przydatne komendy

# Status puli
zpool status
zpool list

# Lista datasetów
zfs list

# Właściwości datasetu
zfs get all tank/home

# Historia operacji
zpool history tank

# Wymiana uszkodzonego dysku
zpool replace tank /dev/sdb /dev/sdx

# Import puli z innego systemu
zpool import tank

Kiedy używać ZFS?

Tak:

  • Serwery NAS i storage
  • Serwery z maszynami wirtualnymi (snapshoty!)
  • Backup i archiwizacja
  • Środowiska, gdzie integralność danych jest krytyczna

Nie:

  • Pojedynczy dysk w laptopie (ext4 wystarczy)
  • Systemy z <8 GB RAM (ZFS lubi pamięć)
  • Starsze jądra bez wsparcia ZFS

Podsumowanie

OpenZFS to potężne narzędzie, które łączy system plików, menedżer woluminów i ochronę danych w jednym pakiecie. Snapshoty, kompresja, RAID-Z i sumy kontrolne sprawiają, że jest idealny do serwerów i storage’u. Wymaga trochę nauki, ale zwraca się z nawiązką — szczególnie gdy pierwszy raz przywrócisz dane ze snapshotu w 2 sekundy zamiast z backupu przez 2 godziny.