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


26.10.2020

Nowa wersja nVision

Można już pobierać nową wersję nVision
26.10.2020

Monitorowanie infrastruktury

Vertiv Environet Alert
23.10.2020

Telefonia w chmurze

NFON Cloudya
23.10.2020

Nowości w EDR

Bitdefender GravityZone
23.10.2020

Wykrywanie anomalii

Flowmon ADS11
23.10.2020

Mobilny monitor

AOC 16T2
22.10.2020

HP Pavilion

HP zaprezentowało nowe laptopy z linii Pavilion.
22.10.2020

Inteligentny monitoring

WD Purple SC QD101
22.10.2020

Przełącznik 2,5GbE

QNAP QSW-1105-5T

Konfiguracja systemu plików ZFS

Data publikacji: 29-08-2019 Autor: Grzegorz Kuczyński

W poprzedniej części cyklu przedstawione zostały główne cechy Z File System oraz omówiono proces instalacji ZFS w systemie FreeBSD. W kolejnym artykule kontynuujemy opis konfiguracji ZFS, rozpoczynając od rodzajów dostępnego buforowania.

 

Każdy system plików zazwyczaj stosuje jakieś buforowanie danych – właściwie można powiedzieć, że odpowiada za to system operacyjny. Ogólnie rzecz ujmując, buforowanie można podzielić ze względu na dwa kierunki: zapisu i odczytu. W obu przypadkach celem takiego zabiegu jest podniesienie wydajności, jednak w przypadku zapisywania jest to dość ryzykowny zabieg. W poprzednim wydaniu „IT Professional” (numer 7–8/2019, s. 59) wspomniano o tym, że ZFS zapewnia integrację danych, m.in. poprzez stosowanie sum kontrolnych oraz transakcyjnego mechanizmu zapisywania. Nie poruszyliśmy jednak kwestii mechanizmów zapisywania dogłębnie. Uczynimy to tym razem, zaczynając od buforów dla operacji odczytu danych.

> MECHANIZM ARC

ZFS domyślnie używa mechanizmu zwanego Adaptive Replacement Cache (ARC) w celu optymalizacji operacji odczytu. Ogólna zasada jego działania polega na tym, aby najczęściej odczytywane dane przechowywać w szybkiej pamięci RAM i w ten sposób uniknąć wykonywania czasochłonnych operacji na dyskach. Dokładnie rzecz ujmując, ARC wykorzystuje dwa algorytmy w celu lepszego wyboru, które dane warto buforować, a które nie – MRU (Most Recently Used), czyli ostatnio używane dane, oraz MFU (Most Frequently Used), czyli najczęściej używane dane. Z doświadczenia wynika, że kombinacja obu algorytmów pozwala otrzymać optymalny wynik niwelujący wady tych rozwiązań występujące z osobna. Ponadto dane przechowywane w buforze ARC podlegają kompresji, co pozwala przechowywać w nim więcej danych, niż rzeczywiście wykorzystywana jest pamięć RAM. Różnica prędkości pomiędzy dyskami talerzowymi a pamięcią RAM i CPU jest tak ogromna, że nawet stosowanie kompresji nie ma negatywnego wpływu na szybkość buforowania.

Ilość pamięci RAM wykorzystywanej przez ARC możemy sprawdzić za pomocą narzędzia top. W testowym systemie FreeBSD 12 z ZFS, który nie wykonuje żadnych prac, wyświetlone zostały następujące statystyki:

 

 

Jak widać, system dysponuje 4 GB pamięci RAM, cały ARC wykorzystuje 45 MB. Dzięki kompresji przechowywane są 33 MB danych, zużywając dzięki 3,14-krotej kompresji tylko 10 MB RAM-u. Można tu również zauważyć, jaka część danych zarządzana jest przez MFU i MRU. Jednak ARC nie odpowiada wyłącznie za buforowanie, używany jest również przez ZFS w niektórych mechanizmach tego systemu plików, co skutkuje większym zużyciem pamięci RAM wraz z ilością przetwarzanych danych i liczbą włączonych mechanizmów. Domyślnie ARC zużyje maksymalnie całą dostępną pamięć, pozostawiając wolny tylko 1 GB RAM. Maksymalną wartość ARC możemy kontrolować poprzez parametr vfs.zfs.arc_max w sysctl systemu FreeBSD. Niemniej jednak ZFS jest systemem plików, który potrafi zużywać bardzo duże ilości pamięci RAM. Szacuje się, że może to być nawet ok. 1 GB RAM-u na 1 TB danych. Z tego właśnie powodu ZFS nie jest dobrym wyborem w systemach wbudowanych.

Warto również nadmienić, że ARC potrafi redukować ilość zużywanej pamięci RAM. Jeżeli system zażąda dostępu do większej ilości pamięci, mechanizm ARC zwolni ją, o ile jest to możliwe, i zazwyczaj będzie to pamięć wykorzystywana w ARC jako cache.

> ROZWIĄZANIE POŚREDNIE L2ARC

Mechanizm ARC znacznie przyśpiesza operacje odczytu, ale odbywa się to kosztem drogiej pamięci RAM. Rozwiązaniem tego problemu jest Level 2 ARC, czyli druga, wolniejsza w działaniu pamięć cache tworzona z użyciem dysków wykonanych z pamięci flash, np. SSD. Dane, które są na tyle często odczytywane, aby ich buforowanie było opłacalne, ale nie klasyfikują się jeszcze do zapisania w pamięci ARC, mogą być przechowywane właśnie na dyskach flash. ZFS zadba natomiast o to, aby były synchronizowane z danymi znajdującymi się na dyskach talerzowych. W przeciwieństwie do ARC L2ARC jest rozwiązaniem opcjonalnym, a do jego uruchomienia potrzebne będą dedykowane dyski.

> ZIL – PRZYŚPIESZANIE OPERACJI ZAPISU

Wspomniane ARC i L2ARC to dwie metody na przyśpieszenie operacji odczytu, z kolei ZFS Intent Log (ZIL) to mechanizm analogiczny do L2ARC, ale przeznaczony do przyśpieszenia operacji zapisu. Mechanizm ten określany jest również jako SLOG. Zasadniczą różnicą pomiędzy operacjami zapisu i odczytu jest to, że od powodzenia tych drugich zależy to, czy dane zostaną poprawnie zachowane, dlatego dyski SSD przeznaczone na SLOG powinny pracować w trybie mirror. Dane zapisywane są na dysk SLOG w trybie synchronicznym, a następnie po 5 sekundach na docelowe dyski z użyciem mechanizmu Transaction Groups (TXG). Jeżeli zdarzy się, że w tym czasie dysk ulegnie awarii, dane nadal będą przechowywane w pamięci RAM. Natomiast jeżeli przed kolejnym cyklem TXG zapisu z pamięci RAM na docelowe dyski cały system operacyjny ulegnie awarii lub utracone zostanie zasilanie, to dane przepadną. Ponadto nie wszystkie operacje synchroniczne są zapisywane na dysk SLOG. Dla przykładu parametr zil_slog_bulk sysctl we FreeBSD określa limit wielkości dla takich danych i domyślnie wynosi niecały 1 MB.

 

> PODSTAWOWA REDUNDANCJA

ZFS oferuje kilka schematów przy wyborze redundancji. Podstawowy jest tzw. mirror zastosowany w naszym przypadku już podczas instalacji systemu FreeBSD. Takie rozwiązanie zabezpiecza przed utratą danych i co ciekawe, kopii danego bloku danych może być więcej niż dwie.

 

[...]

 

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"