Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Technologie poprawiające wydajność oparte na wykorzystaniu dysków SSD i szeroko stosowane w systemach pamięci masowej są już dawno wynalezione. Przede wszystkim jest to wykorzystanie dysku SSD jako przestrzeni dyskowej, która jest w 100% efektywna, ale droga. Dlatego stosowane są technologie męczące i buforujące, gdzie dyski SSD służą jedynie do przechowywania najpopularniejszych („gorących”) danych. Warstwy są dobre w przypadku scenariuszy długoterminowego (dni-tygodnie) wykorzystania „gorących” danych. Natomiast buforowanie jest przeznaczone do użytku krótkotrwałego (minuty i godziny). Obie te opcje są zaimplementowane w systemie przechowywania QSAN XCubeSAN. W tym artykule przyjrzymy się implementacji drugiego algorytmu - Buforowanie SSD.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Istotą technologii buforowania SSD jest wykorzystanie dysków SSD jako pośredniej pamięci podręcznej pomiędzy dyskami twardymi a pamięcią RAM kontrolera. Wydajność dysku SSD jest oczywiście niższa niż wydajność własnej pamięci podręcznej kontrolera, ale wolumin jest o rząd wielkości większy. Otrzymujemy zatem pewien kompromis pomiędzy szybkością i głośnością.

Wskazania do wykorzystania pamięci podręcznej SSD do odczytu:

  • Przewaga operacji odczytu nad zapisem (najczęściej typowa dla baz danych i aplikacji webowych);
  • Obecność wąskiego gardła w postaci wydajności macierzy dysków twardych;
  • Ilość wymaganych danych jest mniejsza niż rozmiar pamięci podręcznej SSD.

Wskazania do stosowania pamięci podręcznej SSD do odczytu i zapisu są takie same, z wyjątkiem charakteru operacji – typu mieszanego (np. serwer plików).

Większość dostawców pamięci masowych korzysta w swoich produktach z pamięci podręcznej SSD tylko do odczytu. Podstawowa różnica QSAN Zapewniają możliwość wykorzystania pamięci podręcznej również do zapisu. Aby aktywować funkcję buforowania SSD w systemach pamięci masowej QSAN, należy zakupić oddzielną licencję (dostarczaną w formie elektronicznej).

Pamięć podręczna SSD w XCubeSAN jest fizycznie zaimplementowana w postaci oddzielnych pul pamięci podręcznej SSD. W systemie może ich być maksymalnie cztery. Każda pula korzysta oczywiście z własnego zestawu dysków SSD. A już we właściwościach dysku wirtualnego ustalamy, czy i z której będzie korzystał z puli pamięci podręcznej. Włączanie i wyłączanie korzystania z pamięci podręcznej dla woluminów można wykonać online, bez zatrzymywania operacji we/wy. Możesz także na gorąco dodać dyski SSD do puli i usunąć je stamtąd. Tworząc pamięć podręczną puli SSD, musisz wybrać, w jakim trybie będzie ona działać: tylko do odczytu lub do odczytu i zapisu. Od tego zależy jego fizyczna organizacja. Ponieważ może istnieć kilka pul pamięci podręcznej, ich funkcjonalność może być różna (tzn. system może mieć jednocześnie pule pamięci podręcznej do odczytu i odczytu i zapisu).

Jeśli używana jest pula pamięci podręcznej tylko do odczytu, może ona składać się z 1–8 dysków SSD. Dyski nie muszą mieć tej samej pojemności i tego samego dostawcy, ponieważ są połączone w strukturę NRAID+. Wszystkie dyski SSD w puli są współdzielone. System niezależnie próbuje zrównoleglić przychodzące żądania pomiędzy wszystkimi dyskami SSD, aby osiągnąć maksymalną wydajność. Jeśli jeden z dysków SSD ulegnie awarii, nic złego się nie stanie: w końcu pamięć podręczna zawiera jedynie kopię danych przechowywanych na macierzy dysków twardych. Po prostu ilość dostępnej pamięci podręcznej SSD zmniejszy się (lub osiągnie zero, jeśli użyjesz oryginalnej pamięci podręcznej SSD z jednego dysku).

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Jeśli pamięć podręczna jest używana do operacji odczytu i zapisu, liczba dysków SSD w puli powinna być wielokrotnością dwóch, ponieważ zawartość jest odzwierciedlana na parach dysków (stosowana jest struktura NRAID 1+). Duplikowanie pamięci podręcznej jest konieczne, ponieważ może zawierać dane, które nie zostały jeszcze zapisane na dyskach twardych. W tym przypadku awaria dysku SSD z puli pamięci podręcznej doprowadziłaby do utraty informacji. W przypadku NRAID 1+ awaria dysku SSD spowoduje po prostu przeniesienie pamięci podręcznej do stanu tylko do odczytu, a niezapisane dane zostaną zrzucone na macierz dysku twardego. Po wymianie wadliwego dysku SSD pamięć podręczna powróci do pierwotnego trybu pracy. Nawiasem mówiąc, dla większego bezpieczeństwa możesz przypisać dedykowane części zapasowe do pamięci podręcznej odczytu i zapisu.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Podczas korzystania z funkcji buforowania SSD w XCubeSAN istnieje szereg wymagań dotyczących ilości pamięci kontrolerów pamięci masowej: im więcej pamięci systemowej, tym większa będzie dostępna pula pamięci podręcznej.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

W przeciwieństwie do większości producentów systemów pamięci masowej, którzy oferują jedynie opcję włączania/wyłączania pamięci podręcznej SSD, QSAN zapewnia więcej opcji. W szczególności można wybrać tryb pracy pamięci podręcznej w zależności od charakteru obciążenia. Istnieją trzy gotowe szablony, które w działaniu są najbliższe odpowiednim usługom: baza danych, system plików, usługa internetowa. Dodatkowo administrator może stworzyć własny profil ustawiając wymagane wartości parametrów:

  • Rozmiar bloku (rozmiar bloku pamięci podręcznej) – 1/2/4 MB
  • Liczba żądań odczytania bloku w celu skopiowania go do pamięci podręcznej (Populate-on-Read Threshold) – 1..4
  • Liczba żądań zapisania bloku w celu skopiowania go do pamięci podręcznej (próg wypełnienia przy zapisie) – 0..4

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Profile można zmieniać na bieżąco, ale oczywiście po zresetowaniu zawartości pamięci podręcznej i jej nowym „rozgrzewce”.

Biorąc pod uwagę zasadę działania pamięci podręcznej SSD, możemy wyróżnić główne operacje podczas pracy z nią:

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Odczyt danych, gdy nie ma ich w pamięci podręcznej

  1. Do kontrolera dociera żądanie od hosta;
  2. Ponieważ żądanych nie ma w pamięci podręcznej SSD, są one odczytywane z dysków twardych;
  3. Odczytane dane są wysyłane do hosta. Jednocześnie sprawdzane jest, czy te bloki są „gorące”;
  4. Jeśli tak, to są one kopiowane do pamięci podręcznej SSD w celu dalszego wykorzystania.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Odczytaj dane, jeśli są obecne w pamięci podręcznej

  1. Do kontrolera dociera żądanie od hosta;
  2. Ponieważ żądane dane znajdują się w pamięci podręcznej SSD, są stamtąd odczytywane;
  3. Odczytane dane są wysyłane do hosta.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Zapisywanie danych podczas korzystania z pamięci podręcznej odczytu

  1. Do kontrolera dociera żądanie zapisu od hosta;
  2. Dane są zapisywane na dyskach twardych;
  3. Odpowiedź wskazująca pomyślne nagranie jest zwracana do hosta;
  4. Jednocześnie sprawdzane jest, czy blok jest „gorący” (porównywany jest parametr Populate-on-Write Threshold). Jeśli tak, to jest kopiowany do pamięci podręcznej SSD w celu późniejszego wykorzystania.

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Zapisywanie danych podczas korzystania z pamięci podręcznej odczytu i zapisu

  1. Do kontrolera dociera żądanie zapisu od hosta;
  2. Dane są zapisywane w pamięci podręcznej SSD;
  3. Odpowiedź wskazująca pomyślne nagranie jest zwracana do hosta;
  4. Dane z pamięci podręcznej SSD są zapisywane na dyskach twardych w tle;

Sprawdź w akcji

Stanowisko badawcze

2 serwery (procesor: 2 x Xeon E5-2620v3 2.4 Hz / RAM: 32 GB) są połączone dwoma portami poprzez Fibre Channel 16G bezpośrednio z systemem pamięci masowej XCubeSAN XS5224D (16 GB RAM/kontroler).

Użyliśmy 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, połączonych w RAID5 (15+1), jako macierz danych i 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s jako pamięć podręczną

Utworzono 2 woluminy: po jednym dla każdego serwera.

Test 1. Pamięć podręczna SSD tylko do odczytu z 1–8 dysków SSD

Pamięć podręczna SSD

  • Typ we/wy: dostosowywanie
  • Rozmiar bloku pamięci podręcznej: 4 MB
  • Próg wypełnienia przy odczycie: 1
  • Próg wypełniania przy zapisie: 0

Wzór we/wy

  • Narzędzie: IOmeter V1.1.0
  • Pracownicy: 1
  • Znakomity (głębokość kolejki): 128
  • Specyfikacje dostępu: 4 KB, 100% odczytu, 100% losowego

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Teoretycznie im więcej dysków SSD w puli pamięci podręcznej, tym wyższa wydajność. W praktyce zostało to potwierdzone. Jedyny znaczący wzrost liczby dysków SSD przy niewielkiej liczbie woluminów nie prowadzi do efektu wybuchowego.

Test 2. Pamięć podręczna SSD w trybie odczytu i zapisu z 2–8 dyskami SSD

Pamięć podręczna SSD

  • Typ we/wy: dostosowywanie
  • Rozmiar bloku pamięci podręcznej: 4 MB
  • Próg wypełnienia przy odczycie: 1
  • Próg wypełniania przy zapisie: 1

Wzór we/wy

  • Narzędzie: IOmeter V1.1.0
  • Pracownicy: 1
  • Znakomity (głębokość kolejki): 128
  • Dane techniczne dostępu: 4 KB, 100% zapisu, 100% losowego

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Ten sam wynik: gwałtowny wzrost wydajności i skalowania wraz ze wzrostem liczby dysków SSD.

W obu testach ilość danych roboczych była mniejsza niż całkowity rozmiar pamięci podręcznej. Dlatego z biegiem czasu wszystkie bloki zostały skopiowane do pamięci podręcznej. W rzeczywistości prace zostały już przeprowadzone na dyskach SSD, praktycznie bez wpływu na dyski twarde. Celem tych testów było jednoznaczne wykazanie efektywności podgrzewania pamięci podręcznej i skalowania jej wydajności w zależności od liczby dysków SSD.

Wróćmy teraz na ziemię i sprawdźmy bardziej realistyczną sytuację, gdy ilość danych jest większa niż wielkość pamięci podręcznej. Aby test przebiegł w rozsądnym czasie (okres „rozgrzewania” pamięci podręcznej znacznie wydłuża się wraz ze wzrostem rozmiaru woluminu), ograniczymy rozmiar woluminu do 120 GB.

Test 3. Emulacja bazy danych

Pamięć podręczna SSD

  • Typ we/wy: baza danych
  • Rozmiar bloku pamięci podręcznej: 1 MB
  • Próg wypełnienia przy odczycie: 2
  • Próg wypełniania przy zapisie: 1

Wzór we/wy

  • Narzędzie: IOmeter V1.1.0
  • Pracownicy: 1
  • Znakomity (głębokość kolejki): 128
  • Specyfikacje dostępu: 8 KB, 67% odczytu, 100% losowego

Implementacja buforowania SSD w systemie pamięci masowej QSAN XCubeSAN

Werdykt

Oczywistym wnioskiem jest oczywiście dobra efektywność wykorzystania pamięci podręcznej SSD w celu poprawy wydajności dowolnego systemu pamięci masowej. Zastosowano do QSAN XCubeSAN To stwierdzenie ma pełne zastosowanie: funkcja buforowania SSD jest doskonale zaimplementowana. Dotyczy to obsługi trybów odczytu i odczytu + zapisu, elastycznych ustawień dla każdego scenariusza użytkowania, a także ogólnej wydajności systemu jako całości. Dlatego za bardzo rozsądną cenę (cena licencji jest porównywalna z kosztem 1-2 dysków SSD) można znacznie zwiększyć ogólną wydajność.

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

Dodaj komentarz