Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

FreeNAS i system ZFS - log device, cache device.

TechEkspert 07 Cze 2015 10:57 2163 0
  • FreeNAS i system ZFS - log device, cache device.
    W poprzednim materiale można znaleźć bardzo ogólne informacje o możliwościach kompresji i deduplikacji wbudowanej w ZFS łatwe do wykorzystania dzięki freenas. W tym materiale przyjrzymy się innym możliwościom udostępnianym przez ZFS. Dla celów testowych uruchomimy Freenas 9.3 wyposażony w 8GB RAM oraz 4 rdzenie CPU a także 3x fizyczny HDD 160GB SATA II. Dane będziemy zapisywali na grupie dysków 3x160GB skonfigurowanych jako RaidZ(1) co zapewni odporność na awarię jednego dysku z grupy.

    FreeNAS i system ZFS - log device, cache device.

    Zobaczmy jak można zoptymalizować szybkość dostępu do danych udostępnianych przez freenas.

    ARC (Adaptive Replacement Cache).

    Domyślnie buforem dla operacji odczytu w systemie ZFS jest pamięć RAM. Tworzymy zasób 100GB i udostępniamy go z wykorzystaniem iSCSI, następnie podłączamy udział jako dysk w systemie Win7.

    Rozpoczynamy zapis pliku o wielkości 1GB na dysk iSCSI, następnie wykonujemy kilkakrotne odczytanie całości zapisanego pliku.
    Okazuje się, że na dyskach w grupie RAIDZ widoczne są wyłącznie zapisy:

    FreeNAS i system ZFS - log device, cache device.

    mimo że na interfejsie sieciowym generowany jest ruch zarówno podczas zapisu jak również odczytu:

    FreeNAS i system ZFS - log device, cache device.

    Ponieważ wielkość pliku była niewielka, dane trafiły w całości do bufora w RAM,




    dane nie były odczytywane z dysków i nie wywoływały operacji I/O na urządzeniach HDD. Widać 100% trafień w bufor RAM oraz stopniowe zwiększanie zajętości bufora napływającymi danymi:

    FreeNAS i system ZFS - log device, cache device.

    W typowym zastosowaniu ilość pamięci RAM i wielkość udostępnionych zasobów,
    pozwolą na przechowywanie w buforze RAM wyłącznie danych które są najczęściej używane.

    Zapiszmy i odczytajmy plik o wielkości 10GB. Tym razem widoczne są zarówno zapisy (kolor zielony) jak i odczyty (kolor niebieski), na dyski w grupie RAIDZ:

    FreeNAS i system ZFS - log device, cache device.


    Aktywność I/O na interfejsach dysków pokrywa się częściowo z aktywnością na interfejsach sieciowych:

    FreeNAS i system ZFS - log device, cache device.


    Można zauważyć, że w systemie wyposażonym w 8GB RAM maksymalny poziom bufora ARC wyniósł około 6GB:

    FreeNAS i system ZFS - log device, cache device.

    Jest to bardzo wydajne rozwiązanie optymalizacji odczytu (szczególnie losowego). W systemach gdzie bufor przyniesie korzyści, warto zwiększyć ilość dostępnej pamięci RAM. W niektórych rozwiązaniach można także pomyśleć o zastosowaniu urządzenia cache (np. dysk SSD zapewniający wysoki transfer i krótkie czasy dostępu), jednocześnie pamiętamy o tym że RAM będzie zawsze domyślnym buforem (bardzo dobrze gdyż szybkość pamięci RAM jest znacznie większa niż dysku SSD).

    Cache device, log device.

    Dodanie urządzenia cache zwiększy zapotrzebowanie na RAM i zmniejszy jego ilość dostępną dla ARC. Nie każdy system odniesie korzyść z zastosowania urządzenia cache. Jeżeli w interfejsie freenas zauważymy, że wielkość ARC sięga wartości maksymalnej wolnej pamięci RAM natomiast ilość trafień utrzymuje się poniżej 90% można wypróbować L2ARC.

    Do wolumenu vol0 dodajmy dysk cache SSD o wielkości 16GB.

    FreeNAS i system ZFS - log device, cache device.

    FreeNAS i system ZFS - log device, cache device.

    Zwykłe sekwencyjne zapisywanie i odczytywanie pojedynczego pliku raczej nie pozwoli sięgnąć do L2ARC, większość operacji odczytu zostanie obsłużona przez ARC. Poza sekwencyjnym zapisywaniem i odczytywaniem pojedynczego pliku uruchomimy program iometer wykonujący w czterech procesach operacje losowego odczytu (90%) i zapisu (10%) w dwóch plikach 4GB.

    FreeNAS i system ZFS - log device, cache device.

    Jak widać bufor ARC (RAM) oraz w niewielkim stopniu L2ARC (SSD) praktycznie całkowicie przejęły operacje odczytu losowego podczas sekwencyjnego zapisywania danych. Widać ciągłe operacje zapisu na urządzeniu cache oraz sporadyczne operacje odczytu. Na dyskach RAIDZ1 widoczne są praktycznie tylko ciągłe zapisy związane z sekwencyjnymi operacjami zapisu plików 2x32GB. Brak konieczności ciągłego wyszukiwania danych na dyskach 3x160GB dla procesu iometer korzystnie wpływa na szybkość zapisu.

    Podczas testu widać systematyczne "napełnianie" się buforów ARC i L2ARC do granicy ich pojemności, liczba trafień dla bufora w pamięci RAM jest znacznie większa.

    FreeNAS i system ZFS - log device, cache device.

    Zapis plików 32GB zakończył się i rozpoczynamy ich odczyt. Pliki nie zostały zapisane w całości w buforach dlatego na dyskach z puli RAID Z1 pojawiają się odczyty:

    FreeNAS i system ZFS - log device, cache device.

    Liczba trafień spada gdyż coraz więcej odczytów pochodzi z puli dysków RAIDZ1:

    FreeNAS i system ZFS - log device, cache device.

    Możemy dodać urządzenie log wpływające na operacje zapisu synchronicznego. Domyślnie jako log wykorzystywana jest pamięć RAM i jest to bardzo dobre rozwiązanie, jednak w niektórych systemach dodanie np. dysku SSD jako urządzenia log, może wpłynąć na lepsze osiągi systemu. Spróbujmy dodać bufor dla operacji zapisów synchronicznych w postaci urządzenia log jako 16GB dysk SSD. W wielu środowiskach dodanie urządzenia log będzie miało jeszcze mniejszy wpływ na wydajność niż urządzenia cache dla L2ARC, jednak spróbujmy zasymulować działanie log. Dodajemy urządzenie log w postaci 16GB dysku SSD:

    FreeNAS i system ZFS - log device, cache device.

    FreeNAS i system ZFS - log device, cache device.

    Zapisujemy sekwencyjnie dwa pliki 16GB, następnie je odczytujemy. Dwa z czterech procesów iometer konfigurujemy tak aby operacje miały charakter losowy z czego 90% to zapisy 10% odczyty.

    Na urządzeniu log widoczny jest ciągły ruch podczas operacji zapisu, dla systemu potrzebującego krótkich czasów odpowiedzi przy zapisach synchronicznych odpowiednie urządzenie log może przynieść korzyści:

    FreeNAS i system ZFS - log device, cache device.

    Przy obecnej wydajności dysków HDD oraz cenach RAM, warto wystartować od konfiguracji o odpowiedniej pojemności pamięci masowej pracującej w RAIDZ (dla większej ilości dysków warto pomyśleć o RAIDZ2 lub w szczególnych przypadkach RAIDZ3), oraz odpowiedniej ilości RAM (można wstępnie szacować +1GB RAM / 1TB pamięci masowej). Jeżeli w systemie zainstalowane jest 32-64GB RAM oraz macie pewność, że L2ARC poprawi wydajność lub potwierdzają to eksperymenty można zastosować bufor SSD dla L2ARC (max 5-10x pojemności RAM). L2ARC nie jest rozwiązaniem na niedobór pamięci RAM w systemie. L2ARC może się sprawdzić jeżeli mimo dużej ilości RAM, ARC wykorzystuje całą wolną pamięć oraz liczba trafień spada poniżej 90%. W dalszych krokach można pomyśleć o buforze w postaci urządzenia log dla operacji zapisów synchronicznych. Zwykle log jest mniej pojemny niż L2ARC. W typowych domowych zastosowaniach, lub systemach kopii zapasowych, ARC oparty o RAM będzie całkowicie wystarczający. L2ARC oraz urządzenie log warto potraktować jako dodatkowe możliwości, które dostarcza ZFS.

    Niezawodność.

    W zastosowaniach biznesowych, poza odpowiednimi zasobami RAM warto zadbać o jakość pamięci (np. wykorzystać pamięć ECC), a także zastosować redundantne zasilacze oraz podtrzymanie zasilania np. wykorzystując UPS. Pozwoli to na utrzymanie niezawodności rozwiązania opartego o ZFS. Dostępność oraz wydajność należy zapewnić także na poziomie komunikacji sieciowej stosując grupy interfejsów (LAG) pozwalające na szybsze i niezawodne transmisje. Jeżeli przełącznik wspiera LACP dla agregacji interfejsów warto wykorzystać tą możliwość. Dalszym krokiem w kierunku niezawodnych rozwiązań mogą być dwa przełączniki obsługujące ruch sieciowy (odporność na awarię jednego przełącznika) oraz uruchomiony multipathing na urządzeniach klienckich.

    Spróbujmy "zepsuć" jeden fizyczny dysk wchodzący w skład RAIDZ1, otrzymujemy informację o degradacji RAID jednak dane nadal są dostępne (oraz została zachowana ich integralność), możemy także zapisywać nowe dane na udział.

    FreeNAS i system ZFS - log device, cache device.

    Po ponownym podłączeniu dysku, następuje odbudowa RAID:

    FreeNAS i system ZFS - log device, cache device.

    Możemy obserwować proces odbudowy:

    FreeNAS i system ZFS - log device, cache device.

    Podczas odbudowy widoczny jest transfer danych pomiędzy dyskami grupy RAID:

    FreeNAS i system ZFS - log device, cache device.

    Gdyby podczas odbudowy awarii uległ kolejny dysk grupy RAIDZ prawdopodobnie dane zostałyby uszkodzone, dlatego warto pomyśleć o konfiguracji RAIDZ2 lub RAIDZ3 odpornej na jednoczesną awarię większej ilości dysków w grupie.

    Szczegóły na temat arc i l2arc możemy uzyskać wykonując po zalogowaniu się do freenas z wykorzystaniem ssh polecenie uruchamiające skrypt:
    arc_summary.py | more

    Szczegóły na temat aktywności dysków w puli odświeżane w 10 sekundowych odstępach możemy zobaczyć wydając polecenie:
    zpool iostat -v vol0 10


    Czy wykorzystujesz urządzenia cache i log dla ZFS ?


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.