Osoby odpowiedzialne za systemy pamięci masowych w firmach regularnie spotykają się z problemem wydajności zgłaszanym przez użytkowników bądź administratorów baz danych, poczty elektronicznej czy środowisk wirtualnych. Co prawda, problem nie zawsze musi leżeć po stronie macierzy dyskowych, bo często przyczynia się do niego niewystarczająco wydajna infrastruktura sieciowa. Niemniej istnieje szereg działań, których można spróbować, aby zagwarantować większą wydajność pamięci masowych w firmie klienta.

Tym bardziej, że ich administratorzy, a więc pośrednio także integratorzy, często muszą iść na kompromis. Zwykle oczekuje się od nich systematycznego wzrostu pojemności środowiska storage, który nie spowoduje utraty wydajności. Niestety, z reguły nie jest to takie proste. Do tego dochodzą kwestie budżetowe – gwarancja wydajności zwykle wiąże się z koniecznością zakupu szybszych dysków i kontrolerów. Różnica w ich cenie (w procentowym ujęciu) z reguły jest większa, niż wzrost uzyskanej wydajności.

 

Prędkość obrotowa nie zawsze ma znaczenie

Zanim na rynek trafiły dyski SSD, producenci spędzili wiele czasu nad stworzeniem napędów mechanicznych o odpowiednio wysokiej wydajności. Kontrolery dysków oraz wbudowane w nie interfejsy raczej nie stanowiły wąskiego gardła, a był nim mechanizm, na który składają się talerze oraz głowice odczytujące dane. Na szybkość odczytu ma wpływ przede wszystkim prędkość obrotowa talerza (RPM), a także jego wielkość. Im większa średnica, tym dłuższe ruchy musi wykonywać głowica, co też wpływa na wydajność dysku. Dlatego w najszybszych napędach stosowane są tylko 2,5-calowe talerze.

Pierwsze dyski (60 lat temu!) kręciły się w prędkością 1,2 tys. obrotów na minutę. Obecnie w komputerach stosuje się napędy 5,4 tys. obr./min lub o 33 proc. szybsze (7,2 tys. obr./min). Natomiast w serwerach i macierzach dyskowych wykorzystywane są głównie dyski SAS lub Fibre Channel o prędkości 10 i 15 tys. obr./min (ich producenci twierdzą, że osiągnęli fizyczną granicę prędkości). Tam, gdzie nie jest potrzebna duża wydajność, stosowane są też napędy z interfejsem SAS, ale o prędkości 7,2 tys. obr./min (tzw. near line SAS, NL-SAS).

Trochę zamieszania w dziedzinie wydajności wprowadziły dyski hybrydowe, w których jako pamięć cache wysokiej pojemności stosowane są kości flash. Wszyscy producenci napędów (Seagate, Toshiba, WD) oferują modele o prędkości 5,4 tys. obr./min. Natomiast ich przedstawiciele podkreślają, że dzięki pamięci cache efektywna, możliwa do zaobserwowania wydajność może być nawet lepsza niż w zwykłych dyskach 7,2 tys. obr./min. Warto jednak zaznaczyć, że efekt przyspieszenia można uzyskać tylko w sytuacji, gdy na dyskach przechowywany jest system operacyjny i aplikacje, bowiem z reguły same dane nie są odczytywane tak często, aby trafić do pamięci cache hybrydowego napędu. Trzeba też pamiętać, że dyski hybrydowe są przeznaczone do użytku konsumenckiego, więc ich trwałość nie jest wystarczająca do tego, by stosować je w serwerach (np. do obsługi środowiska wirtualnych desktopów, gdzie często odczytywane są te same pliki systemowe, które znajdują się wewnątrz wirtualnych maszyn).

 

SSD nie zawsze szybko się zwróci

Mogłoby się wydawać, że naturalną odpowiedzią na wyzwania związane z wydajnością systemów pamięci masowych są nośniki wykorzystujące kości pamięci flash. Mimo że zaczęto je stosować w infrastrukturze serwerowej już 20 lat temu, to dopiero od około pięciu lat widać prawdziwy wzrost ich popularności.

 Jednak, aby dzięki pamięciom flash skutecznie zwiększyć wydajność systemu pamięci masowych, potrzeba wiele wysiłku, testów i… pieniędzy. Producenci rozwiązań bazujących na nośnikach flash przedstawiają wiele wyliczeń, w których udowadniają, że mimo wysokiej ceny ich zastosowanie zwraca się w dłuższym okresie. Dzięki większej wydajności pojedynczego napędu, do wydajnej pracy aplikacji potrzeba mniej dysków SSD niż mechanicznych, a więc mniej miejsca w serwerowni i energii poświęcanej zarówno na zasilanie, jak też klimatyzowanie całego systemu.

Teoretycznie dostawcy mają więc rację, chociaż dysproporcja w cenach rozwiązań, w których stosowane są dyski HDD i SSD, nadal jest olbrzymia. Między innymi dlatego producenci nie ustają w wysiłkach, by wprowadzić na rynek kości pamięci flash produkowane w nowych technologiach – obecnie w jednej komórce mogą być przechowywane trzy bity, a już mówi się o możliwości zmieszczenia tam czterech. Ale większa pojemność, która ma zapewnić niższą cenę, negatywnie wpływa na… wydajność, z powodu której w ogóle klienci są zainteresowani pamięciami flash. Dlatego na pełną dojrzałość tego modelu przechowywania danych trzeba jeszcze poczekać.

Pięć działań, które pomogą wyeliminować wąskie gardła z pamięci masowych

1. Zwróć uwagę na wydajność związaną z liczbą operacji wejścia-wyjścia na sekundę (IOPS), bowiem to najczęściej spotykane wąskie gardło w pamięciach masowych. Najbardziej podatne na ten problem są bazy danych, poczta elektroniczna, środowiska wirtualne i backupowe, w których trzeba wykonać kopię danych w określonym czasie (okno backupowe). Najskuteczniejszym rozwiązaniem problemu z często obserwowanym powolnym, ale systematycznym wzrostem ilości przetwarzanych danych jest wdrożenie warstw w systemie pamięci masowej oraz skorzystanie z oprogramowania do automatycznego przenoszenia danych między warstwami, w zależności od częstotliwości ich odczytu. Czasem jednak warto rozważyć wdrożenie nowej macierzy, w której wszystko będzie większe i szybsze – kontrolery, pamięć cache, interfejsy, dyski itd.

2. Zadbaj o skrócenie czasu reakcji – to pomoże w środowiskach, w których następuje losowy dostęp do danych w trybie ciągłym (bazy danych, maszyny wirtualne). Najłatwiej jest je uzyskać przez wymianę kontrolera macierzowego na szybszy (niestety, większość urządzeń na to nie pozwala) lub instalację dysków SSD, w których opóźnienie w dostępie do danych jest ok. 300 razy krótsze niż w zwykłych mechanicznych dyskach. Jednak instalacja dysków SSD w macierzy z wolnym kontrolerem nie ma sensu, więc także w tym przypadku często konieczne może się okazać kupno nowego rozwiązania.

3. Zapewnij odpowiednią przepustowość sieci, bowiem nawet najlepszej wydajności serwery NAS lub macierze SAN mogą dostarczać dane zbyt wolno, jeśli wąskie gardło będzie stanowiła sieć. W infrastrukturze niskiej jakości mogą być gubione ramki i pakiety z danymi, co prowadzi do konieczności powtórzenia transmisji. Warto również skorzystać z zapewnionej przez wiele macierzy funkcji agregacji portów sieciowych.

4. Sprawdź, czy przypadkiem niewystarczająca wydajność serwerów nie wpływa na szybkość pracy pamięci masowych. Może tak się zdarzyć, gdy na serwerach często wykonywane są długotrwałe prace porządkowe, jak partycjonowanie i przeindeksowywanie baz danych. Wówczas macierze znajdują się pod stałym obciążeniem, co skutkuje ich mniejszą efektywną wydajnością.

5. Obserwuj wszystkie parametry środowiska pamięci masowych. Większość problemów z wydajnością można przewidzieć dzięki wczesnemu wykryciu i przeciwdziałaniu im w zalążku. Szczególną uwagę trzeba zwracać na to, czy ze wzrostem ilości danych wskazana jest inwestycja zapewniająca wzrost wydajności macierzy. Nie jest to konieczne np. w przypadku rozwiązań archiwizacyjnych, ale może skutkować dłuższym czasem wyszukania informacji w większym archiwum. Wiele problemów sprawiają też sieci, dlatego trzeba być w stałym kontakcie z ich administratorem.

 

Obecnie w systemach pamięci masowych stosowanych jest wiele półśrodków, aby zapewnić właściwy balans między pojemnością, wydajnością i ceną. Popularność zdobywają różne mechanizmy gwarantujące redukcję ilości przechowywanych danych, głównie deduplikacja i kompresja. Ma to sens o tyle, że z racji zapewnianego przez pamięć flash szybkiego losowego dostępu do danych, najczęściej przechowywane są w niej bazy danych i maszyny wirtualne. Te pierwsze świetnie poddają się kompresji, zaś drugie – deduplikacji.

Łyżką dziegciu w beczce miodu w tym przypadku jest jednak fakt, że wszystkie mechanizmy redukcyjne także wpływają negatywnie na wydajność, więc konieczne jest zapewnienie odpowiednio szybkich kontrolerów macierzowych. Z tego powodu część producentów tradycyjnych macierzy dyskowych, w których można zainstalować dyski HDD i SSD, zaprezentowała modele z szybszymi kontrolerami i wyłącznie nośnikami SSD (all-flash).

 

Przeceniany IOPS, niedoceniany czas reakcji

Z oczywistych powodów w przypadku pamięci flash nie mówimy już o prędkości obrotowej. Ale nadal pozostały dwa ważne parametry, które wpływają na wydajność całego systemu przechowywania danych. Niestety, każdy dostarcza tylko częściowych informacji, a na dodatek uzyskanymi wynikami można łatwo manipulować, z czego dość skrzętnie korzystają działy marketingu niektórych producentów.

Głównym parametrem, którym można opisać wydajność każdego urządzenia pamięci masowych, jest liczba wykonanych operacji wejścia-wyjścia na sekundę (Input-Output Per Second). Aby pomiar liczby IOPS był porównywalny, musi być dokonany dla ustalonej wielkości bloku danych. I tu pojawia się pierwszy problem, utrudniający wybór właściwego urządzenia do potrzeb klienta. Wśród dostawców macierzy all-flash przyjęło się, że podawana jest maksymalna liczba IOPS obliczona tylko w przypadku odczytu danych (bez zapisu, który trwa znacznie dłużej niż odczyt) przechowywanych w blokach o wielkości 4 kB i bez wykorzystania pamięci cache. Tymczasem w najczęściej spotykanych scenariuszach użycia następuje około 70 proc. operacji odczytu i 30 proc. zapisu, a poza tym blok danych o wielkości 4 kB prawie nigdy nie jest stosowany – najczęściej wykorzystuje się bloki 8 kB dla baz danych i 32 kB dla wirtualizacji.

Jerzy Adamiak

konsultant ds. systemów pamięci masowych, Alstor

Znaczny wzrost wydajności środowiska pamięci masowych mogą zapewnić wirtualizacyjne rozwiązania programowe. Ułatwiają one połączenie w jeden system wielu różnych rodzajów nośników – kart pamięci w serwerach, macierzy all-flash i tradycyjnych. Dzięki prowadzonej analizie częstotliwości wykorzystania danych automatycznie decydują o przechowywaniu bloków danych na nośniku o odpowiedniej wydajności. Zapewniają także znacznie niższy koszt użytkowania całego środowiska storage

Magdalena O’Dwyer

Product Manager, Synology

Oferowane obecnie na rynku serwery NAS zapewniają wydajność, która jest w stanie zaspokoić potrzeby naprawdę dużych przedsiębiorstw. Dzięki możliwości zainstalowania dysków SSD nie ma problemu z przechowywaniem na nich kilkudziesięciu lub nawet kilkuset aktywnych wirtualnych maszyn, których kopię można wykonywać na podłączony przez sieć drugi serwer NAS.

 

Poza tym zdecydowanie ważniejszym a często pomijanym parametrem jest tzw. czas reakcji (response time), który opisuje czas zmierzony od wysłania żądania informacji przez aplikację do momentu jej otrzymania. Pomiar tego czasu też nastręcza trudności, bowiem parametr ten proporcjonalnie zależy od liczby IOPS – im więcej operacji wejścia-wyjścia (większe obciążenie macierzy), tym dłuższy czas odpowiedzi. Ale mimo wszystko zapewnia on lepsze wyobrażenie o ogólnej wydajności danego urządzenia, bo opisuje nie tylko właściwości nośnika, ale też kontrolera macierzowego.

Kolejnym parametrem, podawanym czasami przez producentów, jest transfer mierzony w czasie (GB/s). To też jest trik marketingowy, bowiem przy macierzach all-flash nie ma on żadnego znaczenia. Dostawcy podają wysokie wartości tego parametru, które można uzyskać tylko wykorzystując macierze all-flash do backupu lub streamingu wideo, do czego z ekonomicznego punktu widzenia w ogóle się nie nadają.

Warto zwrócić także uwagę na interfejsy przyłączeniowe. W macierzach all-flash najczęściej stosowany jest interfejs Fibre Channel. Praktycznie wszystkie modele wyposażone są też w interfejs iSCSI, ale uważany jest on za zbyt wolny i niepraktyczny, ponieważ wydłuża czas odpowiedzi. W kilku modelach można też spotkać interfejs FCoE – jest on wystarczający do wielu zastosowań, ale nie tak szybki jak FC (jedno łącze FC 16 Gb/s zapewnia krótszy czas odpowiedzi niż dwa zagregowane łącza FCoE 10 Gb/s). W niektórych macierzach zastosowano także łącze Infiniband, z którego korzysta się przede wszystkim w środowiskach wysokowydajnego przetwarzania (HPC).

 

Zapotrzebowanie na warstwy w pamięciach masowych

Według statystyk największą ilość miejsca w systemie storage zajmują tzw. dane nieaktywne (cold data), które albo nigdy nie zostaną odczytane, albo będzie to następowało wyjątkowo rzadko. Stąd pomysł na podzielenie systemów pamięci masowych na warstwy, w których na szybszych (lecz droższych) nośnikach przechowywane są najczęściej odczytywane dane, zaś na tych wolniejszych informacje archiwalne oraz inne, do których dostęp potrzebny jest rzadko. Dzięki takiemu rozwiązaniu administratorzy nie muszą już tworzyć statystyk wykorzystania poszczególnych danych i ich migracji.

W praktyce jednak mechanizm ten nie działa w tak prosty sposób. Mimo że proces migracji danych pomiędzy warstwami jest zautomatyzowany, nadal konieczne jest sprawowanie nad nim kontroli, aby nie „wylać dziecka z kąpielą”. Wykonywana przez kontroler ciągła analiza częstotliwości odczytu małych bloków danych jest nieekonomiczna – wymagałaby zbyt wiele pamięci i wiązałaby się z nadmiernym obciążeniem procesorów w kontrolerze. Dlatego bloki analizowanych danych są dość duże (od 1 do 500 MB), a ich migracja następuje powoli, gdy macierz nie jest obciążona bieżącą pracą produkcyjną. Efekty związane ze wzrostem wydajności widać więc dopiero po długim czasie i nie da się tu zaobserwować efektu „wow”, który występuje często przy macierzach all-flash.

Wszystkie przedstawione okoliczności nie powinny jednak zniechęcać do sprzedaży pamięci masowych. Integratorzy, którzy wyspecjalizują się w tej dziedzinie, mogą liczyć na duże zyski nie tylko z wdrożeń, ale także usług związanych utrzymaniem, dostarczaniem dodatkowych nośników, zapewnianiem replikacji, obsługą transportu kopii backupowych itd. Warto też przekonywać przyszłych użytkowników do prowadzenia testów w ramach projektu proof of concept. Większość producentów jest świadomych, że dobór macierzy zapewniającej wydajność odpowiednią dla danego klienta stanowi duże wyzwanie, więc bez problemu udostępnia modele testowe z przeznaczonej do tego celu puli.