Software Linux mdadm RAID 6 - supporta il ripristino della corruzione bit?


15

Wikipedia afferma che "RAID 2 è l'unico livello RAID standard, oltre ad alcune implementazioni di RAID 6, che può recuperare automaticamente dati precisi dalla corruzione a bit singolo nei dati".

Qualcuno sa se l'implementazione di mdadm RAID 6 in Linux è una di queste implementazioni in grado di rilevare e ripristinare automaticamente dalla corruzione dei dati a bit singolo. Questo vale per CentOS / Red Hat 6 se questi sono diversi dalle altre versioni. Ho provato a cercare online ma non ho avuto molta fortuna.

Con tassi di errore SATA pari a 1 in 1E14 bit e un disco SATA da 2 TB contenente 1,6E13 bit, ciò è particolarmente rilevante per prevenire il danneggiamento dei dati.

MODIFICA 17-giu-2015

Credo che questo sia meno un problema che inizialmente pensavo - vedi Hard disk / SSD - rilevamento e gestione degli errori - è possibile prevenire in modo affidabile la corruzione silenziosa dei dati? per ulteriori dettagli

Risposte:


15

Il software RAID Linux non ti proteggerà dalla corruzione dei bit e la corruzione silenziosa dei dati è un problema ben noto. Infatti, se il kernel è in grado di leggere i dati da un disco non saprebbe mai che è un male. Il RAID si attiva solo se si verifica un errore I / O durante la lettura dei dati.

Se sei preoccupato per l'integrità dei dati, dovresti prendere in considerazione l'uso di un file system come Btrfs o ZFS che garantisca l'integrità dei dati archiviando e verificando i checksum. Questi file system si occupano anche della funzionalità RAID, quindi non è necessario il raid del software del kernel se si procede in questo modo.


Grazie. Nel caso in cui sia utile a qualcuno, ho ricevuto alcune ulteriori idee di ricerca dalla risposta di Chutz e ho visto che il manutentore di mdadm (credo) ha detto il 17 febbraio 2011 che non ha intenzione di aggiungere la possibilità di forzare il controllo di parità su ogni lettura. Vedi spinics.net/lists/raid/msg32816.html
sa289,

3

RAID5 e RAID6 possono rilevare e di solito correggere la corruzione dei bit se si verifica la parità dell'intera unità. Questo si chiama "lavaggio" o "controllo di parità" e in genere richiede 24-48 ore sulla maggior parte del sistema RAID di produzione. Durante questo periodo le prestazioni possono essere significativamente ridotte. (Alcuni sistemi consentono all'operatore di dare priorità al lavaggio su accesso in lettura / scrittura o al di sotto di esso.) RAID6 ha una maggiore possibilità di correggerlo, perché può correggerlo se si verificano due guasti all'unità, mentre RAID5 può gestire solo 1 errore dell'unità, e i guasti dell'unità sono più probabili quando si lava a causa della maggiore attività.


1
Non è universalmente vero che le prestazioni saranno notevolmente ridotte durante uno scrub RAID. Se lo scrub utilizza tutte le risorse di sistema disponibili ed è "stupido", lo farà. Tuttavia, tutte le SAN e immagino che la maggior parte dei controller RAID eseguirà lo scrub con una priorità inferiore o "gradevole", regolando l'utilizzo delle risorse in modo dinamico in modo che non consumi le risorse necessarie per mantenere le prestazioni di produzione.
Jeremy,

Hai ragione. Ho modificato la risposta per aggiungere sfumature.
vy32,

se il tuo array mdadm raid 6 è / dev / md1, allora è il comando per farlo verificare la parità e tentare di riparare la corruzione a bit singolo "echo check> / sys / block / md1 / md / sync_action"
BeowulfNode42

2
Non "proteggono dalla corruzione dei bit", rilevano la corruzione dei bit se si pulisce. Vedi la mia domanda qui per i dettagli.

Suggerisco di cambiare la risposta a "RAID5 e RAID6 sono in grado di riparare la corruzione dei bit"
Waxhead,

2

Lo avrei aggiunto come commento ma non ho una reputazione sufficiente; Volevo chiarire: RAID5 può RILEVARE la corruzione dei bit ma non sa quale unità ha la corruzione senza un errore di lettura. Di conseguenza, uno scrub non è stato in grado di risolvere questo problema senza un errore di lettura: molto probabilmente sarebbe sufficiente registrarlo e aggiornare il bit di parità in modo che corrispondesse. L'algoritmo RAID6 dipende dalla posizione, quindi può rilevare quale unità conteneva l'errore e correggere la corruzione dei bit.


Sarebbe fantastico se fosse vero! Potete per favore fornire qualche link su dove è documentato ??
Alek_A

2

Tutte le risposte sopra sono errate 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 una sola unità è corrotto, anche se nessun errore indicato dall'unità, può essere rilevato 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, è necessario leggere anche le unità di parità P e Q insieme alle unità dati. Se la parità calcolata P 'e Q' differisce senza errori di unità, un'analisi può individuare quale delle unità non è corretta e correggere i dati.

Inoltre, se l'identificazione dell'unità è su un'unità che non è presente (come l'unità 137 se ci sono solo 15 unità), più di un'unità fornisce dati danneggiati PER QUEL BYTE, segnalando un errore di errore non correggibile. Quando ci sono 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, anche in questo caso più di un'unità fornisce 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 respinto.

Per eseguire questa correzione è necessario più tempo del normale tempo di verifica, ma deve essere eseguito solo con il calcolo della sindrome (P e Q) che 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 di sindrome RAID6 durante la scansione mensile, ma dal messaggio di errore non è chiaro se vengano corretti - non arresta l'array di unità né identifica alcuna unità particolare nel messaggio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.