Oprogramowanie Linux mdadm RAID 6 - czy obsługuje odzyskiwanie danych po uszkodzeniu bitów?

15

Wikipedia twierdzi, że „RAID 2 jest jedynym standardowym poziomem RAID, innym niż niektóre implementacje RAID 6, które mogą automatycznie odzyskiwać dokładne dane z jednobitowego uszkodzenia danych”.

Czy ktoś wie, czy implementacja RAID 6 mdadm w systemie Linux jest jedną z takich implementacji, która może automatycznie wykrywać i odzyskiwać dane po uszkodzeniu jednobitowych danych. Dotyczy to CentOS / Red Hat 6, jeśli różnią się one od innych wersji. Próbowałem szukać online, ale nie miałem szczęścia.

Przy współczynniku błędów SATA wynoszącym 1 na 1E14 bitów i dysku SATA 2 TB zawierającym 1,6E13 bitów, jest to szczególnie istotne w celu zapobiegania uszkodzeniu danych.

EDYCJA 17-cze-2015

Uważam, że to mniej niepokojące, niż początkowo sądziłem - patrz Dysk twardy / dyski SSD - wykrywanie i obsługa błędów - czy można w sposób niezawodny zapobiec cichemu uszkodzeniu danych? po więcej szczegółów

sa289
źródło

Odpowiedzi:

15

Oprogramowanie Linux RAID nie ochroni Cię przed uszkodzeniem bitów, a cichym uszkodzeniem danych jest dobrze znany problem. W rzeczywistości, jeśli jądro jest w stanie odczytać dane z jednego dysku, nigdy nie będzie wiedział, że jest zły. RAID uruchamia się tylko wtedy, gdy podczas odczytu danych wystąpi błąd we / wy.

Jeśli martwisz się integralnością danych, powinieneś rozważyć użycie systemu plików takiego jak Btrfs lub ZFS, który zapewnia integralność danych poprzez przechowywanie i weryfikację sum kontrolnych. Te systemy plików dbają również o funkcjonalność RAID, więc nie potrzebujesz nalotu na oprogramowanie jądra, jeśli pójdziesz tą drogą.

chutz
źródło
Dzięki. Na wypadek, gdyby komukolwiek to pomogło, dostałem kilka pomysłów na wyszukiwanie od odpowiedzi chutza i zobaczyłem, że opiekun mdadm (wierzę) powiedział 17 lutego 2011 r., Że nie planuje dodawać możliwości wymuszania sprawdzania parzystości przy każdym czytaniu. Zobacz spinics.net/lists/raid/msg32816.html
sa289
3

RAID5 i RAID6 mogą wykrywać i zwykle korygować uszkodzenia bitów, jeśli zweryfikujesz parzystość całego dysku. Nazywa się to „szorowaniem” lub „kontrolą parzystości” i zwykle zajmuje 24–48 godzin w większości produkowanych systemów RAID. W tym czasie wydajność może ulec znacznemu pogorszeniu. (Niektóre systemy umożliwiają operatorowi nadanie priorytetu czyszczeniu nad dostępem do odczytu / zapisu lub poniżej.) RAID6 ma większą szansę na poprawienie go, ponieważ może go poprawić, jeśli wystąpią dwa awarie dysku, podczas gdy RAID5 może obsłużyć tylko jeden dysk, a awarie dysków są bardziej prawdopodobne podczas szorowania ze względu na zwiększoną aktywność.

vy32
źródło
1
Nie jest powszechnie prawdą, że wydajność zostanie zauważalnie obniżona podczas szorowania RAID. Jeśli scrub używa wszystkich dostępnych zasobów systemowych i jest „głupi”, to zrobi to. Ale wszystkie sieci SAN i wyobrażam sobie, że większość kontrolerów RAID będzie uruchamiać czyszczenie z niższym lub „ładnym” priorytetem, dynamicznie dostosowując wykorzystanie zasobów, aby nie zużywało zasobów potrzebnych do utrzymania wydajności produkcji.
Jeremy
Masz rację. Zredagowałem odpowiedź, aby dodać niuans.
vy32
jeśli mdadm RAID 6 macierz jest / dev / md1 następnie jest polecenie, aby sprawdzić parzystości i próba naprawy pojedynczego bitu korupcji "Echo check> / sys / block / MD1 / MD / sync_action"
BeowulfNode42
2
Nie „chronią przed uszkodzeniem bitów”, wykrywają korupcję bitów podczas szorowania. Zobacz moje pytanie tutaj po szczegóły.
Sugeruję zmianę odpowiedzi na „RAID5 i RAID6 jest w stanie naprawić uszkodzenie bitów”
Waxhead
2

Dodałbym to jako komentarz, ale nie mam wystarczającej reputacji; Chciałem wyjaśnić: RAID5 może wykryć uszkodzenie bitów, ale nie wie, który dysk ma uszkodzenie bez błędu odczytu. W rezultacie peeling nie mógł tego naprawić bez błędu odczytu - najprawdopodobniej po prostu go zarejestruje i zaktualizuje bit parzystości, aby pasował. Algorytm RAID6 jest zależny od pozycji, dzięki czemu może wykryć, który dysk zawiera błąd i naprawić uszkodzenie bitu.

sbingner
źródło
Byłoby świetnie, gdyby to prawda! Czy możesz podać jakieś linki, gdzie jest to udokumentowane?
Alek_A
2

Wszystkie powyższe odpowiedzi są nieprawidłowe w odniesieniu do możliwości RAID 6. Algorytmy RAID 6 działają bajt po bajcie, podobnie jak RAID 5, a jeśli pojedynczy bajt na jednym dysku jest uszkodzony, nawet bez błędu wskazanego przez dysk, może być wykrytym I POPRAWIONYM. Algorytm do tego jest całkowicie wyjaśniony w

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

Aby wykonać to sprawdzenie, parzyste dyski P i Q muszą zostać odczytane wraz z dyskami danych. Jeśli obliczona parzystość P 'i Q' różni się bez błędów napędu, analiza może wskazać, który z napędów jest nieprawidłowy, i poprawić dane.

Ponadto, jeśli identyfikacja dysku dotyczy dysku, który nie jest obecny (takiego jak dysk 137, jeśli jest tylko 15 dysków), więcej niż jeden dysk dostarcza uszkodzone dane W TYM BYTE, sygnalizując błąd, którego nie można naprawić. Gdy w zestawie znajduje się znacznie mniej niż 256 dysków, jest to wykrywane z dużym prawdopodobieństwem na bajt, a ponieważ w bloku jest wiele bajtów, z bardzo wysokim prawdopodobieństwem na blok. Jeśli identyfikacja dysku nie jest spójna dla wszystkich bajtów w bloku RAID, ponownie więcej niż jeden dysk dostarcza uszkodzonych danych i ogólnie można odrzucić warunek, ale dopóki wszystkie identyfikacje dysku są prawidłowe, blok niekoniecznie zostać odrzuconym.

Wykonanie tej korekcji zajmuje więcej czasu niż zwykle, ale należy ją wykonać tylko wtedy, gdy obliczenie syndromu (P i Q) pokazuje błąd.

Biorąc to wszystko pod uwagę, nie zbadałem jednak kodu mdadm, aby ustalić, czy obsługiwane jest uszkodzenie jednobajtowe. Wiem, że mdadm zgłasza błędy syndromu RAID6 podczas comiesięcznego skanowania, ale z komunikatu o błędzie nie wiadomo, czy są one poprawiane - nie zatrzymuje macierzy dysków ani nie identyfikuje żadnego konkretnego dysku w komunikacie.

Cafe Hunk
źródło