Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


08.07.2019

Narzędzie EDR

ESET Enterprise Inspector
08.07.2019

Usuwanie skutków awarii

Veeam Availability Orchestrator v2
08.07.2019

Indywidualna konfiguracja

baramundi Management Suite 2019
05.07.2019

Technologia Ceph

SUSE Enterprise Storage 6
05.07.2019

Szybkie i bezpieczne...

Konica Minolta bizhub i-Series
05.07.2019

Edge computing

Atos BullSequana Edge
04.07.2019

Terabitowa ochrona

Check Point 16000 i 26000
04.07.2019

Obsługa wideokonferencji

Poly G7500
04.07.2019

Laptop biznesowy

Fujitsu LIFEBOOK U939X

System plików ZFS

Data publikacji: 04-07-2019 Autor: Grzegorz Kuczyński

Z File System (ZFS) – choć mało popularny – przez wielu jest uważany za jeden z najbardziej zaawansowanych systemów plików i jest określany mianem next generation filesystem. Pierwotnie stworzony przez Sun Microsystems jako produkt komercyjny, dziś rozwijany jest też jako projekt open source – OpenZFS.

 

Nad systemem ZFS pracownicy firmy Sun pracowali od 2001 roku, a w 2005 roku został on oficjalnie dodany do systemu Solaris, w którym miał zastąpić przestarzały UFS. Inżynierzy z Sun zauważyli, że takie systemy jak UFS zostały zaprojektowane 30 lat wcześniej. Od tego czasu sprzęt używany do przechowywania danych przeszedł dużą rewolucję, natomiast systemy plików tylko nieznacznie zostały zmodyfikowane. Ponadto ilość przechowywanych danych wyraźnie wzrosła i wymaga stosowania woluminów składających się z wielu dysków. Problem polega na tym, że przeciętny menedżer woluminów nie był w żaden sposób połączony z systemem plików, co sprawiało, że manipulowanie nimi nie było prostym zajęciem, zwłaszcza w dużej skali. Tak więc przeanalizowano obecną architekturę systemu plików i zmieniono to, co uważano za złe, tworząc zupełnie nowe i kompleksowe podejście do systemu plików.

ZFS jest kojarzony z ogromnymi pojemnościami, jakie potrafi przechowywać, ale to tylko jedna z ważniejszych jego cech. Jego nazwa jest akronimem od słów „Zettabyte File System” i pierwotnie system ten miał umożliwiać przechowywanie tak wielkich ilości danych, aby na przestrzeni najbliższych dziesięcioleci nie stwarzać żadnych ograniczeń. Tak też się stało, gdyż ZFS pozwala na przechowywanie aż 256 biliardów zettabajtów pamięci masowej w jednej puli.

> OPENZFS

Kod źródłowy nowego systemu plików trafił do OpenSolaris i został opublikowany na licencji Common Development and Distribution License (CDDL). Oracle wciąż rozwija ZFS w wersji komercyjnej, ale uwolniona przez Sun kopia kodu stała się już podstawą nowego projektu, OpenZFS. Tak więc ZFS istnieje w dwóch wersjach, komercyjnej i otwartej. Zdarza się, że niektóre nowe funkcje OpenZFS są przenoszone do jego komercyjnego odpowiednika.

Celem projektu OpenZFS jest zrzeszenie deweloperów ze wszystkich systemów, w których programiści chcą wdrożyć ZFS. Jednym z wiodących systemów, w których ZFS został zaimplementowany, jest FreeBSD – dlatego właśnie ten system wybierzemy do omawiania ZFS. Prężnie rozwija się również projekt ZFS on Linux, który jest oficjalną implementacją ZFS dla jądra Linux. Wszystkie polecenia ZFS będą działać tak samo na dowolnej dystrybucji systemu GNU/Linux.

> MENEDŻER WOLUMINÓW

Główną różnicą między ZFS a innymi uniksowymi systemami plików jest to, że zawiera on menedżera woluminów logicznych. Dla porównania – w systemie Linux mamy menedżera LVM i takie systemy plików jak ext4 czy xfs. Po utworzeniu logicznego woluminu należy jeszcze na nim utworzyć system plików o zadanej wielkości poleceniem mkfs. O ile za pomocą LVM łatwo rozszerzyć taki wolumin logiczny, o tyle z systemem plików nie jest już tak prosto. Dla ext4 dostępne jest narzędzie resize2fs, które pozwala rozszerzyć system plików, ale jego zmniejszenie wymaga już wymontowania systemu plików.

Projektanci ZFS połączyli te dwa narzędzia, ponieważ stwierdzili, że brak współpracy menedżera woluminów z systemem plików jest źródłem problemów i niewykorzystaniem potencjału. Posunięcie to otworzyło przed systemem plików zupełnie nowe możliwości. Jedną z nich jest to, że ZFS jest dynamicznym systemem plików – oznacza to, że system plików nie musi od razu zajmować całej przestrzeni woluminu, na którym się znajduje. System plików ZFS zajmuje tyle miejsca, ile zajmują dane w nim przechowywane plus metadane tego systemu plików. To z kolei oznacza, że na jednym woluminie może się mieścić wiele systemów plików ZFS. Jeden system plików w ZFS określany jest mianem dataset i do każdego z nich możemy stosować inne ustawienia. Oczywiście dostępne są rezerwacje i ograniczenia dla poszczególnych systemów plików.

Po wydaniu polecenia df -hT na naszym testowym systemie FreeBSD z ZFS zauważymy, że instalator stworzył oddzielne systemy plików między innymi dla punktów montowań i /usr/home, lecz oba mają taką samą dostępną przestrzeń. Rozwiązanie to łączy ze sobą lepsze wykorzystanie wolnej przestrzeni dyskowej.

> INTEGRALNOŚĆ I TRANSAKCYJNOŚĆ DANYCH

Kolejną oryginalną cechą ZFS jest dbałość o integralność przechowywanych danych. ZFS dla każdego bloku danych, jaki zapisuje, wylicza sumę kontrolną i zapisuje ją w metadanych, które są przechowywane w kilku kopiach. Większość systemów plików nie sprawdza, czy dane uległy zmianie między zapisem a odczytem. Jeżeli uległy uszkodzeniu, to tradycyjny system plików po prostu odczyta określoną liczbę bloków i zwróci do programu zlecającego odczyt. System ZFS w takim wypadku zgłosi błąd odczytu, mimo że same dane mógł odczytać. Natomiast w przypadku danych znajdujących się na wielu fizycznych nośnikach (np. mirror) ZFS sprawdzi dane na drugim nośniku i jeżeli będą zgodne, to zwróci te prawidłowe, a później tę uszkodzoną kopię nadpisze poprawną. Funkcja ta nazywa się self-healing i podstawą jej działania jest redundancja na urządzeniach fizycznych. Jednym z głównych założeń ZFS jest to, że urządzenia fizyczne niczego nie gwarantują, więc tworzenie redundantnych systemów plików jest podstawą. Ponadto nie zaleca się używania ZFS na fizycznych kontrolerach RAID, ponieważ będzie on powielał zadania wykonywane przez ZFS i w efekcie straci na wydajności.

ZFS jest transakcyjnym systemem plików, co oznacza, że operacje zapisu są wykonywane w całości albo wcale. Jeżeli zdarzyło nam się kiedyś utracić jakieś dane z powodu braku zasilania, to docenimy ZFS. Tradycyjny system plików, zapisując zmiany, nadpisuje oryginalne dane. Jeżeli podczas tej operacji nastąpi utrata zasilania, to dane mogą zostać uszkodzone przez niedokończony zapis. ZFS nigdy nie zapisuje zmian na oryginalnych blokach systemu plików. Zamiast tego zapisuje je na nowych blokach, następnie analizuje, jakie metadane należy zmienić, i również zapisuje je w nowych blokach. Ostatecznie w strukturze drzewa zmieniany jest wskaźnik, aby wskazywał na nowe metadane, a te na nowe dane. Jeżeli operacja ta zostanie przerwana, to dostępna będzie stara wersja w stanie nienaruszonym. Natomiast same metadane są przechowywane w trzech kopiach dla jednego dysku. W związku z tym ZFS nie oferuje takich narzędzi jak fsck do sprawdzania spójności systemu plików z jego journalem, ponieważ go nie ma. Strategia tworzenia nowej kopii przy zapisie nazywa się copy-on-write i umożliwia też wiele innych funkcji, takich jak choćby snapshoty.

 

[...]

 

Autor zawodowo zajmuje się informatyką. Jest członkiem społeczności open source, prowadzi blog nt. systemu GNU/Linux. 

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"