Soluzione 1:
Il RAID software Linux non ti proteggerà dalla corruzione dei bit e la corruzione silenziosa dei dati è un problema ben noto con esso. Infatti, se il kernel è in grado di leggere i dati da un disco non saprebbe mai che è difettoso. Il RAID entra in funzione solo se si verifica un errore di I/O durante la lettura dei dati.
Se sei preoccupato per l'integrità dei dati, dovresti prendere in considerazione l'utilizzo di un file system come Btrfs o ZFS che garantisce l'integrità dei dati archiviando e verificando i checksum. Questi file system si occupano anche della funzionalità RAID, quindi non hai bisogno del raid del software del kernel se procedi in quel modo.
Soluzione 2:
RAID5 e RAID6 possono rilevare e in genere correggere il danneggiamento dei bit se si verifica la parità dell'intera unità. Questo è chiamato "scrubbing" o "controllo di parità" e in genere richiede 24-48 ore sulla maggior parte dei sistemi RAID di produzione. Durante tale periodo le prestazioni potrebbero essere notevolmente ridotte. (Alcuni sistemi consentono all'operatore di dare la priorità allo scrubbing rispetto all'accesso in lettura/scrittura o al di sotto di esso.) RAID6 ha maggiori possibilità di correggerlo, perché può correggerlo se si verificano due guasti dell'unità, mentre RAID5 può gestire solo 1 guasto dell'unità e i guasti delle unità sono più probabili durante la pulizia a causa dell'aumento dell'attività.
Soluzione 3:
Avrei aggiunto questo come commento ma non ho una reputazione sufficiente; Volevo chiarire:RAID5 può RILEVARE il danneggiamento dei bit ma non sa quale unità ha il danneggiamento senza un errore di lettura. Di conseguenza, uno scrub non potrebbe risolvere questo problema senza un errore di lettura:molto probabilmente lo registrerebbe e aggiornerebbe il bit di parità in modo che corrisponda. L'algoritmo di RAID6 dipende dalla posizione, quindi può rilevare quale unità conteneva l'errore e correggere il danneggiamento dei bit.
Soluzione 4:
Tutte le risposte precedenti non sono corrette per quanto riguarda le capacità di RAID 6. Gli algoritmi RAID 6 funzionano byte per byte proprio come RAID 5 e se un singolo byte su qualsiasi unità è danneggiato, anche senza alcun errore indicato dall'unità, può essere individuato E CORRETTO. L'algoritmo per farlo è completamente spiegato in
https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
Per eseguire questo controllo, le unità di parità P e Q devono essere lette insieme alle unità di dati. Se la parità calcolata P' e Q' differisce senza errori di unità, un'analisi può individuare quale delle unità è errata e correggere i dati.
Inoltre, se l'identificazione dell'unità riguarda un'unità che non è presente (come l'unità 137 se sono presenti solo 15 unità), più di un'unità fornisce dati corrotti PER QUEL BYTE, segnalando un errore di errore non correggibile. Quando ci sono molto meno di 256 unità nel set, questo viene rilevato con un'alta probabilità per byte, e poiché ci sono molti byte in un blocco, con probabilità estremamente alta per blocco. Se l'identificazione dell'unità non è coerente per tutti i byte all'interno del blocco RAID, ancora una volta, più di un'unità sta fornendo dati danneggiati e generalmente si potrebbe rifiutare la condizione, ma fintanto che tutte le identificazioni dell'unità sono valide, il blocco non deve necessariamente essere rifiutato.
Ci vuole più tempo del solito tempo di verifica per eseguire questa correzione, ma deve essere eseguita solo con il calcolo della sindrome (P e Q) mostra un errore.
Detto questo, tuttavia, non ho esaminato il codice mdadm per determinare se viene gestita la corruzione a byte singolo. Sono consapevole che mdadm segnala errori della sindrome RAID6 durante la scansione mensile, ma dal messaggio di errore non è chiaro se siano stati corretti:non arresta l'array di unità né identifica alcuna unità particolare nel messaggio.