Co to jest zfs?

Autor: Opublikowano

W skrócie: ZFS to system plików połączony z mechanizmem zarządzania przestrzenią na dyskach. Weryfikuje integralność danych, umożliwia tworzenie migawek i pozwala łączyć nośniki w pule pamięci masowej. Sprawdza się szczególnie w serwerach i NAS-ach, czyli urządzeniach udostępniających pliki przez sieć, ale nie zastępuje kopii zapasowej.

Jak działa ZFS i czym różni się od zwykłego systemu plików

System plików określa, jak dane są zapisywane i odnajdywane na nośniku. ZFS odpowiada również za funkcje, które w innych rozwiązaniach często realizuje osobna warstwa: łączenie dysków, nadmiarowość danych i przydzielanie przestrzeni. Dzięki temu ma bezpośredni wgląd zarówno w strukturę plików, jak i w miejsce ich przechowywania.

ZFS powstał w firmie Sun Microsystems. Obecnie w wielu rozwiązaniach linuksowych i opartych na FreeBSD wykorzystuje się OpenZFS — rozwijaną jako otwarte oprogramowanie implementację ZFS. Dostępność funkcji i sposób instalacji zależą od systemu oraz wersji, dlatego instrukcję konfiguracji trzeba dobierać do konkretnego środowiska.

Przestrzeń w ZFS ma kilka poziomów:

Możesz więc utworzyć osobne datasety na dokumenty, multimedia i kopie komputerów bez sztywnego dzielenia dysków na partycje o ustalonych rozmiarach. Datasety korzystają ze wspólnej wolnej przestrzeni, z uwzględnieniem ustawionych limitów i rezerwacji.

Jak ZFS wykrywa uszkodzenia danych

ZFS używa sum kontrolnych, czyli wartości obliczanych na podstawie zawartości danych. Podczas odczytu sprawdza, czy zapisane bloki odpowiadają ich sumom kontrolnym. Pozwala to wykryć między innymi ciche uszkodzenia, przy których urządzenie zwraca błędną treść bez zgłoszenia błędu odczytu.

Wykrycie błędu nie zawsze oznacza możliwość naprawy. Jeśli pula ma odpowiednią nadmiarowość, na przykład lustro, ZFS może pobrać poprawną kopię bloku i naprawić uszkodzoną. Na pojedynczym dysku może wykryć uszkodzenie danych pliku, ale bez dodatkowej poprawnej kopii nie odtworzy jego zawartości.

ZFS stosuje też mechanizm copy-on-write: zamiast nadpisywać używany blok, zapisuje zmienione dane w nowym miejscu, a następnie aktualizuje odwołania. Pomaga to utrzymywać spójną strukturę systemu plików i stanowi podstawę działania migawek. Nie oznacza jednak, że po nagłej utracie zasilania każda ostatnia zmiana aplikacji musi zostać zachowana.

Do okresowej kontroli służy scrub, czyli sprawdzenie zapisanych danych względem sum kontrolnych. Przy dostępnej nadmiarowości pozwala również naprawiać wykryte błędy. Scrub uzupełnia monitoring dysków, ale nie zastępuje ich diagnostyki ani backupu.

Migawki, kompresja i kopie zapasowe

Migawka (snapshot) utrwala stan datasetu z wybranej chwili. Początkowo zajmuje niewiele dodatkowej przestrzeni; jej koszt rośnie, gdy trzeba zachować stare bloki zmienianych lub usuwanych danych. Dlatego skasowanie dużego pliku nie zawsze zwolni miejsce, jeśli jego zawartość nadal utrzymuje migawka.

Przykładowo: przed porządkowaniem rodzinnych zdjęć tworzysz migawkę. Po omyłkowym usunięciu katalogu możesz odzyskać wcześniejszą wersję bez przywracania całego zbioru z zewnętrznego dysku. Migawka pozostająca w tej samej puli nie pomoże jednak po utracie wszystkich nośników, kradzieży urządzenia ani usunięciu jej przez napastnika z odpowiednimi uprawnieniami.

ZFS potrafi przesyłać migawki do innej puli, także przyrostowo, czyli przekazując zmiany względem wcześniejszego stanu. To podstawa wygodnej replikacji. Bezpieczeństwo takiej kopii zależy jednak od miejsca przechowywania, uprawnień i zasad zachowywania starszych wersji.

Przydatna jest także kompresja wykonywana podczas zapisu. Może oszczędzać miejsce i ograniczać liczbę operacji dyskowych, ale wynik zależy od danych: tekst zwykle kompresuje się lepiej niż gotowe filmy czy archiwa. Nie należy mylić jej z deduplikacją, która eliminuje powtarzające się bloki, lecz może wymagać znacznych zasobów pamięci i starannego planowania.

Lustro czy RAID-Z: wybór układu dysków

Lustro zapisuje te same dane na kilku dyskach. Przy dwóch nośnikach o jednakowej pojemności przestrzeń użytkowa odpowiada w przybliżeniu jednemu z nich, przed uwzględnieniem narzutów i zalecanego zapasu wolnego miejsca. Taki układ może działać po awarii jednego dysku.

RAID-Z rozkłada dane i informacje pozwalające je odtworzyć między nośnikami. Warianty RAID-Z1, RAID-Z2 i RAID-Z3 tolerują odpowiednio awarię jednego, dwóch lub trzech dysków w danym vdevie. Wybór zależy od wymaganej pojemności, obciążenia i akceptowanego ryzyka.

Kluczowy jest układ całej puli: utrata vdevu przechowującego dane może oznaczać utratę puli. Dodanie do bezpiecznego lustra pojedynczego dysku jako kolejnego vdevu nie rozszerza ochrony lustra na ten dysk. Przed rozbudową sprawdź też możliwości swojej wersji OpenZFS — nie każda zmiana układu jest dostępna lub łatwo odwracalna.

Kiedy warto wybrać ZFS

ZFS jest dobrym kandydatem do przechowywania dokumentów, archiwów i kopii zapasowych, gdy potrzebujesz kontroli integralności oraz migawek. Wymaga jednak zaplanowania dysków, monitorowania stanu puli i zapasu wolnej przestrzeni. Wydajność oraz zapotrzebowanie na RAM zależą od obciążenia i włączonych funkcji; nie istnieje jedna uniwersalna proporcja pamięci do pojemności dysków.

Pamięć ECC, która wykrywa i koryguje określone błędy pamięci operacyjnej, jest korzystna w serwerze, ale nie stanowi bezwzględnego warunku działania ZFS. Dyski najlepiej udostępnić ZFS bezpośrednio, zamiast ukrywać je za sprzętową macierzą RAID.

Przed przeniesieniem ważnych danych narysuj plan vdevów, ustal miejsce niezależnej kopii zapasowej i przetestuj odzyskanie jednego katalogu. Taki test pokaże więcej o gotowości konfiguracji niż samo pomyślne utworzenie puli.

Zobacz też: Co to jest Linux?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.