Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.
Parzystość jest używana przez unRAID do ochrony przed utratą danych. Jeśli dysk w macierzy ulegnie awarii, dane na innych dyskach mogą zostać połączone z danymi parzystości w celu odtworzenia brakujących danych.
Dlaczego parzystość? Ponieważ na świecie istnieją tylko dwa rodzaje dysków twardych:
- Dyski twarde, które już uległy awarii.
- Dyski twarde, które jeszcze nie uległy awarii, ale potrzebują trochę więcej czasu, zanim ulegną awarii.
Jak działa parzystość
Ogólnie rzecz biorąc, proces parzystości ma na celu rozpoznanie pojedynczej zmiany bitu w określonym zestawie bitów poprzez ustawienie wartości dodanego bitu w celu wymuszenia zsumowania tego zestawu bitów do znanej wartości. Dodany bit nazywany jest bitem parzystości.
W przypadku unRAID bity parzystości są przechowywane na dysku parzystości, który jest niezależny od dysków danych. Ten bit parzystości działa poprzez zestaw bitów w tej samej względnej pozycji bitowej na każdym dysku. Tak więc 57. bit dysku parzystości jest bitem parzystości dla 57. bitu wszystkich dysków danych. Kontrola parzystości 57. pozycji bitowej sumuje zatem wszystkie 57. bity wszystkich dysków, w tym dysku parzystości, i sprawdza, czy suma jest liczbą parzystą. Jeśli zwrócona wartość nie jest parzysta, bit parzystości jest przełączany tak, aby kontrola parzystości zwróciła liczbę parzystą.
Dlaczego liczba parzysta? unRAID używa “parzystości parzystej”, co oznacza po prostu, że proces sumowania (przy użyciu operacji matematycznej zwanej “exclusive OR” lub “XOR”) nad tym zestawem bitów musi zwrócić wartość, która jest liczbą parzystą.
Dane cyfrowe są przechowywane jako 1 lub 0:
Jeśli masz 4 dyski z wartościami bitów 1,1,1,1, parzystość wynosi 0 (1+1+1+1+0=parzysta). Jeśli wartości bitów wynoszą 1,0,0,0, parzystość wynosi 1 (1+0+0+0+1=parzysta).
Jeśli dysk jest dodawany do macierzy unRAID z ochroną parzystości, jest on najpierw usuwany przez zapisanie zer we wszystkich bitach wszystkich sektorów tego dysku. Wartość zero nie ma wpływu na parzystość. Gdy nowy dysk jest pełen zer, unRAID może łatwo wstawić go do macierzy bez konieczności przywracania parzystości. W ten sposób można dodać kilka dysków twardych jednocześnie.
Rekonstrukcja danych
Istnieją tylko dwie sytuacje, w których dane parzystości unRAID są używane do rekonstrukcji danych:
- gdy nośnik danych jest rekonstruowany; oraz
- jeśli wykryty zostanie wadliwy sektor.
W tym czasie wszystkie dyski (w tym parzystość) są odczytywane w celu zrekonstruowania danych, które mają zostać zapisane na dysku docelowym. Ponieważ suma bitów jest zawsze parzysta, unRAID może zrekonstruować dowolny JEDEN brakujący element danych (parzystość lub dysk danych), o ile pozostałe elementy są prawidłowe.
W dwóch powyższych przykładach powiedzmy, że 2.
- 1+x+1+1+0=równe, x musi być równe 1
- 1+x+0+0+1=równe, x musi być równe 0
Ponieważ parzystość jest tak ważna dla rekonstrukcji danych, powinieneś upewnić się, że parzystość jest prawidłowa, wykonując regularne kontrole parzystości.
Jeśli fizycznie usuniesz pojedynczy dysk z macierzy, nadal możesz na nim odczytywać i zapisywać dane. Jest on symulowany poprzez odczyt wszystkich innych dysków danych i parzystości. W ten sam sposób dysk parzystości jest aktualizowany zgodnie z wymaganiami podczas zapisu na symulowanym dysku. Jeśli teraz zainstalujesz dysk zastępczy, można go całkowicie odbudować przy użyciu nowo zrekonstruowanej zawartości w oparciu o parzystość i wszystkie inne dyski danych.
Kontrola parzystości
Podczas synchronizacji parzystości system odczytuje wszystkie dyski danych i zapisuje obliczoną parzystość na dysku parzystości.
Podczas sprawdzania parzystości system odczytuje wszystkie dyski danych oraz dysk parzystości i porównuje obliczoną parzystość z zapisaną parzystością. Ta operacja ma flagę:
CORRECT - jeśli wystąpi niedopasowanie parzystości, zapisz dysk parzystości z obliczoną parzystością i zgłoś to w syslogu. NOCORRECT - po prostu zgłoś w syslogu
Zgłaszanych jest tylko 100 pierwszych błędów kontroli parzystości. (Komunikaty w dzienniku systemowym są generowane dla każdego adresu sektora, w którym wystąpiło nieprawidłowe dopasowanie parzystości. W związku z tym, jeśli przeprowadzisz kontrolę parzystości na tablicy, która nie ma prawidłowej parzystości, dziennik systemowy szybko stanie się bardzo duży; stąd limit 100 komunikatów).
Te błędy parzystości są nazywane “błędami synchronizacji” lub “błędami synchronizacji parzystości”. Wskazują one liczbę znalezionych adresów bloków, w których obliczona parzystość nie została “zsynchronizowana” (tj. nie zgadzała się) z zapisaną parzystością. (Blok składa się z 4096 bajtów. Jest to również rozmiar STRONY Linuksa – podstawowa jednostka wejścia/wyjścia).
Prawidłowy dysk parzystości oznacza, że dysk parzystości istnieje i że synchronizacja parzystości została zakończona w pewnym momencie w przeszłości bez błędów (lub przerwania). Po zakończeniu synchronizacji parzystości dysk parzystości jest zawsze “ważny” (i ma zieloną kropkę). Ważny” w tym sensie oznacza, że może być użyty do odtworzenia uszkodzonego dysku danych.
(W rzeczywistości “prawidłowy” to status, który dotyczy wszystkich dysków macierzy, zarówno dysków danych, jak i dysku parzystości. Jeśli wszystkie dyski macierzy z wyjątkiem jednego są prawidłowe, oznacza to, że nieprawidłowy dysk można zrekonstruować za pomocą danych z pozostałych).
Jeśli sprawdzenie/korekta parzystości zwróci błędy, dlaczego dysk parzystości jest nadal oznaczony jako “prawidłowy”? Jeśli system oznaczy dysk parzystości jako “nieprawidłowy” z powodu kilku błędów parzystości, a następnie inny dysk ulegnie awarii, tego drugiego dysku nie można już zrekonstruować (ponieważ w macierzy byłyby teraz dwa nieprawidłowe dyski). Cały dysk parzystości nie jest zatem oznaczony jako nieprawidłowy z powodu wykrytych błędów parzystości. Oczywiście użytkownik może w dowolnym momencie uznać parzystość za nieprawidłową, anulując jej przypisanie.
Po obliczeniu parzystości powinny istnieć tylko 2 możliwości wystąpienia błędów kontroli parzystości:
- Nieczyste wyłączenie, tj. nagła awaria zasilania lub reset systemu. W takim przypadku operacje zapisu na dyskach parzystości i/lub danych mogą być w toku, ale nie zostały zakończone, przez co odpowiedni pasek ma niespójną parzystość.
- Nierozpoznany błąd sprzętowy (np. ciche uszkodzenie pamięci).
Dysk twardy z parzystością w trybie Unraid
Rozmiar
Rozmiar dysku parzystości musi być równy lub większy od największego dysku danych.
Wydajność
Używanie parzystości do ochrony danych nieuchronnie wpłynie na wydajność podczas zapisywania danych na macierzy. Za każdym razem, gdy zapisywany jest dysk danych, dysk parzystości również musi zostać zaktualizowany. Każda operacja zapisu na dysku danych unRAID chronionym parzystością powoduje 4 operacje dyskowe: Odczyt i Zapis dla parzystości oraz Odczyt i Zapis dla danych. Talerz każdego dysku musi wykonać pełny obrót po odczycie, aby zmienić położenie głowicy dysku nad zapisywanym sektorem.
Zapis do macierzy unRAID jest również ograniczony przez najwolniejszy (prędkość obrotowa) z zaangażowanych dysków. Jeśli tylko dysk parzystości jest dyskiem 7200 rpm, nadal jesteś ograniczony prędkością dysku danych. Nie zauważysz żadnej poprawy prędkości zapisu, chyba że kilka wolniejszych dysków danych jest zapisywanych w tym samym czasie, a szybszy dysk parzystości 7200 rpm próbuje nadążyć za obydwoma.
Podwójny parytet
W przypadku dużych macierzy “podwójna parzystość”, czyli możliwość posiadania drugiego dysku twardego z parzystością, nie jest po prostu kopią lustrzaną pierwszego. Umożliwia to jednoczesną awarię dwóch dysków bez utraty danych.
W systemie nadmiarowym P + Q (jak w systemie RAID-6) istnieją dwa dyski nadmiarowe: “P”, który jest zwykłą parzystością XOR, oraz “Q”, który jest kodem Reeda-Solomona. Pozwala to unRAID na odzyskanie danych po awarii 2 dysków przy minimalnym wpływie na wydajność. (Wymaga wyjaśnienia, że jest to faktycznie używane)