OpenZFS na Linuxie — instalacja, poole i snapshoty
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.