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 mirrorzezfs create tank/dane— dataset na plikizfs 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.