Czy RAID5 jest bardziej niezawodny niż RAID1

12

Mam zamiar zastąpić starą sprzętową macierz RAID5 na programową macierz RAID1 dla systemu Linux. Rozmawiałem z przyjacielem, który stwierdził, że RAID5 jest bardziej wytrzymały niż RAID1.

Twierdził, że w przypadku RAID5 po odczytaniu odczytano dane parzystości, aby upewnić się, że wszystkie dyski zwracają prawidłowe dane. Twierdził również, że w przypadku RAID1 błędy występujące na dysku pozostaną niezauważone, ponieważ takie sprawdzenie nie jest wykonywane z RAID1.

Widzę, jak to może być prawda, ale widzę też, że wszystko zależy od tego, jak wdrażane są omawiane systemy RAID. Z pewnością system RAID5 nie musi czytać i sprawdzać parzystości danych podczas odczytu, a system RAID1 może równie łatwo odczytywać ze wszystkich dysków podczas odczytu, aby sprawdzić, czy wszystkie przechowują te same dane, a tym samym osiągnąć ten sam poziom niezawodności ( z odpowiednią utratą wydajności).

Pytanie brzmi: co właściwie robią systemy RAID5 / RAID1 w prawdziwym świecie? Czy systemy RAID5 sprawdzają dane parzystości przy odczytach? Czy istnieją systemy RAID1, które odczytują ze wszystkich dysków i porównują dane podczas odczytu?

andynormancx
źródło

Odpowiedzi:

22

RAID-5 to rozwiązanie odporne na uszkodzenia, a nie rozwiązanie zapewniające integralność danych .

Pamiętaj, że RAID oznacza nadmiarową macierz niedrogich dysków . Dyski są atomową jednostką redundancji - RAID tak naprawdę nie dba o dane. Kupujesz rozwiązania wykorzystujące systemy plików takie jak WAFL lub ZFS w celu rozwiązania problemu nadmiarowości i integralności danych.

Kontroler RAID (sprzęt lub oprogramowanie) nie weryfikuje parzystości bloków w czasie odczytu. Jest to poważne ryzyko związane z uruchomieniem macierzy RAID-5 - jeśli napotkasz częściową awarię nośnika na dysku (sytuacja, w której zły blok nie jest oznaczony jako „zły”), jesteś teraz w sytuacji, w której twoje dane były dyskretnie zepsuty.

RAID-Z / ZFS firmy Sun zapewnia integralność danych od końca do końca. Podejrzewam, że inne systemy plików i systemy RAID zapewnią tę funkcję w przyszłości, ponieważ liczba rdzeni dostępnych w procesorach stale rośnie.

Jeśli używasz RAID-5, moim zdaniem jesteś tani. RAID 1 działa lepiej, zapewnia lepszą ochronę i nie wpływa na produkcję w przypadku awarii dysku - z marginalną różnicą kosztów.

duffbeer703
źródło
6

Uważam, że odpowiedź zależy od kontrolera / oprogramowania, na przykład systemy lustrzane często odczytują tylko jeden dysk z pary i dlatego są w stanie dostarczyć niewłaściwe dane. Zauważam, że jeśli twoje wyniki zależą od tych danych, to kiedy dane są zapisywane na obu dyskach, są one następnie uszkodzone na obu dyskach .....

Z pliku pdf w SATAssure (tm) Plus:

„Rewolucyjna technologia SATAssure zapewnia ochronę i niezawodność danych klasy korporacyjnej przy użyciu niedrogich napędów dyskowych SATA o dużej pojemności. SATAssure działa na wszystkich operacjach odczytu, zapewniając integralność danych i automatycznie rozwiązując problemy w czasie rzeczywistym - a wszystko to bez utraty wydajności lub pojemności w porównaniu z tradycyjnymi systemy pamięci masowej. Zmniejsz RMA dysków dzięki nowej możliwości wyłączania i wyłączania poszczególnych dysków. ”

Interesujące jest to, że niektórzy producenci robią zamieszanie z powodu faktu, że zawsze obliczają parzystość, co prowadzi mnie do wniosku, że jest to stosunkowo rzadkie w przypadku kontrolerów sprzętowych. Należy również zauważyć, że systemy takie jak ZFS i WAFL (netapp) wykonują obliczenia parzystości dla każdego odczytu.

James
źródło
Ten link wygląda interesująco, ale czy faktycznie wyraźnie mówi gdziekolwiek na tej stronie lub w broszurze, że przeliczają parzystość dla wszystkich odczytów?
andynormancx
Dodałem cytat z pliku pdf. Zauważ, że skrzynki S2A są cichym high-endem.
James
3

W przypadku RAID-5 parzystość jest zasadniczo odczytywana tylko przy przebudowie macierzy, a nie podczas ogólnego odczytu. Dzięki temu odczyty mogą być bardziej losowe i szybsze (ponieważ nie musisz czytać i obliczać parzystości dla całego paska za każdym razem, gdy chcesz 1K danych z tablicy).

W przypadku RAID-1 generalnie odczyty są dzielone na dyski, gdy tylko jest to możliwe, aby zwiększyć wydajność odczytu. Jak zauważyłeś, jeśli podsystem RAID próbuje odczytać oba dyski i różnią się one od siebie, podsystem nie ma możliwości sprawdzenia, który dysk był niewłaściwy.

Większość podsystemów RAID zależy od napędu w celu informowania kontrolera lub komputera o awarii.

Czy więc RAID-5 jest „bardziej wytrzymały”? Odpowiedź brzmi: to zależy. RAID-5 pozwala uzyskać bardziej efektywne miejsce do przechowywania dla określonej liczby dysków niż RAID-1; chociaż aby zapewnić efektywne miejsce do przechowywania na więcej niż jednym dysku, RAID-1 musi być połączony z RAID-0, albo jako pasek macierzy RAID-1, albo RAID-1 na dwóch pasach RAID-0.

(Wolę ten pierwszy, ponieważ awaria jednego dysku spowoduje usunięcie pojedynczego elementu RAID-1, co oznacza, że ​​tylko jeden dysk będzie wymagał przebudowy. W drugim przypadku awaria jednego dysku zabija element RAID-0, co oznacza, że ​​PÓŁ dyski będą zaangażowane w odbudowę, gdy dysk zostanie wymieniony).

Prowadzi to również do dyskusji na temat „zapisów fantomowych”, w których zapis jest zgłaszany jako udany przez elektronikę napędu, ale z jakiegokolwiek powodu zapis nigdy nie trafia na dysk. To się zdarza. Weź pod uwagę, że w przypadku macierzy RAID-5, gdy wystąpi awaria dysku, tablica MUSI ODCZYTAĆ WSZYSTKIE sektory na WSZYSTKICH ocalałych dyskach DOSKONAŁO w celu odzyskania. NetApp twierdzi, że duży rozmiar dysków plus duży rozmiar grup rajdowych oznacza, że ​​w niektórych przypadkach Twoje szanse na niepowodzenie podczas przebudowy mogą być tak duże, jak jeden na dziesięć. Dlatego zalecają, aby duże dyski w dużych grupach RAID korzystały z podwójnej parzystości (co moim zdaniem jest związane z RAID-6).

Nauczyłem się tego podczas dyskusji technicznej NetApp wygłoszonej przez kilku ich inżynierów.

David Mackintosh
źródło
Nie użyłbym terminu „bardziej skuteczny” ... „większa pojemność” byłaby bardziej odpowiednia. Moim zdaniem rozwiązanie, które zwiększa prawdopodobieństwo utraty moich danych, nie jest bardziej skuteczne.
duffbeer703
Wszystko jest kompromisem wartości kosztowej. RAID-5 jest bardziej opłacalny pod względem pamięci, a RAID-1 lub RAID-1 + 0 (0 + 1) jest bardziej wydajny.
David Mackintosh
Innym powodem, dla którego wolę 1 + 0 niż 0 + 1, jest to, że 1 + 0 może przetrwać 4 z 6 możliwych „drugiego dysku ulegnie awarii, zanim pierwszy uszkodzony dysk zostanie wymieniony, a tablica przebudowana” w scenariuszach, w których 0 + 1 może przetrwać tylko 2 z 6. Chociaż 0 + 1 może przetrwać awarię kontrolera na jednym ramieniu (gdzie 0 + 1 nie może), jest to o wiele rzadsze niż awaria dysku (nawet awaria wielu dysków).
David Spillett
RAID-DP (implementacja podwójnej parzystości NetApp) to RAID-6. RAID-6 (w przeciwieństwie do RAID-5) jest funkcjonalnie zdefiniowany jako RAID, który może przetrwać dwie awarie dysku. RAID-DP różni się od typowego RAID-6 tym, że nie rozdziela parzystości - WAFL nie zapisuje losowo zapisów, więc rozkład parzystości nie przynosi żadnych korzyści.
Kapitan Segfault
3

Żadna wspólna implementacja RAID zwykle nie sprawdza parzystości w dostępie do danych. Nigdy go nie widziałem. Niektóre implementacje RAID5 odczytują dane parzystości do odczytów strumieniowych, aby zapobiec niepotrzebnemu wyszukiwaniu (tańsze jest wyrzucanie co n-ty blok niż powodowanie przeszukiwania dysku przez co n-ty blok). Implementacje RAID1 nie mogą sprawdzić, ponieważ odczytują z obu dysków pod kątem wydajności (cóż, w zdecydowanej większości implementacji RAID1. Garść pozwala wybrać, co może być przydatne, jeśli jeden dysk jest znacznie wolniejszy od drugiego i nie wymaga intensywnego zapisu) Załaduj.)

Niektóre sprawdzają za pomocą „szorowania” tła. W takim przypadku RAID6 wygrywa, ponieważ może odzyskać dane, a RAID5 i RAID1 znajdują się w tej samej sytuacji, którą można zidentyfikować, ale nie naprawić. (Nie jest to do końca prawdą, ponieważ dysk może wykryć zły CRC, zwrócić błąd i umożliwić przepisanie bloku z parzystości. Zdarza się to dość często).

Jeśli chcesz zachować integralność danych, przechowuj skrót z każdym blokiem (lub rekordem, lub jakkolwiek jest podzielony) w warstwie aplikacji. Robią to Sybase i Oracle (wierzę na poziomie strony) i wielokrotnie widziałem, jak zapisuje gigantyczną bazę danych. (np. kontroler zaczyna zwracać złe dane, sybase ulega awarii z wyraźnym błędem, dlatego nie wykonano żadnych zapisów, gdy baza danych działała na niesprawnym sprzęcie z niespójnym stanem).

Jedynym rozwiązaniem systemu plików i jedynym rozwiązaniem RAID, które robi to za Ciebie, jest ZFS.

Carlito
źródło
0

Czy twój przyjaciel mówi o bicie parzystości związanym z niektórymi poziomami RAID , czy o sumie kontrolnej danych zapisanych na dysku?

Jeśli są one na poziomie parzystości, wówczas RAID1 nie ma bitu parzystości - masz dwie kopie tych samych danych. Dysk powinien wykonać sumę kontrolną, aby upewnić się, że to, co zapisano na dysku, odpowiada temu, co spadło na przewód

RAID5 ma bit parzystości. Oznacza to, że możesz stracić dysk w zestawie RAID i kontynuować tak, jakby nic się nie wydarzyło. Mimo to powinna być wykonana suma kontrolna danych zapisanych na dysku, aby upewnić się, że pasuje do tego, co spadło na przewód

W tym przypadku sumy kontrolne są całkowicie niezależne od macierzy RAID, które mogą, ale nie muszą być wykonywane z wieloma dyskami

Edytowano, aby dodać: Wspomniałeś o przejściu ze sprzętowej RAID na programową RAID. Preferowana jest zawsze sprzętowa macierz RAID zamiast programowej macierzy RAID. Jeśli możesz kupić sprzęt wymagany do uzyskania poziomu RAID, który chcesz wdrożyć, sugeruję, abyś poszedł na to. Umożliwi to wykonanie wszystkich obliczeń parzystości przez kartę RAID, a nie przez host. Zwolnienie zasobów na hoście. Nie ma wątpliwości, że inne korzyści, ale w tej chwili mi uciekają

Ben Szybki
źródło
Mówił o parzystości. Twierdził, że na RAID5 informacje o parzystości zostały pobrane podczas odczytu i porównane z danymi pochodzącymi z innych dysków, aby sprawdzić, czy nie wystąpiły błędy odczytu.
andynormancx
5
Nie zgadzam się z twoją rekomendacją sprzętowego RAID zamiast oprogramowania we wszystkich przypadkach. Przy nowoczesnym sprzęcie oprogramowanie RAID może być tak samo szybkie jak sprzęt, jeśli twój serwer ma dużo wolnego procesora (który mój zawsze będzie miał). Poza tym sprzętowa macierz RAID ma pewne wady, z których główną jest sytuacja, w której musisz odzyskać odpowiednią pasującą kartę RAID. Dzięki oprogramowaniu RAID możesz wyciągnąć dysk z komputera, włożyć go do innego i odejść, nie otrzymując nowej karty RAID dokładnie pasującej do starej.
andynormancx
Próbowałem dojść do sedna, o jakim kontekście on mówił. Jak rozumiem, sumy kontrolne są używane podczas zapisu na dysku (niezależnie od RAID). Parzystość służy do umieszczania fragmentów danych na różnych dyskach oraz do odbudowywania tablicy w przypadku awarii dysku. Parzystości nie stosuje się na wszystkich poziomach RAID
Ben Quick
1
Zajrzyj na stronę en.wikipedia.org/wiki/..., aby zapoznać się z dyskusją na temat oprogramowania RAID sprzętowego Vs. Oczywiście wybrana implementacja zależy od środowiska i wymagań. Preferuję sprzętową macierz RAID zamiast programowej macierzy RAID
Ben Quick
Rozumiem, zapomnij, że kiedykolwiek wspomniałem o sumach kontrolnych. Zaktualizowałem pytanie, aby wyjaśnić zamieszanie. Pytanie dotyczy tego, czy systemy RAID5 zwykle sprawdzają dane parzystości podczas odczytów.
andynormancx
0

Mam zamiar zastąpić starą sprzętową macierz RAID5 na programową macierz RAID1 dla systemu Linux. Rozmawiałem z przyjacielem, który stwierdził, że RAID5 jest bardziej wytrzymały niż RAID1.

Zależy to od typu implementacji raidu (hw / sw), dysków, kontrolera raidu i jego funkcji.

Twierdził, że w przypadku RAID5 po odczytaniu odczytano dane parzystości, aby upewnić się, że wszystkie dyski zwracają prawidłowe dane. Twierdził również, że w przypadku RAID1 błędy występujące na dysku pozostaną niezauważone, ponieważ takie sprawdzenie nie jest wykonywane z RAID1.

ma to jakiś sens, ale nie jest tak naprawdę :) to, co się dzieje - jeśli złe dane zostaną zapisane, w lustrze zostaną one wysłane na oba dyski, a na raid5 zostanie wygenerowane i rozłożone na dyskach. sprawdzanie odczytu / zapisu danych jest wykonywane przez oprogramowanie układowe dysku i kontrolera i nie ma nic wspólnego z poziomami nalotów.

So the question is, what do RAID5/RAID1 systems in the real world

faktycznie zrobić? Czy systemy RAID5 sprawdzają dane parzystości przy odczytach? Czy istnieją systemy RAID1, które odczytują ze wszystkich dysków i porównują dane podczas odczytu?

jak powiedziałem, kontrole nie są częścią algorytmu rajdowego, chociaż niektóre kontrolery mogą mieć zaimplementowane coś dodatkowego.

solidność macierzy zależy od jakości dysków (dyski 2,5 "mają tendencję do życia dłużej niż 3,5" z powodu obniżonych stawek RV; z mojego doświadczenia NIGDY nie kupuj dysków Maxtor SCSI / SAS - mają straszne usterki oprogramowania), środowisko (kontrola temperatury i wilgotności), sam kontroler (czy ma BBU? czy oprogramowanie układowe jest aktualne? czy to prawdziwy rajd czy fakeraid?), ilość zasilaczy na serwerze, jakość UPS itp.

dyasny
źródło
Obawiam się, że nie odpowiedziałeś na pytanie, które bardzo dokładnie dotyczy tego, co faktycznie robią rzeczywiste implementacje RAID5 w odniesieniu do sprawdzania danych parzystości podczas odczytu.
andynormancx
0

Nie wiem tego, ale wydaje mi się mało prawdopodobne, aby tak było. Pamiętaj, że aby obliczyć parzystość, będzie musiał odczytać blok ze wszystkich dysków w zestawie RAID, a następnie wykonać obliczenia matematyczne w celu ustalenia poprawności, a jeśli nie, po prostu odczytuje jeden dysk.

Ponadto, jeśli twój odczyt dotyczy mniej niż jednego bloku, odczyt kontroli parzystości musiałby rozszerzyć go do pełnego bloku, podczas gdy zwykły odczyt nie. (Zakładając oczywiście, że blok RAID jest większy niż bloki dysków. Myślę , że odczyty z dysku muszą składać się z pełnych bloków. Jeśli nie, to mój punkt widzenia jest jeszcze ważniejszy.)

Tak więc, z mojego punktu widzenia, tak, można by to zrobić, ale gdyby tak się stało, byłoby to nieefektywne i wątpię, aby jakieś były wdrażane w ten sposób.

Znów jednak nie mam osobistej wiedzy o rzeczywistych implementacjach.

wfaulk
źródło
0

Czy systemy RAID5 sprawdzają dane parzystości przy odczytach?

To naprawdę nie ma sensu. Co robisz, gdy znajdziesz niedopasowanie parzystości? (Skąd wiesz, który blok jest zły?)

W przypadku losowych odczytów sprawdzanie parzystości byłoby kosztowne. Zwykle możesz obsłużyć losowy odczyt, patrząc tylko na jeden dysk, ale jeśli chcesz sprawdzić parzystość, musisz odczytać wszystkie dyski przy każdym czytaniu. (To może mieć sens, jeśli można coś z tym zrobić!)

Zauważ, że RAID-1 ma również ten problem - co ma sens, gdy spojrzysz na RAID-1 jako dwupłytowy RAID-5.

Kapitanie Segfault
źródło
0

Zastanawiałem się trochę nad twierdzeniem, że RAID-1 powinien być szybszy w odczytach niż RAID-5, ponieważ odczytuje na obu dyskach jednocześnie.

Teraz, ponieważ parzystość nie jest odczytywana na RAID-5, chyba że tablica wymaga przebudowy, w rzeczywistości jest równa macierzy RAID-0 pod względem odczytu, czy mam rację?

RAID-0 jest ogólnie uważany za najszybszy poziom (chociaż należy go nazwać „AID”, ponieważ nie ma żadnej nadmiarowości). :-RE

Mówiąc o systemie Linux RAID, prosty test - przy użyciu hdparm - potwierdza tę teorię: moje macierze RAID-5 zawsze wykazują wyższą prędkość odczytu niż moje macierze RAID-1.

ALE: Zdegradowana tablica działa znacznie wolniej niż normalnie działająca tablica! Właśnie przetestowałem to z Fedorą 9, działającą na 4 dyskach WD 1 TB z różnymi poziomami RAID. Oto wyniki:

Zdegradowana RAID-5: prędkość odczytu 43 MB / s Normalna RAID-5: prędkość odczytu 240 MB / s (!) RAID-1: prędkość odczytu 88 MB / s

Ponieważ dozwolona utrata dysków jest taka sama w RAID-1 i RAID-5 (a mianowicie jeden), myślę, że RAID-5 powinien przewyższać RAID-1 pod każdym względem - dając większą pojemność w stosunku do liczby dysków używanych w macierzy i tym samym tolerancja na awarie. Prowadzi to do wniosku, że RAID-6 przewyższa każdy inny poziom RAID, ponieważ jest tak szybki jak RAID-0 podczas normalnego odczytu (brak odczytu parzystości z dwóch dysków parzystości) i nadal jest odporny na uszkodzenia w przypadku utraty członek tablicy. ;-)


źródło
Kilka interesujących rzeczy, ale powtórzyłeś błąd RAID1, który ciągle słyszę. RAID1 nie musi oznaczać, że może przetrwać tylko awarię pojedynczego dysku. Nie musisz mieć tylko dwóch dysków w macierzy RAID1. Na przykład macierz RAID1 z 3 dyskami przetrwa dwie awarie dysków, a także wydajność odczytu powinna wzrosnąć ( jeśli system RAID odczytuje z wielu dysków podczas odczytu).
andynormancx
-1

Osobiście uważam, że ostatecznym testem systemu RAID jest to, jak dobrze może wytrzymać awarię. W tym przypadku zarówno RAID5, jak i RAID1 mogą obsługiwać awarie pojedynczego dysku, ale żadne z nich nie przetrwa dłużej.

Jeśli chodzi o twoje pytanie dotyczące bitu parzystości, sądzę, że zależy to od sterowników RAID. Na pewno zostanie odczytany podczas rekonstrukcji, ale przy normalnym użytkowaniu nie miałoby to większego sensu, ponieważ marnowano by na nią przepustowość.

sybreon
źródło
Obawiam się, że twoja odpowiedź brzmi: „Nie wiem, czy implementacje RAID5 sprawdzają parzystość odczytu”, więc nie odpowiada na pytanie.
andynormancx
To poprawna odpowiedź, ponieważ nikt nie będzie wiedział na pewno, z wyjątkiem osoby, która napisała sterownik.
sybreon
-2

afaik, nie jestem pro 24/7 Storage Pro, kontroler zawsze sprawdza, co jest zapisywane i odczytywane z dysków. tzn. z raid1 masz nieco gorsze zapisy niż na jednym dysku, ale twoje odczyty są nieco szybsze (musisz zapisać plik na dwóch dyskach, ale możesz odczytać jedną część z dysku pierwszego, a drugą część z dysku drugiego).

Być może możesz wyłączyć sprawdzanie danych dla poziomu nalotu, ale jaki jest sens tego, że wszystkie poziomy nalotu (oprócz 0) mają na celu nadmiarowość danych, więc po co sobie przeszkadzać.

W Raid 5 potrzebujesz co najmniej 3 dysków i możesz używać dysków N-1 do przesyłania danych. W Raid 1 zawsze potrzebujesz parzystej liczby dysków i możesz użyć N / 2 dysków do danych.

W przypadku większych nalotów poziom 5 daje więcej miejsca, a nalot 1 zapewnia większą redundancję.

Jeśli przez bardziej solidny rozumiesz, która oferuje większą redundancję, niż jest to rajd 1.

w zależności od rozmiaru nalotu należy również wziąć pod uwagę czasy odbudowy w przypadku błędu (ile jest dysków, jak duży jest jeden dysk, jaki rodzaj nalotu (miękki, fałszywy, sprzętowy), jaki poziom itp. )

Tak naprawdę nie można powiedzieć, że jeden nalot jest bardziej niezawodny niż drugi (być może nalot 6 jest zawsze bardziej solidny niż nalot 5, kosztem utraty przestrzeni dyskowej)

mrt181
źródło
1
Obawiam się, że tak naprawdę nie odpowiada na moje pytanie, moje pytanie dotyczy bardzo dokładnie, czy typowe implementacje RAID5 sprawdzają dane parzystości podczas odczytu. Dla przypomnienia RAID1 nie potrzebuje parzystej liczby dysków. Z przyjemnością możesz mieć macierz RAID1 z więcej niż dwoma dyskami, zwiększając w ten sposób nadmiarowość przy jednoczesnym zmniejszeniu prędkości zapisu.
andynormancx
1
„kontroler zawsze sprawdza, co jest zapisywane i odczytywane z dysków”. Nie jest tak w przypadku, gdy kontroler może odczytać z obu płyt, ale niektóre kontrolery zwracają pierwsze dane, które otrzymują.
James
Myślę, że można powiedzieć, że RAID1 potrzebuje parzystej liczby dysków, a trzecie lustro to coś innego niż RAID1. Tak niewiele implementacji obsługuje trzecie lustro, którego terminologia nigdy nie ustandaryzowała.
carlito