Hot Spare czy Gorący Bałagan
Popularnym podejściem do zwiększania bezpieczeństwa macierzy RAID jest posiadanie zapasowego dysku (lub kilku), aby zminimalizować czas wymiany uszkodzonego napędu. Najbardziej ekstremalną formą tego rozwiązania jest tzw. “hot spare” – zapasowy dysk faktycznie umieszczony w macierzy, ale nieużywany do momentu wykrycia przez macierz awarii dysku. W tym momencie system automatycznie wyłącza uszkodzony dysk i uaktywnia hot spare, tak jakby człowiek właśnie wyjął jeden dysk z macierzy i włożył drugi, umożliwiając jak najszybsze rozpoczęcie operacji resilvering (odbudowy macierzy). Może to skrócić czas wymiany nowego dysku z godzin lub dni do sekund i teoretycznie zapewnić ekstremalny wzrost bezpieczeństwa.
Na początku chciałbym odnieść się do tego, co osobiście uważam za błąd w konwencjach nazewnictwa. To, co nazywamy hot spare, powinno – moim zdaniem – być nazywane warm spare (ciepłą rezerwą), ponieważ dysk czeka gotowy do działania, ale nie zawiera danych niezbędnych do natychmiastowego użycia. Zapasowy dysk przechowywany poza obudową, wymagający ręcznej wymiany przez człowieka, byłby cold spare (zimną rezerwą). Aby dysk naprawdę był hot spare, musiałby być pełen danych i tym samym aktywnie uczestniczyć w macierzy RAID w jakimś charakterze. Red Hat ma dobry artykuł wyjaśniający, jak ta terminologia ma zastosowanie do witryn disaster recovery. To rozróżnienie jest ważne, ponieważ to, co nazywamy hot spare, nie zawiera jeszcze danych i nie zastępuje natychmiast uszkodzonego dysku, lecz natychmiast rozpoczyna proces przywracania utraconego dysku – jest to kluczowa różnica.
Aby zachować klarowność pojęć, od tej pory będę określał to, co dostawcy nazywają hot spare, mianem “warm spare”. Sens tego stanie się jasny za chwilę.
Istnieją dwa główne problemy z warm spare. Pierwszym jest nieskuteczność warm spare w większości przypadków użycia, a drugim ryzyko “automatycznego zniszczenia macierzy”.
Większość osób postrzega koncepcję warm spare jako sposób na zmniejszenie wysokiego ryzyka awarii drugiego dysku w macierzy parzystościowej RAID 5. Macierze RAID 5 chronią jedynie przed awarią jednego dysku w macierzy. Po awarii jednego dysku macierz nie ma żadnej formy parytetu, a awaria kolejnego napędu skutkuje całkowitą utratą danych. RAID 5 jest wybierany ze względu na bardzo niski koszt przy danej pojemności, kosztem niezawodności. Ponieważ RAID 5 jest ryzykowny w porównaniu z innymi opcjami RAID, takimi jak RAID 6 lub RAID 10, powszechne jest stosowanie warm spare w celu minimalizacji czasu, w którym macierz pozostaje w stanie zdegradowanym, umożliwiając jak najszybsze rozpoczęcie resilvering.
Istotny wniosek jest taki, że warm spare są generalnie stosowane jako bufor chroniący przed używaniem mniej niezawodnych typów macierzy RAID jako środka oszczędności kosztów. Warm spare są znacznie częściej stosowane w macierzach RAID 5, a następnie RAID 6 – obu wybieranych zamiast RAID 10 ze względu na koszt w przeliczeniu na pojemność, a nie niezawodność czy wydajność. Istnieje jeden przypadek, w którym warm spare rzeczywiście ma sens dla zwiększenia niezawodności – jest to RAID 10 z warm spare – ale do tego dojdziemy. Poza tym scenariuszem uważam, że warm spare mają niewielki sens w praktyce.
Zacznijmy od analizy RAID 1 z warm spare. RAID 1 składa się z dwóch lub więcej dysków w lustrzanym odbiciu. Dodanie warm spare jest korzystne w tym sensie, że jeśli jeden z dysków lustrzanych ulegnie awarii, warm spare natychmiast zacznie tworzyć lustrzane odbicie pozostałego dysku i ochrona zostanie wkrótce przywrócona. To wspaniale. Poza jedną drobną wadą: zamiast używać warm spare, ten sam dysk mógł przez cały czas być częścią macierzy RAID 1 jako trzecie lustro. W charakterze tego trzeciego lustra dysk poprawiłby ogólną wydajność macierzy, zapewniając niemal pięćdziesięcioprocentowy wzrost wydajności odczytu przy niezmiennej wydajności zapisu, a także zapewniając natychmiastową ochronę w przypadku awarii dysku, zamiast ochrony “gdy tylko ponownie się zsynchronizuje”. W zasadzie byłby prawdziwym “hot spare” zamiast warm spare. Nie wydając ani grosza więcej, system miałby lepszą wydajność macierzy i lepszą niezawodność, po prostu dzięki temu, że dodatkowy dysk był aktywnym członkiem macierzy, zamiast czekać bezczynnie na katastrofę.
W przypadku RAID 5 obserwujemy jeszcze poważniejsze ostrzeżenie przed koncepcją warm spare – właśnie tam, gdzie jest ona najczęstsza. RAID 5 to parzystościowy RAID z możliwością odbudowy, przy użyciu parytetu, dowolnego dysku w macierzy, który ulegnie awarii. Tu zaczynają się prawdziwe problemy. W przeciwieństwie do RAID 1, gdzie ponowna synchronizacja może być dość szybka, resilvering macierzy RAID 5 może trwać bardzo długo. Warm spare nie pomoże w ochronie macierzy, dopóki proces resilvering nie zakończy się pomyślnie – co często zajmuje wiele godzin, a łatwo może trwać dni, a nawet tygodnie lub miesiące, w zależności od rozmiaru macierzy i obciążenia. Gdybyśmy wzięli ten sam dysk warm spare i zamiast tego przypisali mu rolę dodatkowego paska parytetu, uzyskalibyśmy RAID 6. Ten sam zestaw dysków, który mamy dla RAID 5 plus warm spare, stworzyłby macierz RAID 6 o identycznej pojemności. Ponownie, podobnie jak w przykładzie z RAID 1, byłoby to podobne do posiadania hot spare – dysk uczestniczy w macierzy z aktualnymi danymi, zamiast czekać bezczynnie na awarię innego dysku. W tej roli macierz degraduje się do odpowiednika RAID 5 w przypadku awarii, ale bez czasu odbudowy – dodatkowy dysk jest użyteczny natychmiast, a nie dopiero po potencjalnie długim procesie resilvering. Za te same pieniądze i tę samą pojemność wybór RAID 6 zamiast RAID 5 plus warm spare jest bezwarunkowo lepszy.
Możemy kontynuować ten przykład dla RAID 6 plus warm spare. Ten przypadek jest nieco trudniejszy do zdefiniowania, ponieważ w większości systemów RAID, z wyjątkiem dość rzadkiego RAIDZ3 z ZFS, nie ma systemu potrójnego parytetu o krok wyżej niż RAID 6 (wyobraź sobie, że istniałby RAID 7). Gdyby istniał, dokładnie ten sam argument, który dotyczy RAID 5 plus warm spare, miałby zastosowanie do RAID 6 plus warm spare. W większości przypadków RAID 6 z warm spare musi uzasadnić swoją wartość w porównaniu z macierzą RAID 10. RAID 10 jest wydajniejszy i znacznie bardziej niezawodny niż macierz RAID 6, ale RAID 6 jest zazwyczaj wybierany w celu oszczędności kosztów w porównaniu z RAID 10. Jednak dla zrekompensowania kruchości RAID 6 czasem stosuje się warm spare. W niektórych przypadkach, np. małej pięciodyskowej macierzy RAID 6 z warm spare, jest to pod względem kosztów równoważne sześciodyskowej macierzy RAID 10 bez warm spare. W większych macierzach korzyść kosztowa RAID 6 staje się widoczna, ale im większe oszczędności, tym większa różnica w ryzyku, ponieważ parzystościowe systemy RAID szybciej zwiększają ryzyko wraz z rozmiarem macierzy niż lustrzane systemy RAID, jak RAID 10. Każda zaoszczędzona dziś kwota jest kosztem ryzykiem przestoju lub utraty danych jutro.
Warm spare dobrze sprawdza się w macierzy RAID 10, gdzie odbudowa warm spare jest odbudową lustra, podobnie jak w RAID 1, bez ryzyk parzystości, gdzie nie ma logicznie wyższego systemu RAID ponad RAID 10, z którego chcielibyśmy zaoszczędzić, wybierając bardziej kruchy system. Tutaj dodanie warm spare może mieć sens dla krytycznych macierzy, ponieważ nie ma tańszego sposobu na osiągnięcie tej samej dodatkowej niezawodności. Jednak RAID 10 jest tak niezawodny bez warm spare, że każdy zakład rozważający RAID 5 lub RAID 6 z warm spare logicznie zatrzymałby się na prostym RAID 10, skoro już przekroczył poziom niezawodności, który wcześniej rozważał. Zatem tylko zakłady, które nie rozważały tych bardziej kruchych systemów i szukają najbardziej solidnej opcji, logicznie sięgnęłyby po RAID 10 plus warm spare.
Dla ścisłości technicznej: RAID 10 można rozszerzyć dla lepszej wydajności odczytu i dramatycznej poprawy niezawodności (kosztem pięćdziesięcioprocentowego wzrostu kosztów) przez przejście na trójdyskowe lustra RAID 1 w pasku RAID 0, zamiast standardowych dwudyskowych luster RAID 1, podobnie jak pokazaliśmy w przykładzie RAID 1. Jest to poziom niezawodności rzadko poszukiwany w praktyce, ale może istnieć i jest możliwy. Zazwyczaj ogranicza to liczba dysków w fizycznej obudowie macierzy, jak i słabe wyniki w porównaniu z zbudowaniem całkowicie oddzielnej wtórnej macierzy RAID 10 w innej obudowie i późniejszym lustrzanym odbiciu na wysokim poziomie, tworząc skutecznie RAID 101 – co jest efektywnym wynikiem dzisiejszych typowych klastrów macierzy pamięci masowej wysokiej klasy.
Naszym drugim problemem jest “automatyczne zniszczenie macierzy”. Dotyczy to tylko scenariuszy parzystościowego RAID – RAID 5 i RAID 6 (lub rzadkich RAID 2, RAID 3, RAID 4 i RAIDZ3). W koncepcji warm spare chodzi o to, że gdy dysk ulegnie awarii, warm spare jest automatycznie i natychmiast zamieniany przez kontroler macierzy, a proces resilvering zaczyna się natychmiast. Gdyby resilvering był całkowicie niezawodnym procesem, byłoby to oczywiście bardzo pożądane. Niestety rzeczywistość jest zupełnie inna.
Podczas procesu resilvering parzystościowa macierz RAID jest narażona na pojawianie się nieodwracalnych błędów odczytu (URE – Unrecoverable Read Errors). Jeśli URE wystąpi podczas resilvering jednotorowej macierzy parzystościowej (RAID 2–5), proces resilvering kończy się niepowodzeniem i cała macierz jest utracona. Jest to krytyczne do zrozumienia, ponieważ żaden dodatkowy dysk nie uległ awarii. Gdyby warm spare nie był obecny, resilvering by się nie rozpoczął, a dane byłyby nadal nienaruszone i dostępne – tylko nieco wolniej niż zwykle i przy niewielkim ryzyku awarii drugiego dysku. Wskaźniki URE są bardzo wysokie przy dzisiejszych dużych dyskach, a w przypadku dużych macierzy ryzyko może wzrosnąć tak bardzo, że przesunie się ze “możliwego” do “oczekiwanego” podczas standardowej operacji resilvering.
Tak więc w wielu przypadkach sam warm spare może być przyczyną utraty danych, a nie ich ochrony zgodnie z oczekiwaniami. Macierz, która by przeżyła, może zostać zniszczona przez proces resilvering, zanim administrator zostanie nawet powiadomiony o awarii pierwszego dysku. Gdyby był zaangażowany człowiek, mógłby przynajmniej wykonać świeżą kopię zapasową macierzy przed uruchomieniem resilvering, wiedząc, że najnowsza kopia danych będzie dostępna w przypadku niepowodzenia procesu. Pozwoliłoby mu to również zaplanować, kiedy resilvering powinien się rozpocząć – możliwe, że poczekać do zakończenia godzin pracy lub do weekendu, gdy macierz rzadziej jest pod dużym obciążeniem.
Podwójny i potrójny parzystościowy RAID (odpowiednio RAID 6 i RAIDZ3) również są narażone na ryzyko URE, ponieważ też opierają się na parzystości. Łagodzą to ryzyko przez dodatkowe poziomy parytetu i robią to z powodzeniem w większości przypadków. Ryzyko nadal istnieje, szczególnie w bardzo dużych macierzach RAID 6, ale przez najbliższe kilka lat pozostaje generalnie dość niskie dla większości macierzy pamięci masowej, do czasu gdy na rynku dostępne będą znacznie większe dyskowe nośniki danych.
Największym problemem parzystościowego RAID i ryzyka URE jest to, że czynnik skłaniający ku parzystościowemu RAID (gotowość do narażenia się na dodatkowe ryzyko integralności danych w celu obniżenia kosztów) jest tym samym czynnikiem, który wprowadza zwiększone ryzyko URE (zakup tańszych, nieprzedsiębiorczych dysków SATA). Środowiska korzystające z parzystościowego RAID zazwyczaj robią to na dużych, tanich dyskach SATA, łącząc dwa bardzo niebezpieczne czynniki dla wybuchowej kombinacji. Używanie nieparzystościowego RAID 1 lub RAID 10 całkowicie eliminuje ten problem, a używanie wysoce niezawodnych korporacyjnych dysków SAS drastycznie zmniejsza czynnik ryzyka o rząd wielkości (to nie metafora – jest to faktycznie zmiana o jeden rząd wielkości).
Ponadto podczas operacji resilvering wydajność systemów parzystościowych może spaść tak drastycznie, że jest równoznaczna z długotrwałą awarią. Proces resilvering, szczególnie na dużych macierzach, może być tak intensywny, że użytkownicy końcowi nie mogą odróżnić całkowicie uszkodzonej macierzy od macierzy w trakcie resilvering. W rzeczywistości resilvering w swoim ekstremalnym wariancie może trwać tak długo i być tak destrukcyjny, że koszt dla biznesu może być wyższy, niż gdyby macierz po prostu całkowicie się nie powiodła i zamiast tego wykonano by przywracanie z kopii zapasowej. Ten problem resilvering nie dotyczy RAID 1 i RAID 10 – ponownie dlatego, że są to lustrzane, a nie parzystościowe systemy RAID, a ich proces resilvering jest trywialny, a degradacja wydajności systemu minimalna i krótkotrwała. W skrajnym przypadku parzystościowy resilvering może trwać tygodnie lub miesiące, podczas których systemy zachowują się tak, jakby były offline – a w dowolnym momencie tego procesu mogą pojawić się wspomniane błędy URE, które zakończą resilvering i wymuszą przywracanie z kopii zapasowej i tak. (Typowe resilvering nie trwa tygodniami, ale wiele godzin, a dni wcale nie są rzadkością.)
Ostateczne podsumowanie można ująć następująco (używając ponownie konwencjonalnego terminu “hot spare”): RAID 10 bez “hot spare” jest prawie zawsze lepszym wyborem niż RAID 6 z “hot spare”. RAID 6 bez “hot spare” jest zawsze lepszy niż RAID 5 z “hot spare”. RAID 1 z dodatkowym członkiem lustra jest zawsze lepszy niż RAID 1 z “hot spare”. Niezależnie od wybranego poziomu RAID z hot spare, po prostu przejdź o jeden poziom wyżej na skali niezawodności RAID i zrezygnuj z “hot spare”, aby zmaksymalizować zarówno wydajność, jak i niezawodność przy równym lub prawie równym koszcie.
Warm spare, podobnie jak parzystościowy RAID, miały swój czas świetności. W rzeczywistości właśnie wtedy, gdy parzystościowy RAID wciąż miał sens dla powszechnego użytku – gdy błędy URE były mało prawdopodobne, a koszty dysków wysokie – warm spare również miały sens. Były dobrze dopasowane: gdy jedno miało sens, drugie często też. Często pomijanym faktem jest to, że wraz z utratą skuteczności przez parzystościowy RAID, szczególnie RAID 5, warm spare pociągnął za sobą w nieoczekiwany sposób.
