FAST VP w macierzy Unity: jak to działa

Dziś porozmawiamy o ciekawej technologii zrealizowanej w systemach macierzowych Unity/Unity XT – FAST VP. Jeśli po raz pierwszy słyszysz o Unity, pod koniec artykułu znajdziesz link do specyfikacji systemu. W zespole projektowym Dell EMC pracowałem nad FAST VP przez ponad rok. Dziś chcę szczegółowo opowiedzieć o tej technologii i ujawnić kilka szczegółów dotyczących jej realizacji. Oczywiście tylko te, które można ujawnić. Jeśli interesujesz się skutecznym przechowywaniem danych lub po prostu nie do końca zrozumiałeś dokumentację, ten artykuł na pewno będzie przydatny i interesujący.

FAST VP w macierzy Unity: jak to działa

Od razu mówię, co nie będzie tematem materiału. Nie będzie poszukiwania konkurencji ani porównywania z nimi. Nie planuję również opowiadać o podobnych technologiach z open source, ponieważ ciekawski czytelnik i tak o nich wie. I oczywiście nie zamierzam nic reklamować.

Tierowanie pamięci. Cele i zadania FAST VP

FAST VP to w pełni zautomatyzowane tierowanie pamięci dla wirtualnych pul. Brzmi skomplikowanie? Nic, już wyjaśniam. Tierowanie to sposób organizacji przechowywania danych, w ramach którego istnieje kilka poziomów (tiers), na których te dane są przechowywane. Każdy z nich ma swoje charakterystyki. Najważniejsze to: wydajność, objętość oraz cena przechowywania jednostki informacji. Oczywiście istnieje między nimi wzajemny związek.

Ważną cechą tierowania jest to, że dostęp do danych jest zapewniany jednolicie, niezależnie od poziomu przechowywania, na którym się obecnie znajdują, a rozmiar puli jest równy sumie rozmiarów zasobów, które wchodzą w jej skład. Tutaj tkwią różnice w porównaniu z pamięcią podręczną: rozmiar pamięci podręcznej nie jest dodawany do ogólnej pojemności zasobu (puli w tym przypadku), a dane w pamięci podręcznej duplikują jakiś fragment danych głównego nośnika (lub będą to robić, jeśli dane z pamięci podręcznej nie zostały jeszcze zapisane). Rozkład danych według poziomów jest również ukryty przed użytkownikiem. To znaczy, że nie widzi, jakie dokładnie dane znajdują się na każdym poziomie, chociaż może na to wpływać pośrednio, ustalając polityki (o nich później).

Teraz przyjrzyjmy się cechom realizacji tierowania pamięci w Unity. W Unity wyróżnia się 3 poziomy, czyli tier'y:

  • Ekstremalna wydajność (SSD)
  • Wydajność (dyski SAS HDD 10k/15k RPM)
  • Pojemność (dyski NL-SAS HDD 7200 RPM)

Są one przedstawione w kolejności malejącej wydajności i ceny. W Extreme performance znajdują się wyłącznie dyski SSD. W dwóch pozostałych tierach znajdują się dyski magnetyczne, różniące się prędkością obrotową i tym samym wydajnością.

Nośniki danych z jednego poziomu i jednego rozmiaru są łączone w macierz RAID, tworząc grupę RAID (Raid group, w skrócie – RG); można przeczytać o dostępnych i zalecanych poziomach RAID w oficjalnej dokumentacji. Z grup RAID jednego lub kilku poziomów tworzone są pule danych (Storage pool), z których następnie rozdzielane jest wolne miejsce. Z puli przydzielane jest miejsce na systemy plików i LUN-y.

FAST VP w macierzy Unity: jak to działa

A po co mi Tiering?

Jeśli krótko i ogólnie: aby osiągnąć lepsze wyniki, używając minimalnych zasobów. Jeśli bardziej konkretnie, to przez wyniki zazwyczaj rozumie się zbiór parametrów macierzy dyskowej – prędkość i czas dostępu, koszt przechowywania i inne. Pod minimalnymi zasobami rozumie się jak najmniejsze wydatki: pieniędzy, energii itd. FAST VP realizuje mechanizmy redistribucji danych między różnymi poziomami w macierzy Unity/Unity XT. Jeśli mi wierzysz, można pominąć następny akapit. Dla pozostałych opowiem nieco więcej.

Właściwe rozdzielenie danych na poziomach przechowywania pozwala zaoszczędzić na całkowitych kosztach macierzy, rezygnując z szybkości dostępu do rzadko używanych informacji, oraz zwiększyć wydajność, przenosząc często używane dane na szybsze nośniki. Ktoś może zauważyć, że i bez tieringu normalny administrator wie, gdzie umieścić jakie dane, jakie są pożądane cechy macierzy dla jego zadania itd. Oczywiście, tak jest, ale ręczne rozdzielanie danych ma swoje wady:

  • wymaga czasu i uwagi administratora;
  • nie zawsze udaje się „przekształcić” zasoby macierzy w odpowiedzi na zmieniające się warunki;
  • traci się ważną zaletę: ujednolicony dostęp do zasobów znajdujących się na różnych poziomach przechowywania.

Aby administratorzy storage'a mniej martwili się o bezpieczeństwo работы, dodam, że właściwe planowanie zasobów jest również konieczne. Teraz, gdy zadania związane z tieringiem są krótko omówione, przyjrzyjmy się, czego można oczekiwać od FAST VP. Czas wrócić do definicji. Pierwsze dwa słowa – Fully Automated – dosłownie tłumaczą się jako „w pełni zautomatyzowane” i oznaczają, że przypisanie do poziomów odbywa się automatycznie. A Virtual Pool to zbiór danych, który obejmuje zasoby z różnych poziomów przechowywania. Tak to wygląda:

FAST VP w macierzy Unity: jak to działa

Wyprzedzając fakty, powiem, że FAST VP przenosi dane tylko w obrębie jednego zbioru, a nie między wieloma zbiorami.

Zadania, które rozwiązuje FAST VP

Na początek porozmawiajmy w sposób abstrakcyjny. Mamy zbiór i pewien mechanizm, który może redystrybuować dane w obrębie tego zbioru. Mając na uwadze, że naszym celem jest osiągnięcie maksymalnej wydajności, zadamy sobie pytanie: jakimi sposobami można to osiągnąć? Może być kilka, a tutaj FAST VP ma wiele do zaoferowania użytkownikowi, ponieważ technologia ta stanowi coś więcej niż tylko tiering storage'a. Oto jakie sposoby FAST VP może zwiększyć wydajność zbioru:

  • Podział danych na różne typy dysków i poziomy
  • Podział danych w obrębie jednego typu dysków
  • Podział danych przy rozszerzaniu zbioru

Zanim przeanalizujemy, jak te zadania są rozwiązywane, musimy znać kilka niezbędnych faktów dotyczących działania FAST VP. FAST VP operuje blokami określonego rozmiaru – 256 megabajtów. To minimalny ciągły „kawałek” danych, który może być przeniesiony. W dokumentacji nazywa się to slice. Z perspektywy FAST VP wszystkie grupy RAID składają się z zestawu takich „kawałków”. W związku z tym cała statystyka wejścia-wyjścia jest gromadzona dla takich bloków danych. Dlaczego wybrano właśnie taki rozmiar bloku i czy będzie on zmniejszony? Blok jest wystarczająco duży, ale jest to kompromis między dokładnością danych (mniejszy rozmiar bloku – dokładniejsze przypisanie) a dostępnymi zasobami obliczeniowymi: przy istniejących ograniczeniach dotyczących pamięci operacyjnej oraz dużej liczbie bloków dane statystyczne mogą zajmować zbyt wiele miejsca, a liczba obliczeń wzrośnie proporcjonalnie.

Jak FAST VP umieszcza dane w zbiorze. Polityki

Aby zarządzać rozmieszczeniem danych w puli z włączonym FAST VP, istnieją takie polityki:

  • Najwyższy dostępny poziom
  • Auto-Tier
  • Najpierw najwyższy, potem Auto-Tier (domyślnie)
  • Najniższy dostępny poziom

Wpływają one zarówno na początkowe rozmieszczenie bloku (gdy dane są po raz pierwszy zapisywane), jak i na późniejsze przekształcenia. Gdy dane są już rozmieszczone na dyskach, przekształcenie będzie inicjowane zgodnie z harmonogramem lub ręcznie.

Najwyższy dostępny poziom stara się umieścić nowy blok na najbardziej wydajnym poziomie. Gdy brakuje miejsca na nim – na następnym poziomie wydajności, ale później dane mogą być przenoszone na bardziej wydajny poziom (przy dostępności miejsca lub wypierając inne dane). Auto-Tier rozmieszcza nowe dane na różnych poziomach, w zależności od rozmiaru dostępnej przestrzeni, a przekształcenia odbywają się na podstawie popytu i dostępnego miejsca. Najpierw najwyższy, potem Auto-Tier – to domyślna i również zalecana polityka. Przy początkowym rozmieszczeniu działa jak Najwyższy dostępny poziom, a następnie następuje przenoszenie danych w zależności od statystyk ich wykorzystania. Polityka Najniższego dostępnego poziomu stara się umieścić dane na najmniej wydajnym poziomie.

Przenoszenie danych odbywa się z niskim priorytetem, aby nie przeszkadzać w użytecznym działaniu SNA, jednak istnieje ustawienie „Wskaźnik przenoszenia danych”, które zmienia priorytet. Istnieje tu cecha: nie wszystkie bloki danych mają tę samą kolejność przekształcenia. Na przykład bloki oznaczone jako metadane zostaną przeniesione na szybszy poziom w pierwszej kolejności. Metadane to, mówiąc najprościej, „dane o danych”, pewna dodatkowa informacja, która nie jest danymi użytkownika, ale opisuje je. Na przykład informacja w systemie plików, która mówi, w którym bloku znajduje się dany plik. Oznacza to, że szybkość dostępu do danych zależy od szybkości dostępu do metadanych. Mając na uwadze, że metadane zazwyczaj mają znacznie mniejszy rozmiar, oczekuje się większych korzyści z ich przeniesienia na bardziej wydajne dyski.

Kryteria, które Fast VP używa w swojej pracy

Głównym kryterium dla każdego bloku, jeśli mówić bardzo ogólnie, jest charakterystyka „wymagalności” danych, która zależy od liczby operacji odczytu i zapisu fragmentu danych. Ta charakterystyka nazywana jest „Temperaturą”. Są dane, które są bardziej „gorące” niż te, które nie są wymagane. Obliczana jest okresowo, domyślnie co godzinę.

Funkcja obliczania temperatury ma następujące cechy:

  • W przypadku braku wejścia/wyjścia dane z czasem „stają się zimniejsze”.
  • Przy mniej więcej równomiernym obciążeniu w czasie, temperatura najpierw wzrasta, a następnie stabilizuje się w określonym zakresie.

Następnie uwzględniane są polityki, opisane powyżej, oraz dostępna przestrzeń na każdym poziomie. Dla przejrzystości zamieszczam obrazek z dokumentacji. Tutaj czerwonym, żółtym i niebieskim oznaczone są bloki o wysokiej, średniej i niskiej temperaturze.

FAST VP w macierzy Unity: jak to działa

Ale wróćmy do zadań. Zatem możemy przejść do analizy tego, co robimy, aby rozwiązać zadania FAST VP.

A. Rozdzielanie danych między różnymi typami dysków, poziomami

Oto główne zadanie FAST VP. Pozostałe, w pewnym sensie, są od niej zależne. W zależności od wybranej polityki, dane będą rozdzielane między różnymi poziomami przechowywania. Najpierw uwzględnia się politykę umieszczania, następnie temperaturę bloków i rozmiar/wydajność grup RAID.

Dla polityk Najwyższy/Najniższy Dostępny Poziom wszystko jest wystarczająco proste. W przypadku dwóch pozostałych sprawa wygląda następująco. Na różnych poziomach dane są rozdzielane z uwzględnieniem rozmiaru i wydajności grup RAID: tak, aby stosunek całkowitej „temperatury” bloków do „warunkowej maksymalnej wydajności” każdej grupy RAID był mniej więcej taki sam. W ten sposób obciążenie jest rozdzielane dość równomiernie. Bardziej wymagane dane są przenoszone na szybsze nośniki, rzadziej używane – na wolniejsze. W idealnym przypadku rozdzielenie powinno wyglądać mniej więcej tak:

FAST VP w macierzy Unity: jak to działa

B. Rozdzielanie danych między dyskami tego samego typu

Pamiętaj, na początku pisałem, że nośniki informacji z jednego lub kilku Czy poziomy łączą się w jeden zbior? W przypadku jednego poziomu dla FAST VP również jest to możliwe. Aby wydajność danego poziomu była maksymalna, zaleca się równomierne rozłożenie danych pomiędzy dyskami. To pozwoli (teoretycznie) uzyskać maksymalną liczbę IOPS. Dane w ramach grupy RAID można uznać za równomiernie rozłożone na dyskach, natomiast pomiędzy grupami RAID nie zawsze tak jest. W przypadku nierównowagi FAST VP będzie przemieszczać dane pomiędzy grupami RAID proporcjonalnie do ich objętości i „warunkowej wydajności” (w wyrażeniu liczbowym). Dla lepszego zobrazowania przedstawiam schemat rebalansowania pomiędzy trzema grupami RAID:

FAST VP w macierzy Unity: jak to działa

V. Rozkład danych podczas rozszerzania zbioru

To zadanie jest szczególnym przypadkiem poprzedniego i wykonuje się, gdy do zbioru dodaje się grupę RAID. Aby nowo dodana grupa RAID nie była nieaktywna, część danych zostanie na nią przeniesiona, a więc i obciążenie wszystkich grup RAID zostanie rozłożone na nowo.

Wyrównywanie zużycia SSD

Dzięki wyrównywaniu zużycia FAST VP może przedłużyć żywotność SSD, choć funkcja ta nie odnosi się bezpośrednio do Storage Tiering. Skoro mamy już dane o temperaturze, a także uwzględniamy liczbę operacji zapisu oraz potrafimy przenosić bloki danych, logiczne byłoby, aby FAST VP zajął się i tym problemem.

W przypadku, gdy liczba zapisów do jednej grupy RAID znacznie przewyższa liczbę zapisów do innej, FAST VP przemieszcza dane zgodnie z liczbą operacji zapisu. Z jednej strony zmniejsza to obciążenie i chroni zasoby niektórych dysków, z drugiej strony dodaje „pracy” dla mniej obciążonych, podnosząc ogólną wydajność.

W ten sposób FAST VP przejmuje tradycyjne zadania Storage Tiering i wykonuje trochę więcej. To wszystko pozwala dość efektywnie przechowywać dane w systemach pamięci masowej z rodziny Unity.

Kilka porad

  1. Nie zaniedbuj czytania dokumentacji. Istnieją najlepsze praktyki, które działają dość dobrze. Jeśli ich przestrzegać, to poważne problemy zazwyczaj się nie pojawiają. Pozostałe porady w głównej mierze powtarzają lub uzupełniają je.
  2. Jeśli skonfigurowałeś i włączyłeś FAST VP, lepiej go nie wyłączać. Niech rozdziela dane w przypisanym mu czasie, stopniowo, zamiast raz na rok, co poważnie wpływa na wydajność innych zadań. W takich przypadkach redistribucja danych może wydłużyć się na długi czas.
  3. Zwróć uwagę na wybór okna relokacji. Choć to oczywiste, postaraj się wybrać czas o najmniejszym obciążeniu dla Unity i zaplanuj wystarczająco dużą ilość czasu.
  4. Planuj rozszerzenie macierzy dyskowej i rób to na czas. To ogólna zasada, która jest ważna również dla FAST VP. Jeśli wolne miejsce jest bardzo małe, to przenoszenie danych zwolni się lub stanie się niemożliwe. Szczególnie, jeśli zignorowałeś punkt 2.
  5. Rozszerzając pulę przy włączonym FAST VP, nie powinieneś zaczynać od najwolniejszych dysków. To znaczy, albo dodajemy wszystkie zaplanowane grupy RAID od razu, albo najpierw dodajemy najszybsze dyski. W takim przypadku redistribucja danych na nowe, „szybkie” dyski podniesie ogólną wydajność puli. W przeciwnym razie, rozpoczynając od „wolnych” dysków, można napotkać bardzo nieprzyjemną sytuację. Najpierw dane zostaną przeniesione na nowe, stosunkowo wolne dyski, a potem, przy dodaniu szybszych, proces odbywa się w odwrotnym kierunku. Są tu pewne niuanse związane z różnymi politykami FAST VP, ale w ogólnym przypadku taka sytuacja jest możliwa.

Jeśli zastanawiasz się nad tym produktem, możesz przetestować Unity całkowicie za darmo, pobierając wirtualne urządzenie Unity VSA.

FAST VP w macierzy Unity: jak to działa

Na zakończenie materiału dzielę się kilkoma przydatnymi linkami:

Podsumowanie

Chciałbym napisać o wielu rzeczach, ale rozumiem, że nie wszystkie szczegóły będą interesować czytelnika. Na przykład, można by dokładniej omówić kryteria, na podstawie których FAST VP podejmuje decyzję o przenoszeniu danych, procesy analizy statystyk wejścia-wyjścia. Ponadto wcale nie poruszono tematu współpracy z Dynamic Pools, co zasługuje na osobny artykuł. Może nawet pomyśleć o przyszłości tej technologii. Mam nadzieję, że nie było nudno i nie zmęczyłem was. Do zobaczenia następnym razem!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster