FAST VP w pamięci masowej Unity: jak to działa

Dzisiaj porozmawiamy o ciekawej technologii zaimplementowanej w systemach pamięci masowej Unity/Unity XT - FAST VP. Jeśli po raz pierwszy słyszysz o Unity, możesz sprawdzić charakterystykę systemu, korzystając z łącza na końcu artykułu. Przez ponad rok pracowałem nad FAST VP w zespole projektowym Dell EMC. Dzisiaj chcę porozmawiać o tej technologii bardziej szczegółowo i ujawnić kilka szczegółów jej wdrożenia. Oczywiście tylko te, które wolno ujawnić. Jeśli interesują Cię zagadnienia efektywnego przechowywania danych lub po prostu nie do końca zrozumiałeś dokumentację, to ten artykuł z pewnością będzie przydatny i ciekawy.

FAST VP w pamięci masowej Unity: jak to działa

Od razu powiem czego nie będzie w materiale. Nie będzie wyszukiwania konkurentów i porównywania z nimi. Nie mam też zamiaru mówić o podobnych technologiach z open source, bo dociekliwy czytelnik już o nich wie. I oczywiście nie będę niczego reklamować.

Warstwy pamięci masowej. Cele i zadania FAST VP

FAST VP oznacza w pełni zautomatyzowane zarządzanie warstwami pamięci masowej dla puli wirtualnej. Troszke trudne? Nie ma problemu, teraz się nad tym zastanowimy. Warstwy to sposób organizacji przechowywania danych, w którym istnieje kilka poziomów (warstw), w których te dane są przechowywane. Każdy ma swoją własną charakterystykę. Najważniejsze: wydajność, objętość i cena przechowywania jednostki informacji. Oczywiście istnieje między nimi związek.

Ważną cechą tieringu jest to, że dostęp do danych jest zapewniany jednolicie niezależnie od poziomu przechowywania, na którym aktualnie się znajdują, a wielkość puli jest równa sumie rozmiarów znajdujących się w niej zasobów. Na tym właśnie polega różnica w stosunku do pamięci podręcznej: wielkość pamięci podręcznej nie jest dodawana do całkowitej objętości zasobu (w tym przypadku puli), a dane w pamięci podręcznej duplikują pewien fragment głównych danych multimedialnych (lub będą duplikowane, jeśli dane z pamięci podręcznej nie zostały jeszcze zapisane). Ponadto podział danych według poziomów jest ukryty przed użytkownikiem. Oznacza to, że nie widzi dokładnie, jakie dane znajdują się na poszczególnych poziomach, choć może na to pośrednio wpływać, ustalając polityki (więcej o nich później).

Przyjrzyjmy się teraz funkcjom implementacji warstwowania pamięci masowej w Unity. Unity ma 3 poziomy lub warstwy:

  • Ekstremalna wydajność (dyski SSD)
  • Wydajność (dysk twardy SAS 10 tys./15 tys. obr./min)
  • Pojemność (dysk twardy NL-SAS 7200 obr./min)

Przedstawiono je w kolejności malejącej według wydajności i ceny. Ekstremalna wydajność obejmuje tylko dyski półprzewodnikowe (SSD). Pozostałe dwa poziomy obejmują dyski magnetyczne, które różnią się prędkością obrotową i odpowiednio wydajnością.

Nośniki pamięci tego samego poziomu i tej samej wielkości są łączone w macierz RAID, tworząc grupę RAID (grupa RAID, w skrócie RG); O dostępnych i zalecanych poziomach RAID możesz przeczytać w oficjalnej dokumentacji. Pule pamięci tworzone są z grup RAID z jednego lub większej liczby poziomów, z których następnie dystrybuowana jest wolna przestrzeń. Z puli jest przydzielane miejsce na systemy plików i jednostki LUN.

FAST VP w pamięci masowej Unity: jak to działa

Dlaczego potrzebuję warstwowania?

Krótko i abstrakcyjnie: osiągnąć lepsze rezultaty przy minimalnych nakładach zasobów. Mówiąc dokładniej, wynik jest zwykle rozumiany jako zestaw cech systemu pamięci masowej – szybkość i czas dostępu, koszt przechowywania i inne. Minimum zasobów oznacza najmniejsze wydatki: pieniądze, energię i tak dalej. FAST VP wdraża mechanizmy redystrybucji danych na różnych poziomach w systemach pamięci masowej Unity/Unity XT. Jeśli mi wierzysz, możesz pominąć następny akapit. O reszcie powiem ci trochę więcej.

Właściwa dystrybucja danych pomiędzy warstwami pamięci masowej pozwala zaoszczędzić na całkowitych kosztach przechowywania, poświęcając szybkość dostępu do rzadko używanych informacji, i poprawić wydajność, przenosząc często używane dane na szybsze nośniki. Tutaj ktoś mógłby argumentować, że nawet bez warstwowania zwykły administrator wie, gdzie umieścić jakie dane, jakie są pożądane cechy systemu przechowywania danych dla jego zadania itp. Jest to niewątpliwie prawda, jednak ręczna dystrybucja danych ma swoje wady:

  • wymaga czasu i uwagi administratora;
  • Nie zawsze możliwe jest „przerysowanie” zasobów pamięci masowej w celu dostosowania ich do zmieniających się warunków;
  • znika istotna zaleta: ujednolicony dostęp do zasobów znajdujących się na różnych poziomach składowania.

Aby administratorzy pamięci masowej mniej martwili się o bezpieczeństwo pracy, dodam, że i tutaj konieczne jest kompetentne planowanie zasobów. Teraz, gdy pokrótce omówiono zadania związane z tieringiem, przyjrzyjmy się, czego możesz oczekiwać od FAST VP. Pora wrócić do definicji. Pierwsze dwa słowa – Fully Automated – dosłownie tłumaczone są jako „w pełni zautomatyzowane” i oznaczają, że dystrybucja pomiędzy poziomami odbywa się automatycznie. Cóż, Pula Wirtualna to pula danych zawierająca zasoby z różnych poziomów przechowywania. Oto jak to wygląda:

FAST VP w pamięci masowej Unity: jak to działa

Patrząc w przyszłość powiem, że FAST VP przenosi dane tylko w obrębie jednej puli, a nie pomiędzy kilkoma pulami.

Problemy rozwiązane przez FAST VP

Porozmawiajmy najpierw abstrakcyjnie. Mamy pulę i pewien mechanizm, który może redystrybuować dane w tej puli. Pamiętając, że naszym celem jest osiągnięcie maksymalnej produktywności, zadajmy sobie pytanie: w jaki sposób możemy to osiągnąć? Może być ich kilka i tutaj FAST VP ma coś do zaoferowania użytkownikowi, ponieważ technologia ta to coś więcej niż tylko warstwowanie pamięci masowej. Oto kilka sposobów, w jakie FAST VP może zwiększyć wydajność puli:

  • Rozkład danych na różnych typach dysków, poziomach
  • Dystrybucja danych pomiędzy dyskami tego samego typu
  • Dystrybucja danych podczas rozbudowy puli

Zanim przyjrzymy się, jak rozwiązuje się te zadania, musimy poznać kilka niezbędnych faktów na temat działania FAST VP. FAST VP działa z blokami o określonej wielkości - 256 megabajtów. Jest to najmniejszy ciągły „fragment” danych, który można przenieść. W dokumentacji tak to się nazywa: plasterek. Z punktu widzenia FAST VP wszystkie grupy RAID składają się z zestawu takich „elementów”. Odpowiednio, dla takich bloków danych gromadzone są wszystkie statystyki we/wy. Dlaczego wybrano taki rozmiar bloku i czy zostanie on zmniejszony? Blok jest dość duży, ale jest to kompromis pomiędzy ziarnistością danych (mniejszy rozmiar bloku oznacza dokładniejszy rozkład) a dostępnymi zasobami obliczeniowymi: przy istniejących rygorystycznych ograniczeniach pamięci RAM i dużej liczbie bloków dane statystyczne mogą zająć za dużo, a liczba obliczeń wzrośnie proporcjonalnie.

Jak FAST VP przydziela dane do puli. Politycy

Aby kontrolować rozmieszczenie danych w puli z włączoną funkcją FAST VP, istnieją następujące zasady:

  • Najwyższy dostępny poziom
  • Poziom automatyczny
  • Zacznij od poziomu wysokiego, a następnie automatycznego poziomu (domyślnie)
  • Najniższy dostępny poziom

Mają one wpływ zarówno na początkową alokację bloku (pierwsze zapisanie danych), jak i późniejszą realokację. Gdy dane znajdą się już na dyskach, redystrybucja zostanie zainicjowana zgodnie z harmonogramem lub ręcznie.

Najwyższy dostępny poziom próbuje umieścić nowy blok na poziomie o najwyższej wydajności. Jeśli nie ma na nim wystarczającej ilości miejsca, umieszcza się go na kolejnym najbardziej produktywnym poziomie, ale wtedy dane można przenieść na bardziej produktywny poziom (jeśli jest miejsce lub poprzez przesunięcie innych danych). Funkcja Auto-Tier umieszcza nowe dane na różnych poziomach w zależności od ilości dostępnego miejsca i jest redystrybuowana w zależności od zapotrzebowania i wolnego miejsca. Rozpocznij od wysokiego poziomu, a następnie Auto-Tier jest polityką domyślną i również zalecaną. Po umieszczeniu początkowym działa jako najwyższy dostępny poziom, a następnie dane są przenoszone w zależności od statystyk użytkowania. Polityka najniższego dostępnego poziomu ma na celu umieszczenie danych w najmniej produktywnej warstwie.

Przesyłanie danych odbywa się z niskim priorytetem, aby nie zakłócać użytecznego działania systemu przechowywania, jednakże istnieje ustawienie „Szybkość relokacji danych”, które zmienia priorytet. Jest tu osobliwość: nie wszystkie bloki danych mają tę samą kolejność redystrybucji. Na przykład bloki oznaczone jako metadane zostaną najpierw przeniesione na szybszy poziom. Metadane to, że tak powiem, „dane o danych”, czyli dodatkowa informacja, która nie jest danymi użytkownika, ale przechowuje ich opis. Na przykład informacja w systemie plików o tym, 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. Biorąc pod uwagę, że metadane mają zwykle znacznie mniejszy rozmiar, oczekuje się, że korzyści z przeniesienia ich na dyski o wyższej wydajności będą większe.

Kryteria, którymi Fast VP kieruje się w swojej pracy

Głównym kryterium każdego bloku jest w przybliżeniu charakterystyka „zapotrzebowania” na dane, która zależy od liczby operacji odczytu i zapisu fragmentu danych. Nazywamy tę cechę „temperaturą”. Istnieją żądane (gorące) dane, które są „gorętsze” niż dane nieodebrane. Obliczany jest okresowo, domyślnie w odstępach jednej godziny.

Funkcja obliczania temperatury ma następujące właściwości:

  • W przypadku braku wejść/wyjść dane z czasem „stygną”.
  • Przy mniej więcej równym obciążeniu w czasie temperatura najpierw wzrasta, a następnie stabilizuje się w pewnym zakresie.

Następnie brane są pod uwagę zasady opisane powyżej i wolne miejsce na każdym poziomie. Dla jasności zamieszczę zdjęcie z dokumentacji. Tutaj kolory czerwony, żółty i niebieski wskazują odpowiednio bloki o wysokiej, średniej i niskiej temperaturze.

FAST VP w pamięci masowej Unity: jak to działa

Wróćmy jednak do zadań. Możemy zatem zacząć analizować, co zostało zrobione, aby rozwiązać problemy FAST VP.

A. Rozkład danych na różnych typach dysków, poziomach

Właściwie to jest główne zadanie FAST VP. Reszta w pewnym sensie jest jego pochodną. W zależności od wybranej polityki dane będą dystrybuowane na różnych poziomach przechowywania. Przede wszystkim brana jest pod uwagę polityka rozmieszczenia, następnie temperatura bloku i rozmiar/szybkość grup RAID.

W przypadku zasad dotyczących najwyższego/najniższego dostępnego poziomu wszystko jest dość proste. W przypadku pozostałych dwóch tak jest. Dane są rozdzielane na różne poziomy, biorąc pod uwagę rozmiar i wydajność grup RAID: tak, że stosunek całkowitej „temperatury” bloków do „warunkowej maksymalnej wydajności” każdej grupy RAID jest w przybliżeniu taki sam. Dzięki temu obciążenie rozkłada się mniej więcej równomiernie. Więcej potrzebnych danych jest przenoszonych na szybkie nośniki, a rzadko używane dane są przenoszone na wolniejsze nośniki. Idealnie dystrybucja powinna wyglądać mniej więcej tak:

FAST VP w pamięci masowej Unity: jak to działa

B. Dystrybucja danych pomiędzy dyskami tego samego typu

Pamiętajcie, że na początku pisałem ten nośnik z jeden lub więcej poziomy są połączone w jedną pulę? W przypadku pojedynczego poziomu FAST VP również ma co robić. Aby osiągnąć maksymalną wydajność na dowolnym poziomie, zaleca się równomierną dystrybucję danych pomiędzy dyskami. To (w teorii) pozwoli ci uzyskać maksymalną liczbę IOPS. Można uznać, że dane w grupie RAID są równomiernie rozmieszczone na dyskach, ale nie zawsze ma to miejsce w przypadku grup RAID. W przypadku braku równowagi FAST VP będzie przenosić dane pomiędzy grupami RAID proporcjonalnie do ich wolumenu i „wydajności warunkowej” (w ujęciu liczbowym). Dla przejrzystości pokażę schemat równoważenia trzech grup RAID:

FAST VP w pamięci masowej Unity: jak to działa

B. Dystrybucja danych przy rozszerzaniu puli

To zadanie jest szczególnym przypadkiem poprzedniego i jest wykonywane po dodaniu do puli grupy RAID. Aby nowo dodana grupa RAID nie pozostała bezczynna, część danych zostanie do niej przeniesiona, co oznacza, że ​​obciążenie zostanie rozdzielone pomiędzy wszystkie grupy RAID.

Poziomowanie zużycia dysku SSD

Korzystając z równoważenia zużycia, FAST VP może wydłużyć żywotność dysku SSD, chociaż ta funkcja nie jest bezpośrednio związana z warstwowaniem pamięci masowej. Ponieważ dane o temperaturze są już dostępne, brana jest również pod uwagę liczba operacji zapisu i wiemy, jak przenosić bloki danych, logiczne byłoby, aby FAST VP rozwiązał ten problem.

Jeżeli liczba wpisów w jednej grupie RAID znacznie przekracza liczbę wpisów w innej, FAST VP dokona redystrybucji danych zgodnie z liczbą operacji zapisu. Z jednej strony odciąża to i oszczędza zasoby niektórych dysków, z drugiej strony dodaje „pracę” mniej obciążonym, zwiększając ogólną wydajność.

W ten sposób FAST VP podejmuje tradycyjne wyzwania związane z warstwowaniem pamięci masowej i robi nieco więcej. Wszystko to pozwala na dość efektywne przechowywanie danych w systemie Storage Unity.

Kilka wskazówek

  1. Nie zaniedbuj czytania dokumentacji. Istnieją najlepsze praktyki, które działają całkiem nieźle. Jeśli będziesz ich przestrzegać, z reguły nie pojawiają się żadne poważne problemy. Reszta porad w zasadzie je powtarza lub uzupełnia.
  2. Jeśli skonfigurowałeś i włączyłeś FAST VP, lepiej pozostawić go włączonym. Niech rozpowszechnia dane w wyznaczonym czasie i stopniowo niż raz w roku i ma poważny wpływ na wykonywanie innych zadań. W takich przypadkach redystrybucja danych może zająć dużo czasu.
  3. Zachowaj ostrożność przy wyborze okna relokacyjnego. Chociaż jest to oczywiste, spróbuj wybrać czas z najmniejszym obciążeniem Unity i przeznacz wystarczający okres czasu.
  4. Zaplanuj rozbudowę swojego systemu przechowywania, zrób to na czas. Jest to ogólna rekomendacja, która jest ważna również dla FAST VP. Jeśli ilość wolnego miejsca jest bardzo mała, przesyłanie danych spowolni lub stanie się niemożliwe. Zwłaszcza jeśli zaniedbałeś punkt 2.
  5. Podczas rozszerzania puli z włączoną funkcją FAST VP nie należy zaczynać od najwolniejszych dysków. Oznacza to, że albo dodajemy wszystkie zaplanowane grupy RAID na raz, albo najpierw dodajemy najszybsze dyski. W takim przypadku redystrybucja danych na nowe „szybkie” dyski zwiększy ogólną prędkość puli. W przeciwnym razie rozpoczęcie od „wolnych” dysków może prowadzić do bardzo nieprzyjemnej sytuacji. W pierwszej kolejności dane zostaną przeniesione na nowe, stosunkowo wolne dyski, a następnie, w przypadku dodania szybszych, w odwrotnym kierunku. Występują tu niuanse związane z różnymi politykami FAST VP, ale ogólnie możliwa jest podobna sytuacja.

Jeśli szukasz tego produktu, możesz wypróbować Unity za darmo, pobierając urządzenie wirtualne Unity VSA.

FAST VP w pamięci masowej Unity: jak to działa

Na koniec materiału udostępniam kilka przydatnych linków:

wniosek

Chciałbym napisać o wiele, ale rozumiem, że nie wszystkie szczegóły będą interesujące dla czytelnika. Można na przykład bardziej szczegółowo porozmawiać o kryteriach, według których FAST VP podejmuje decyzje o przesyłaniu danych, o procesach analizy statystyk we/wy. Również temat interakcji z Pule dynamicznei to zasługuje na osobny artykuł. Można nawet pofantazjować o rozwoju tej technologii. Mam nadzieję, że nie było nudno i że Was nie zanudziłem. Do zobaczenia!

Źródło: www.habr.com

Dodaj komentarz