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?
źródło
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.
źródło
Ż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.
źródło
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ą
źródło
Zależy to od typu implementacji raidu (hw / sw), dysków, kontrolera raidu i jego funkcji.
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.
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.
źródło
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.
źródło
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.
źródło
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
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ść.
źródło
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)
źródło