ZFS

Zaawansowany system plików i menedżer woluminów typu copy-on-write, pierwotnie z firmy Sun. Słynie z ochrony danych, migawek i sum kontrolnych.

ZFS (Zettabyte File System) to system plików połączony z menedżerem woluminów, zaprojektowany pierwotnie w Sun Microsystems dla Solarisa (premiera w 2005 roku). Łączy w sobie dwie warstwy, które na innych systemach trzymane są osobno: zarządzanie dyskami (jak LVM czy software RAID) i sam system plików. Działa w modelu copy-on-write, czyli nigdy nie nadpisuje danych w miejscu — najpierw zapisuje nową wersję bloku, a dopiero potem przestawia wskaźnik. Dzięki temu system jest spójny nawet po nagłym zaniku zasilania.

Jak to działa

W ZFS nie partycjonujesz dysków po staremu. Tworzysz pool (pulę, zpool) z jednego lub wielu dysków, a w niej dowolnie wiele datasetów — czegoś pomiędzy katalogiem a osobnym systemem plików, z własnymi limitami i ustawieniami. Każdy blok ma sumę kontrolną (checksum) liczoną osobno od danych. Gdy ZFS wykryje, że suma się nie zgadza — a masz redundancję (mirror albo RAID-Z) — sam naprawia uszkodzony blok z kopii. To słynne self-healing, które ratuje przed cichym uszkadzaniem danych (bit rot).

Do tego dochodzą migawki (snapshots) tworzone w ułamku sekundy i nie zajmujące miejsca, dopóki dane się nie zmienią, oraz wbudowana kompresja (dziś domyślnie lz4, mocniej zstd), która często nie tylko oszczędza miejsce, ale i przyspiesza I/O.

Przykład z praktyki

Masz serwer z danymi i chcesz nocne migawki przed każdą aktualizacją:

  • zpool create tank mirror sda sdb — pula z dwóch dysków w mirrorze
  • zfs create tank/dane — dataset na pliki
  • zfs snapshot tank/dane@przed-update — migawka w sekundę
  • zfs rollback tank/dane@przed-update — cofnięcie, gdy coś się sypnie

Migawki możesz też wysłać na inny serwer przez zfs send | zfs receive — to podstawa wielu rozwiązań backupowych, np. w TrueNAS czy Proxmox.

Na co uważać

Najczęstszy mit: „ZFS żre RAM, bo wymaga 1 GB na 1 TB”. To zalecenie z czasów włączonej deduplikacji — dla zwykłego użytku nieprawda, choć faktycznie im więcej RAM, tym większy cache ARC i lepsza wydajność. Drugi grzech: włączanie dedup „na wszelki wypadek” — potrafi nieodwracalnie rozdąć zapotrzebowanie na pamięć. I uwaga na licencję: ZFS w jądrze Linuksa działa jako moduł poza drzewem (OpenZFS), bo licencja CDDL nie miesza się z GPL.

Pojęcia powiązane: copy-on-write, RAID-Z, snapshot, Btrfs, LVM, ARC, OpenZFS, bit rot.