Řešení 1:
Linuxový softwarový RAID vás neochrání před bitovým poškozením a tiché poškození dat je u něj dobře známý problém. Ve skutečnosti, pokud je jádro schopno číst data z jednoho disku, nikdy by nevědělo, že je špatné. RAID se spustí pouze v případě, že při čtení dat dojde k chybě I/O.
Pokud se obáváte o integritu dat, měli byste zvážit použití souborového systému, jako je Btrfs nebo ZFS, který zajišťuje integritu dat ukládáním a ověřováním kontrolních součtů. Tyto systémy souborů se také starají o funkčnost RAID, takže pokud se vydáte tímto způsobem, nepotřebujete softwarový raid jádra.
Řešení 2:
RAID5 a RAID6 dokážou detekovat a obvykle opravit poškození bitů, pokud ověříte paritu celého disku. To se nazývá „scrubbing“ nebo „kontrola parity“ a na většině produkčních systémů RAID obvykle trvá 24–48 hodin. Během této doby může dojít k výraznému snížení výkonu. (Některé systémy umožňují operátorovi upřednostnit scrubbing před přístupem pro čtení/zápis nebo pod ním.) RAID6 má vyšší šanci na nápravu, protože je dokáže opravit, pokud dojde k selhání dvou disků, zatímco RAID5 zvládne pouze selhání 1 disku a selhání disku jsou pravděpodobnější, když čistíte kvůli zvýšené aktivitě.
Řešení 3:
Přidal bych to jako komentář, ale nemám dostatečnou pověst; Chtěl jsem upřesnit:RAID5 umí ZJISTIT bitové poškození, ale bez chyby čtení neví, který disk má poškození. V důsledku toho to scrub nemohl opravit bez chyby čtení – s největší pravděpodobností by to jen zaprotokoloval a aktualizoval paritní bit, aby odpovídal. Algoritmus RAID6 je závislý na pozici, takže dokáže zjistit, který disk obsahuje chybu, a opravit poškození bitů.
Řešení 4:
Všechny výše uvedené odpovědi jsou nesprávné, pokud jde o možnosti RAID 6. Algoritmy RAID 6 pracují bajt po bajtu stejně jako RAID 5, a pokud je jeden bajt na libovolném disku poškozen, i když disk neindikuje žádnou chybu, může být detekován A OPRAVEN. Algoritmus k tomu je kompletně vysvětlen v
https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
Aby bylo možné provést tuto kontrolu, musí být spolu s datovými jednotkami načteny také jednotky parity P a Q. Pokud se vypočítaná parita P' a Q' liší bez chyb disku, analýza může určit, který z disků je nesprávný, a opravit data.
Kromě toho, pokud se identifikace jednotky týká jednotky, která není přítomna (jako je jednotka 137, pokud existuje pouze 15 jednotek), více než jedna jednotka poskytuje poškozená data PRO TEN BYTE, což signalizuje neopravitelnou chybu chyby. Když je v sadě mnohem méně než 256 jednotek, je to detekováno s vysokou pravděpodobností na bajt, a protože v bloku je mnoho bajtů, s extrémně vysokou pravděpodobností na blok. Pokud identifikace disku není konzistentní pro všechny bajty v bloku RAID, opět více než jeden disk poskytuje poškozená data a obecně lze podmínku odmítnout, ale pokud jsou všechny identifikace disku platné, blok nemusí nutně být odmítnut.
Provedení této opravy trvá déle než obvyklá doba ověření, ale je třeba ji provést pouze s tím, že výpočet syndromu (P a Q) ukazuje chybu.
Po tom všem jsem však nezkoumal kód mdadm, abych zjistil, zda je zpracováno poškození jednoho bajtu. Jsem si vědom toho, že mdadm hlásí chyby syndromu RAID6 při měsíční kontrole, ale z chybové zprávy není jasné, zda jsou opravovány – nezastaví diskové pole ani neidentifikuje žádný konkrétní disk ve zprávě.