Mam zamiar ponownie zorganizować wszystkie dyski twarde w moim domowym pudełku linuksowym nas i chciałbym użyć raidu mdadm do ochrony danych i jego elastyczności do przekształcania tablic. Zanim jednak użyję do tego mdadm, chciałbym wiedzieć, jak radzi sobie z zgnilizną bitów . W szczególności rodzaje zgnilizny bitów, które nie powodują nieodwracalnych komunikatów o błędach odczytu wysyłanych z dysku twardego.
Biorąc pod uwagę, że będę prawdopodobnie przy użyciu co najmniej 21TB dysków twardych w 8 dysków w NAS i różnych ofert na prawdopodobieństw o awarii na dyskach, myślę, że w trakcie przebudowy z jednej awarii dysku jestem uzasadnione prawdopodobieństwo spotkania jakaś forma zgnilizny bitów na pozostałych dyskach. Jeśli jest to niemożliwy do naprawienia błąd odczytu na jednym z dysków, że dysk faktycznie zgłasza go jako błąd, uważam, że powinno to być w porządku w przypadku raid6 (prawda?). Jednak jeśli dane odczytane z dysku są złe, ale nie są zgłaszane jako takie przez dysk, nie widzę, jak można to automatycznie poprawić nawet przy pomocy raid6. Czy to coś, o co musimy się martwić? Biorąc pod uwagę artykuł Jest rok 2010 i RAID5 nadal działai moje własne udane doświadczenia w domu i pracy, rzeczy niekoniecznie są tak zgubne i ponure, jak wierzą w to bzyczące słowa i marketing, ale nienawidzę konieczności przywracania kopii zapasowych tylko z powodu awarii dysku twardego.
Biorąc pod uwagę, że wzorce użytkowania będą, pisz co najwyżej kilka razy, a od czasu do czasu czytaj, będę musiał wykonać czyszczenie danych . Widzę na wiki archlinux polecenia mdadm do czyszczenia danych jako tablicy
echo check > /sys/block/md0/md/sync_action
następnie, aby monitorować postęp
cat /proc/mdstat
Wydaje mi się, że odczyta wszystkie sektory wszystkich dysków i sprawdzi, czy dane pasują do parzystości i odwrotnie. Chociaż zauważam, że w dokumentach duży nacisk kładziony jest na stwierdzenie, że istnieją znaczące okoliczności, że operacja „sprawdź” nie będzie w stanie automatycznie poprawić, a jedynie wykryć i pozostawi to użytkownikowi naprawienie.
Jakie poziomy RAID mdadm powinienem wybrać, aby zmaksymalizować ochronę przed gniciem bitów i jakie czynności konserwacyjne i inne kroki ochronne powinienem wykonać? A przed czym to mnie nie ochroni?
Edycja: Nie zamierzam uruchamiać RAID vs ZFS ani żadnej innej technologii QA. Chcę wiedzieć konkretnie o rajdzie mdadm. Dlatego też pytam w systemach Unix i Linux, a nie w SuperUser .
Edycja: czy odpowiedź: mdadm może korygować tylko URE, które są zgłaszane przez systemy dyskowe podczas szorowania danych i wykrywa cichą zgniliznę bitów podczas szorowania, ale nie może / nie naprawi tego?
Odpowiedzi:
Szczerze mówiąc, wydaje mi się dość zaskakujące, że odrzucisz RAIDZ2 ZFS. Wydaje się, że prawie idealnie odpowiada twoim potrzebom, z wyjątkiem faktu, że nie jest to Linux MD. Nie jestem na krucjacie, aby wprowadzić ZFS do mas, ale prosty fakt jest taki, że twój jest jednym z rodzajów problemów, które ZFS został zaprojektowany od podstaw do rozwiązania. Poleganie na macierzy RAID (dowolnej „zwykłej” macierzy RAID) w celu zapewnienia wykrywania i korekcji błędów, być może w sytuacji zmniejszonej lub zerowej redundancji, wydaje się ryzykowne. Nawet w sytuacjach, w których ZFS nie może poprawnie naprawić błędu danych, może przynajmniej wykryć błąd i poinformować, że wystąpił problem, umożliwiając podjęcie działań naprawczych.
Nie musisz wykonywać regularnych pełnych operacji w ZFS, chociaż jest to zalecana praktyka. ZFS sprawdzi, czy dane odczytane z dysku odpowiadają temu, co zostało zapisane podczas odczytu danych, aw przypadku niezgodności albo (a) użyj redundancji, aby zrekonstruować oryginalne dane, lub (b) zgłoś błąd we / wy Aplikacja. Ponadto czyszczenie jest operacją online o niskim priorytecie, zupełnie różną od kontroli systemu plików w większości systemów plików, które mogą mieć zarówno wysoki priorytet, jak i offline. Jeśli używasz szorowania i coś innego niż szorowanie chce wykonywać operacje we / wy, szorowanie zajmie miejsce na tylnym siedzeniu. Scrub ZFS zastępuje zarówno scrub RAID, jak i metadane i dane systemu plików sprawdzanie integralności, jest więc o wiele bardziej dokładne niż tylko szorowanie macierzy RAID w celu wykrycia jakiejkolwiek zgnilizny bitów (co nie mówi, czy dane mają jakiś sens, tylko że zostały poprawnie zapisane przez kontroler RAID).
Nadmiarowość ZFS (RAIDZ, tworzenie kopii lustrzanych, ...) ma tę zaletę, że nieużywane lokalizacje dysków nie muszą być sprawdzane pod kątem spójności podczas przeszukiwania; podczas przeszukiwania sprawdzane są tylko rzeczywiste dane, ponieważ narzędzia przechodzą przez łańcuch bloków alokacji. Jest to to samo, co w przypadku niepotrzebnej puli. W przypadku „zwykłego” RAID należy sprawdzić wszystkie dane (w tym wszelkie nieużywane lokalizacje na dysku), ponieważ kontroler RAID (sprzętowy lub programowy) nie ma pojęcia, które dane są rzeczywiście istotne.
Korzystając z RAIDZ2 vdevs, dowolne dwa dyski składowe mogą ulec awarii, zanim istnieje ryzyko faktycznej utraty danych z powodu awarii innego dysku, ponieważ nadmiarowość dwóch dysków jest niemożliwa. Jest to zasadniczo to samo, co RAID6.
W ZFS wszystkie dane, zarówno dane użytkownika, jak i metadane, są sumowane (z wyjątkiem sytuacji, gdy nie zdecydujesz się tego zrobić, ale jest to zalecane przeciw), a te sumy kontrolne służą do potwierdzenia, że dane nie uległy zmianie z jakiegokolwiek powodu. Ponownie, jeśli suma kontrolna nie zgadza się z oczekiwaną wartością, dane albo zostaną zrekonstruowane w sposób przezroczysty, albo zgłoszony zostanie błąd we / wy. Jeśli zostanie zgłoszony błąd we / wy lub scrub identyfikuje plik z uszkodzeniem, będziesz wiedział, że dane w tym pliku są potencjalnie uszkodzone i możesz przywrócić ten konkretny plik z kopii zapasowej; nie ma potrzeby pełnego przywracania tablicy.
Zwykła, nawet podwójna parzystość, macierz RAID nie chroni przed sytuacjami, takimi jak na przykład awaria jednego napędu, a jeszcze inne niepoprawnie odczytują dane z dysku. Przypuśćmy, że jeden z dysków uległ awarii, a gdziekolwiek z innych dysków jest jeden bit: nagle masz niewykrywalne uszkodzenie i jeśli nie będziesz zadowolony z tego, będziesz musiał przynajmniej go wykryć. Aby zminimalizować to ryzyko, należy zsumować sumę kontrolną każdego bloku na dysku i upewnić się, że suma kontrolna nie może zostać uszkodzona wraz z danymi (ochrona przed błędami, takimi jak zapisy w locie, zapisy sieroce, zapisy w niewłaściwych lokalizacjach na dysku itp.), Które jest dokładnie tym, co robi ZFS, o ile włączone jest sumowanie kontrolne.
Jedynym prawdziwym minusem jest to, że nie można łatwo rozwinąć RAIDZ vdev poprzez dodanie do niego urządzeń. Istnieją obejścia tego problemu, które zwykle obejmują takie rzeczy jak rzadkie pliki jako urządzenia w vdev, i bardzo często określane jako „nie zrobiłbym tego, gdyby były to moje dane”. Dlatego jeśli wybierzesz trasę RAIDZ (niezależnie od tego, czy korzystasz z RAIDZ, RAIDZ2 czy RAIDZ3), musisz z góry zdecydować, ile dysków chcesz w każdym vdev. Chociaż liczba dysków w wirtualnym urządzeniu wirtualnym jest stała, można je zwiększyć stopniowo (upewniając się, że nie przekracza progu nadmiarowości wirtualnego interfejsu wirtualnego), zastępując dyski dyskami o większej pojemności i zapewniając pełny resilver.
źródło
Ta odpowiedź jest wynikiem rozumowania opartego na różnych dowodach, które znalazłem. Nie wiem, jak działa implementacja jądra Linuksa, ponieważ nie jestem programistą jądra i wydaje się, że istnieje sporo bezsensownych dezinformacji. Zakładam, że jądro Linux dokonuje rozsądnych wyborów. Moja odpowiedź powinna mieć zastosowanie, chyba że się mylę.
Wiele napędów wykorzystuje ECC (kody korekcji błędów) do wykrywania błędów odczytu. Jeśli dane są uszkodzone, jądro powinno otrzymać URE (nieodwracalny błąd odczytu) dla tego bloku z dysku obsługującego ECC. W tych okolicznościach (i poniżej jest wyjątek) kopiowanie uszkodzonych lub pustych danych na dobrych danych oznaczałoby szaleństwo. W tej sytuacji jądro powinno wiedzieć, które dane są dobre, a które złe. Według It is 2010 i RAID5 nadal działa… artykuł:
Jednak teraz wyjątek: jeśli dysk nie obsługuje ECC, dysk polega na uszkodzeniu danych lub oprogramowanie układowe jest szczególnie niefunkcjonalne, wówczas URE może nie zostać zgłoszony, a uszkodzone dane zostaną przekazane do jądra. W przypadku niedopasowania danych: wydaje się, że jeśli używasz 2-dyskowego RAID1 lub RAID5, jądro nie może wiedzieć, które dane są poprawne, nawet gdy nie jest on zdegradowany, ponieważ istnieje tylko jedna parzystość blok i nie zgłoszono URE. W 3-dyskowym RAID1 lub RAID6 pojedynczy uszkodzony blok nie oznaczony URE nie pasowałby do redundantnej parzystości (w połączeniu z innymi powiązanymi blokami), więc właściwe automatyczne odzyskiwanie powinno być możliwe.
Morał tej historii jest następujący: korzystaj z napędów za pomocą ECC. Niestety nie wszystkie dyski obsługujące ECC reklamują tę funkcję. Z drugiej strony, bądź ostrożny: znam kogoś, kto używał tanich dysków SSD w macierzy RAID1 z 2 dyskami (lub macierzy RAID10 z 2 kopiami). Jeden z dysków zwrócił losowo uszkodzone dane przy każdym odczycie określonego sektora. Uszkodzone dane zostały automatycznie skopiowane na prawidłowe dane. Jeśli SSD używał ECC i działał poprawnie, jądro powinno było podjąć odpowiednie działania naprawcze.
źródło
Dla potrzebnej ochrony wybrałbym RAID6 + zwykłą kopię zapasową poza siedzibą w 2 lokalizacjach.
W każdym razie osobiście szoruję raz w tygodniu, a kopię zapasową wykonuję co noc, co tydzień i co miesiąc, w zależności od ważności danych i szybkości zmiany.
źródło
Nie mam wystarczającej liczby przedstawicieli do skomentowania, ale chcę zauważyć, że system mdadm w systemie Linux NIE koryguje błędów. Jeśli powiesz mu, aby „naprawił” błędy podczas szorowania, powiedzmy, RAID6, jeśli występuje niespójność, „naprawi” to, zakładając, że części danych są poprawne i ponownie obliczone parzystość.
źródło
bit rot fud.? pewnie...
Chyba musisz porozmawiać z SEAGATE. (zapomnieć? czy to wymówka)? wszystkie dyski mają teraz 100-bitową korekcję ECC, musisz najpierw udowodnić zgniliznę.
Założę się, że nie możesz. (czy FUD ma się czym martwić, prawda?) jak strach przed duchami lub # 13? i nie zrobione tutaj. wydarzyło się zero dowodów. i, co gorsza, brak dowodu przyczyny.
Najpierw określ, co oznacza zgnilizna bitów. ouch ... HDD: ECC sprawdza dane (nawet 1 bit) względem 100-bitowej pamięci ECC. jeśli jest niepoprawny, poprawia go, jeśli ciągle zawiedzie silnik SMART, na pewno na dyskach SAS, logicznie zastępuje klaster lub sektor tym, który jest dobry. za pomocą zapasowych klastrów. naprawia to uszkodzenie. Tak, wszystkie dyski rosną od początku do końca, od pierwszych dysków IBM po NOW. ale teraz przeprowadzamy samodzielną naprawę. Przeczytaj pełne oficjalne dokumenty Seagate. niekończące się tam i dowiedz się, jak działa dysk. dobrze?
to trwa, dopóki nie zabraknie części zamiennych (mózg HDD, inteligentny), a następnie SMART krzyczy KONIEC ŻYCIA. (lub jeszcze wcześniej, jak HP), powiedzmy, kontroler HP P420, cały czas to obserwuje. Mój nawet e-maile do mnie, pokazując BLISKO SPARE klastrów. Czasami części zapasowe idą o wiele szybciej, pewny znak zagłady wkrótce (10 lat jest pewien, mniej w śmieciowych sata.
Nazywam się BOGUS, a FUD na zgniliznie bitów.
Domyślam się, że ktoś zabawkowy komputer źle zapisał dane, z jakichkolwiek powodów. nie działa pamięć ECC? Ups, prawdziwe serwery mają ECC RAM. zainfekowany wirusem. lub utrata zasilania podczas zapisu (brak UPS>?)? lub ma złą pamięć.? lub ESD uszkodzony. Lub zasilacz robi mnóstwo hałasu (źle)
Dzwonię do FUD tutaj. Przepraszam,
źródło