Architektura systemów

Miękkie zmiany w świeżej pamięci

Miękkie zmiany w świeżej pamięci

Rozmowa z Moniką Zakrzewską, inżynierem systemowym pamięci masowych. Dyskutujemy o zmianach zachodzących w wewnętrznej architekturze pamięci masowych, a w szczególności w warstwie oprogramowania. Rozmawiamy o konsekwencjach tych zmian dla wydajności, skalowania i dostępności usług składowania danych, dla ich bezpieczeństwa, a także dla biznesu klientów i ich budżetów IT.

 

Dlaczego zajmuje się Pani systemami pamięci masowych? Duża część inżynierów migruje ze swoimi zainteresowaniami zawodowymi w kierunku wręcz odwrotnym – w stronę oprogramowania…

To prawda, ale to nie tak, że pamięci masowe są tożsame ze sprzętem. Coraz bardziej przypominają środowiska aplikacyjne, specyficzne, ale jednak. Odpowiadając bardziej wprost, dla mnie pamięci masowe są dziedziną, w której aktualnie odbywa się prawdziwa rewolucja technologiczna, i ona dzieje się w dużej mierze właśnie w sferze oprogramowania.

Ta rewolucja, jak zakładam, ma wiele wspólnego z technologiami pamięci półprzewodnikowych, takich jak Flash…

Zdecydowanie tak, ale nowe nośniki są wyzwalaczem szerszych zmian. Mówiąc o pamięciach Flash bardzo łatwo jest skupić się na detalach związanych z elektroniką, podczas gdy zmiany w dziedzinie oprogramowania są poważniejsze, a także trwalsze, niż taka czy inna technologia zapisu danych. Poza tym, proszę zauważyć, że systemy pamięci masowych oparte na pamięciach Flash to tylko jeden z wielu równolegle występujących trendów w dziedzinie zwiększania wydajności i efektywności przetwarzania danych. Pamięci masowych nie można traktować jako obszaru samodzielnego, zwłaszcza teraz, kiedy o ten sam cel funkcjonalny czy wydajnościowy konkurują ze sobą różne architektury.


„Mówiąc o pamięciach Flash bardzo łatwo jest skupić się na detalach związanych z elektroniką, podczas gdy zmiany w dziedzinie oprogramowania są poważniejsze, a także trwalsze, niż taka czy inna technologia zapisu danych”


No właśnie, architektura. Czy rewolucja, o której Pani mówi, dotyczy samej koncepcji architektury systemów, czy też raczej sposobu jej realizacji w sferze oprogramowania?

Trudno to rozdzielić, mówimy raczej o pewnym kontinuum. Technologia doszła do takiego punktu, w którym umieszczenie określonych funkcji w oprogramowaniu lub w sprzęcie nie wynika z możliwości technicznych w tych obszarach, ale jest decyzją podejmowaną na podstawie założeń funkcjonalnych. Jeśli priorytetem jest wydajność, funkcja trafia do umownie rozumianego sprzętu, a jeśli elastyczność, trafia do warstwy oprogramowania. Mówię „umownie”, bo przecież nawet sam sprzęt to nie tylko sprzęt fizyczny, ale także firmware, mikrokody itd. Opcji jest więc sporo.

To co z tą rewolucją?

Według mnie rewolucja polega na tym, że funkcje zarządzania danymi można obecnie całkowicie oddzielić od sprzętu. Przybyło warstw abstrakcji, w związku z czym oprogramowanie służące, załóżmy, do kompresji danych, można stworzyć tak, by mogło współpracować z wieloma różnymi technologiami zapisu danych. Do tej pory było tak, że oprogramowanie systemów pamięci masowych było ściśle zoptymalizowane pod kątem nośników, a więc najczęściej dysków twardych.

Ścisła integracja zapewniała maksymalną możliwą wydajność, ma się rozumieć…

Oczywiście. Ale jednocześnie praktycznie całkowicie eliminowała elastyczność. Producent nie mógł stworzyć aplikacji do wykonywania snapszotów dla jednej platformy sprzętowej, a potem po prostu użyć jej na innej platformie. To mniej więcej tak, jakby chcieć uruchomić program działający na domowym komputerze na serwerze klasy mainframe, i odwrotnie. Zupełnie inna architektura i założenia. Ten brak elastyczności nie dotyczył tylko producentów rozwiązań, ale także bezpośrednio klientów.

W jakim sensie?

W takim sensie, że zakupiony system pamięci masowych trudno było rozbudować, a nawet zrekonfigurować. Bieżące prace utrzymaniowe, proste czynności, wydawało by się, jak zmiana wielkości bloku danych, zmiana wielkości grupy dyskowej, a w niektórych przypadkach nawet dodanie czy wymiana pojedynczego nośnika, wymagały specjalnych procedur, a często po prostu wzywania inżynierów producenta.


„Według mnie rewolucja polega na tym, że funkcje zarządzania danymi można obecnie całkowicie oddzielić od sprzętu. Do tej pory było tak, że oprogramowanie systemów pamięci masowych było ściśle zoptymalizowane pod kątem nośników (…) Bieżące prace utrzymaniowe, proste czynności, wydawało by się (…) wymagały specjalnych procedur, a często po prostu wzywania inżynierów producenta. (…). Większość klientów nadal tkwi dokładnie w takim właśnie modelu”


Może kiedyś to było do wytrzymania, bo zmienność potrzeb nie była taka duża. Teraz taki model wydaje się dość słabo przystawać do realiów…

Większość klientów nadal tkwi dokładnie w takim właśnie modelu. A szkoda, bo on prowadzi w prostej linii do tego, że wydajność aplikacji biznesowych trzeba zapewniać nie rekonfiguracją, a innymi metodami. Zwykle kończy się dodatkowymi zakupami sprzętu i oprogramowania, oraz długimi konsultacjami ze specjalistami. Sumarycznie to są naprawdę spore kwoty.

Dodatkowe zakupy sprzętu – co przez to rozumieć? Rozbudowę konfiguracji?

To byłoby miłe, ale ten scenariusz jest możliwy głównie w teorii. Producenci kalkulują ceny tak, że rozbudowy i powiązane z nimi dodatkowe licencje na oprogramowanie są dla klienta drogie. Jeśli nie kupił czegoś od razu, płaci ‘frycowe’. Z tego powodu, firmy nierzadko wolą kupić nową macierz, niż rozbudowywać już posiadaną. Dotychczas używany sprzęt nie jest wykorzystywany optymalnie z punktu widzenia potrzeb, więc szybko przestaje je spełniać. Często nie jest nawet zamortyzowany. I tak, koniec końców, brak możliwości elastycznego zarządzenia konfiguracją rodzi całe mnóstwo nieplanowanych wydatków.

Czyli, reasumując, całkowity koszt posiadania systemu pamięci masowych jest w praktyce dużo większy, niż kwoty nominalnie do niego przypisane. Zmiana w dziedzinie oprogramowania macierzy coś tu zmienia?

Zmienia wszystko! Jeśli mamy możliwość ‘oderwania’ oprogramowania od konkretnego nośnika, a w pewnym zakresie także od kontrolera macierzy, mamy do czynienia z całkiem nową sytuacją. Zmiana konfiguracji staje się zmianą wysokopoziomową, która nie wpływa na działające ‘pod spodem’ oprogramowanie sterujące, mikrokody i tak dalej. Większość ludzi z branży, nawet inżynierów, nie do końca pojmuje, jak wiele to zmienia. Gdy opowiadamy im, co jest w związku z tym możliwe, nie dowierzają.

A co jest możliwe?

Tego jest całkiem sporo. Można na przykład swobodnie zmieniać wielkość bloku danych dla grup dyskowych – bez wzywania inżynierów producenta. Ponieważ wszystko dzieje się wirtualnie, a nie w ścisłym powiązaniu z warstwą sprzętową, każdej aplikacji można umożliwić wykorzystanie bloku o innej wielkości w ramach tej samej grupy dyskowej, a więc znacznie efektywniej zarządzać wydajnością i dostępną pojemnością. W ramach pojedynczej grupy dyskowej można też stosować różne nośniki, co do tej pory było kłopotliwe. To tylko najbardziej oczywiste rzeczy, które są możliwe w nowych macierzach, a których próżno szukać w rozwiązaniach tradycyjnych. Przełożenie tych możliwości na wysokość kosztów utrzymania środowisk jest bezdyskusyjne.

To może w takim razie podrążmy temat nieco głębiej. Czy nowe systemy pamięci masowych są w stanie uchronić klienta przed wspomnianymi wymuszonymi wymianami?

Oczywiście. To co powiedziałam przed chwilą o zmianie wielkości bloku, to jedna z nich. Inne wynikają np. z tego, że producenci nowoczesnych macierzy inaczej podchodzą do zagadnienia skalowania. W systemach dyskowych, których architektura i działanie są ściśle podporządkowane wolno działającemu nośnikowi obrotowemu, zabiegi na danych, takie jak kompresja, deduplikacja czy wyliczanie sum kontrolnych, są bardzo kosztowne wydajnościowo, a zwykle jeszcze dodatkowo płatne. Alternatywą jest zakup dedykowanych rozwiązań, ale to przecież też wydatek. W macierzach AFA [All-Flash Array – przyp. red.] kompresja i deduplikacja, kalkulowanie kodów ochrony danych i inne usługi są standardowo włączone i wszelkie wyliczenia dotyczące wydajności, a także pojemności, już to uwzględniają. Efekt jest taki, że pojemność użyteczna macierzy tradycyjnej jest mniejsza od jej pojemności surowej, bo kody parzystości grup RAID zajmują miejsce. W przypadku macierzy o nowoczesnej architekturze kody też zajmują trochę miejsca, ale dzięki kompresji pojemność użyteczna dla aplikacji jest większa, i to nawet kilkukrotnie, niż pojemność surowa.


„W macierzach AFA kompresja i deduplikacja, kalkulowanie kodów ochrony danych i inne usługi są standardowo włączone i wszelkie wyliczenia dotyczące wydajności, a także pojemności, już to uwzględniają. Efekt jest taki, że (…) pojemność użyteczna dla aplikacji jest większa, i to nawet kilkukrotnie, niż pojemność surowa”


Ale to już nie zasługa oprogramowania, lecz nośnika, prawda? Bo przecież to wysoka wydajność pamięci półprzewodnikowych tworzy warunki do tego, że kompresja może być wykonywana bez znaczącego wpływu na wydajność całości systemu…

Nie do końca. Te same nośniki Flash umieszczone w macierzy tradycyjnej nie zapewnią znacząco większej wydajności, co niejednokrotnie już ćwiczyliśmy, udowadniając klientom, że to słaby pomysł. Stare oprogramowanie nie potrafi wykorzystać wydajności nośników półprzewodnikowych. Kluczem do wydajności jest architektura, w której poszczególne elementy są dobrze dopasowane do całościowych założeń.

Czyli jaka?

Dotychczasowe architektury miały przed sobą wyzwanie w postaci powolnego dysku, i do niego trzeba było dostosować całą logikę działania macierzy. Jeśli system miał być wydajny, musiał ukryć przed serwerami fakt, że ‘na zapleczu’ działały powolne dyski. Architektura opierała się więc na wielowarstwowym buforowaniu danych i inteligentnym synchronizowaniu ich między buforami. Stąd przecież wzięły się wielkie pamięci cache w macierzach. W porównaniu do tradycyjnych, w nowoczesnych systemach pamięci masowych nośnik jest piorunująco szybki. W związku z tym, wielowarstwowe buforowanie danych może wręcz przeszkadzać wydajności. Na wydajność nie można patrzyć z punktu widzenia pojedynczego elementu systemu, ale systemu jako całości. Na przykład w systemach firmy Pure Storage, którymi zajmuję się ostatnio najwięcej, rolę bufora pełni moduł nośnika, który zawiera nie jeden, a dwa dyski SSD. Między innymi dzięki temu, usługi takie jak deduplikacja, kompresja i szyfrowanie realizowane są już podczas zapisu. Jedyną operacją w trybie asynchronicznym jest defragmentacja danych…

…Co dodatkowo zwiększa wydajność. Sprytne, nie powiem. Zakładam, że dane są kopiowane na wszystkie moduły nośników jednocześnie.

Tak, i to jest kolejna sprawa, która odróżnia nowoczesne systemy od dotychczasowych. W tradycyjnych systemach standardowym mechanizmem ochrony danych przed awarią pojedynczego nośnika jest stworzenie grupy RAID, w ramach której dane są zapisywane nadmiarowo i rozrzucane po wybranych lub wszystkich nośnikach w grupie. Ponieważ wzrostowi pojemności dysków twardych już od dawna nie towarzyszył wzrost ich wydajności, ten model ochrony przestał wystarczać. Upowszechnienie się macierzy półprzewodnikowych pozwoliło zrezygnować z tej formy ochrony, jako anachronizmu związanego z nośnikami magnetycznymi. W nowych macierzach powszechnie stosowane są techniki polegające na tworzeniu skrótów jednokierunkowych bloków danych i ich równomiernej dystrybucji na wszystkich nośnikach w macierzy. To znacznie lepsze zabezpieczenie, bo w dowolnym momencie można wyjąć z macierzy nie jeden, a wiele nośników, a mimo to danym nic się nie stanie.


„W tradycyjnych systemach standardowym mechanizmem ochrony danych przed awarią pojedynczego nośnika jest stworzenie grupy RAID (…) W nowych macierzach powszechnie stosowane są techniki polegające na tworzeniu skrótów jednokierunkowych bloków danych i ich równomiernej dystrybucji na wszystkich nośnikach w macierzy. To znacznie lepsze zabezpieczenie, bo w dowolnym momencie można wyjąć z macierzy nie jeden, a wiele nośników, a mimo to danym nic się nie stanie”


Wracając jeszcze do wątku pojemności: jak kompresja danych w nowoczesnych architekturach ma się do koncepcji thin provisioning, która jest dostępna w systemach tradycyjnych?

Te dwie rzeczy nie są ze sobą równoważne. Thin provisioning, a więc wirtualizacja pojemności, to swego rodzaju oszustwo konfiguracyjne, pozwalające zagwarantować aplikacjom pojemność nadmiarową w stosunku do rzeczywiście dostępnej dla każdej z nich. Nawiasem mówiąc, to w sumie kolejne pokłosie sztywności konfiguracyjnej w warstwach niższych w starych architekturach, ale na tyle użyteczne, że jest często stosowane także w tych nowych. Kompresja to tymczasem rzeczywista redukcja ilości danych zapisanych na nośnikach. Powody stosowania każdej z tych technik są inne, choć efekty ich działania mogą, w pewnym sensie, wyglądać bardzo podobnie.

A jak skalować wydajność w takich nowych systemach? Do tej pory opcje były następujące: dodać kolejny kontroler albo wymienić macierz. Są też architektury skalujące się poziomo, w których dokłada się ‘klocki’ zawierające kontrolery wraz z nośnikami…

Skalowanie zawsze odbywa się w pewnych przedziałach. Nawet systemy scale out, o których mowa, mają skończone możliwości dodawania kolejnych węzłów. Poza tym, skalowanie nie jest wyłącznie kwestią techniczną, lecz również handlową. Jak już mówiliśmy, większość producentów z oczywistych powodów preferuje sytuację, gdy klient kupuje nową macierz, a nie rozbudowuje istniejącą, ale są i tacy, którzy oferują możliwość wymiany kontrolera w cenie umowy na wsparcie techniczne. Tak właśnie robi wspomniany już Pure Storage.

Jeśli tak, to jest to spora nowość. I chyba niezła strategia, żeby wyróżnić się w oczach klientów na tle producentów zasiedziałych na rynku…

Na pewno. Ciekawostką jest w ogóle to, jak taki upgrade się odbywa – i tu znów wracamy do innowacji w dziedzinie oprogramowania. System operacyjny macierzy działa w środowisku wirtualnym separującym sprzęt od usług zarządzania danymi. Dzięki temu, wymianę kontrolera na nowszy, szybszy, można dokonać w dowolnym momencie, bez zatrzymywania działania macierzy. Efekt jest taki, że biznesowi można zapewnić nie 99%, a 100% dostępności. Są tacy klienci, dla których ten jeden procent różnicy znaczy bardzo wiele.


„Większość producentów z oczywistych powodów preferuje sytuację, gdy klient kupuje nową macierz, a nie rozbudowuje istniejącą, ale są i tacy, którzy oferują możliwość wymiany kontrolera w cenie umowy na wsparcie techniczne”


Monika Zakrzewska pracuje w warszawskiej firmie Engave Sp. z o.o., gdzie jako inżynier zajmuje się szerokim spektrum systemów pamięci masowych. Można się z nią skontaktować pod adresem monika kropka zakrzewska w domenie engave kropka pl.