Il bit rot su hard disk è un vero problema? Cosa si può fare al riguardo?


32

Un amico sta parlando con me del problema dei bit rot - bit sui drive che lanciano casualmente, corrompendo i dati. Incredibilmente raro, ma con abbastanza tempo potrebbe essere un problema ed è impossibile da rilevare.

L'unità non lo considererebbe un settore danneggiato e i backup penserebbero che il file sia cambiato. Non è previsto alcun checksum per convalidare l'integrità. Anche in una configurazione RAID, la differenza sarebbe rilevata ma non ci sarebbe modo di sapere quale copia mirror è corretta.

È un vero problema? E se sì, cosa si può fare al riguardo? Il mio amico sta raccomandando zfs come soluzione, ma non riesco a immaginare di appiattire i nostri file server al lavoro, mettendo su Solaris e zfs ..



Ho appena avuto un bel errore SMART spuntato su un vecchio disco Seagate da 200 GB. I pezzi, hanno marcito troppo :-( Mancano sei mesi alla garanzia di 5 anni, quindi probabilmente avrò una sostituzione senza troppi problemi.
ThatGraemeGuy

Risposte:


24

Prima di tutto: il tuo file system potrebbe non avere checksum, ma il disco rigido stesso li ha. C'è SMART, per esempio. Una volta che ne sono state capovolte troppe, ovviamente l'errore non può essere corretto. E se sei davvero sfortunato, i bit possono cambiare in modo tale che il checksum non diventerà invalido; quindi l'errore non verrà nemmeno rilevato. Quindi possono succedere cose brutte ; ma l'affermazione che un lancio casuale di bit danneggerà istantaneamente i tuoi dati è falsa.

Tuttavia, sì, quando metti trilioni di bit su un disco rigido, non rimarranno così per sempre; è un vero problema! ZFS può eseguire il controllo di integrità ogni volta che vengono letti i dati; questo è simile a quello che fa già il tuo disco rigido, ma è un'altra protezione per cui stai sacrificando un po 'di spazio, quindi stai aumentando la resilienza contro la corruzione dei dati.

Quando il tuo file system è abbastanza buono, la probabilità che si verifichi un errore senza essere rilevato diventa così bassa che non devi più preoccupartene e potresti decidere che avere checksum integrati nel formato di archiviazione dei dati che stai utilizzando è non necessario.

Ad ogni modo: no, non è impossibile da rilevare .

Ma un file system, da solo, non può mai essere una garanzia da cui ogni errore può essere recuperato; non è un proiettile d'argento. È necessario disporre di backup e un piano / algoritmo per cosa fare quando viene rilevato un errore.


Ok, secondo wikipedia ( en.wikipedia.org/wiki/Error_detection_and_correction ) i moderni dischi rigidi utilizzano i CRC per rilevare gli errori e provare a ripristinare utilizzando il ripristino degli errori in stile compact disc. È abbastanza buono per me.
scobi,

1
Ma se il CRC è archiviato nella stessa posizione (settore) dei dati, ciò non sarà d'aiuto in tutti i casi di errore. Ad esempio, se si verifica un errore di posizionamento della testina, i dati potrebbero essere scritti in un settore sbagliato, ma con un checksum corretto => non sarà possibile rilevare il problema. Ecco perché i checksum in ZFS sono memorizzati separatamente dai dati che proteggono.
knweiss,

ZFS ha una manutenzione come quella di Windows adesso? Ciò fondamentalmente riscrive regolarmente i dati per aggiornare la codifica magnetica.
TomTom,

I moderni dischi rigidi non usano CRC, usano il codice Hamming che è molto diverso. È la stessa cosa che usa la memoria ECC. Gli errori di capovolgimento a un bit possono essere corretti, gli errori di capovolgimento a due bit possono essere rilevati ma non corretti, tre o più bit che lanciano e i dati sono effettivamente danneggiati. In ogni caso, non è possibile sostituire i backup dei dati. ZFS e altri file system non offrono una protezione migliore rispetto al codice Hamming sui piatti di un'unità. Se i dati sono danneggiati, ZFS non ti salverà.
Jody Lee Bruchon,

@JodyLeeBruchon Hai una fonte sul codice Hamming utilizzata prevalentemente adesso? Quali informazioni raccolte di recente ho indicato che i produttori di unità utilizzano ancora CRC-RS. 1 2
Ian Schoonover,

16

Sì, è un problema, soprattutto quando le dimensioni dell'unità aumentano. La maggior parte delle unità SATA ha una frequenza URE (errore di lettura non correggibile) di 10 ^ 14. O per ogni 12 TB di dati letti statisticamente, il fornitore dell'unità afferma che l'unità restituirà un errore di lettura (normalmente è possibile cercarli sui fogli delle specifiche dell'unità). L'unità continuerà a funzionare perfettamente per tutte le altre parti dell'unità. Le unità Enterprise FC e SCSI hanno generalmente una frequenza URE di 10 ^ 15 (120TB) insieme a un piccolo numero di unità SATA che aiuta a ridurla.

Non ho mai visto i dischi smettere di ruotare nello stesso momento, ma ho avuto un volume raid5 colpito a questo problema (5 anni fa con unità PATA consumer 5400 RPM). L'unità non funziona, è contrassegnata come morta e si verifica una ricostruzione sull'unità di riserva. Il problema è che durante la ricostruzione una seconda unità non è in grado di leggere quel piccolo blocco di dati. A seconda di chi fa il raid, l'intero volume potrebbe essere morto o solo quel piccolo blocco potrebbe essere morto. Supponendo che sia solo che un blocco è morto, se si tenta di leggerlo si otterrà un errore ma se si scrive su di esso l'unità lo rimappa in un'altra posizione.

Esistono diversi metodi per proteggersi da: raid6 (o equivalente) che protegge dai guasti del doppio disco è la cosa migliore, quelli aggiuntivi sono un filesystem che riconosce URE come ZFS, usando gruppi di raid più piccoli così statisticamente che hai una probabilità minore di colpire l'unità URE limiti (mirroring di unità di grandi dimensioni o raid5 unità più piccole), pulizia del disco e SMART aiuta anche, ma non è in realtà una protezione in sé, ma utilizzata in aggiunta a uno dei metodi di cui sopra.

Riesco a gestire quasi 3000 fusi negli array e gli array puliscono costantemente le unità alla ricerca di URE latenti. E ricevo un flusso abbastanza costante di loro (ogni volta che ne trova uno lo risolve prima del guasto dell'unità e mi avvisa), se stavo usando raid5 anziché raid6 e una delle unità fosse completamente morta ... essere nei guai se colpisce determinate posizioni.


2
In quali unità stai parlando? "10 ^ 14" non è un "tasso".
Jay Sullivan,

2
L'unità sarebbe ad esempio "10 ^ 14 bit letti per errore", che equivale a 12 TB lettura per errore.
Jo Liss,

2
E ovviamente, tenendo presente che il tasso di errore è normalmente quotato in termini di errori di settore completi per bit letti. Quindi, quando un produttore indica tassi URE a 10 ^ -14, ciò che realmente significano è che la probabilità che un settore casuale venga letto colpendo un URE è 10 ^ -14 e, se lo fa, l'intero settore ritorna come illeggibile. Questo e il fatto che si tratta di statistiche; nel mondo reale, gli URE tendono ad arrivare in lotti.
un CVn

9

I dischi rigidi generalmente non codificano i bit di dati come singoli domini magnetici: i produttori di dischi rigidi sono sempre stati consapevoli del fatto che i domini magnetici potrebbero capovolgersi e incorporare il rilevamento degli errori e la correzione delle unità.

Se si ribalta un po ', l'unità contiene abbastanza dati ridondanti che può e sarà corretta alla successiva lettura di quel settore. Puoi vederlo se controlli le statistiche SMART sull'unità, come "Tasso di errore correggibile".

A seconda dei dettagli dell'unità, dovrebbe anche essere in grado di recuperare da più di un bit capovolto in un settore. Ci sarà un limite al numero di bit capovolti che possono essere corretti silenziosamente e probabilmente un altro limite al numero di bit capovolti che possono essere rilevati come errore (anche se non ci sono più dati affidabili sufficienti per correggerlo)

Tutto ciò si aggiunge al fatto che i dischi rigidi possono correggere automaticamente la maggior parte degli errori mentre si verificano e possono rilevare in modo affidabile la maggior parte degli altri. Dovresti avere un gran numero di errori di bit in un singolo settore, che si sono verificati tutti prima che quel settore venisse letto di nuovo, e gli errori dovrebbero essere tali che i codici di rilevamento degli errori interni lo vedano di nuovo come dati validi, prima di te avrebbe mai avuto un fallimento silenzioso. Non è impossibile e sono sicuro che le aziende che gestiscono data center di grandi dimensioni lo vedono accadere (o meglio, si verifica e non lo vedono accadere), ma non è certamente un problema così grande come potresti pensare.


2
In realtà, ho regolarmente errori di bit-rot (in parti che non leggo molto), da cui il sistema recupera silenziosamente (in modo errato). Se almeno mi avvisasse che c'era bit-rot, potrei rileggere i dati per recuperarli prima che diventassero irrecuperabili; e se irrecuperabile, sarei in grado di confrontarlo con l'altro disco rigido.
Alex,

Alex, controlla i dati SMART dell'HDD e la RAM di sistema per verificare che non vi siano altri problemi che causano la corruzione. La corruzione dei bit / corruzione casuale è estremamente rara, quindi potrebbe esserci qualcos'altro in corso nella tua macchina.
Brian D.

@BrianD. Un problema era che ho tenuto i dischi rigidi all'interno del loro materiale di imballaggio (isolato); ciò causava il riscaldamento di dischi rigidi oltre i 60 ° C durante il lavoro, per giorni e giorni. Suona come una ragione legittima per cui potrebbe essersi verificato il marcire bit?
Alex,

Non è assolutamente raccomandato, poiché la maggior parte degli HDD ha piccoli fori d'aria che non devono essere coperti per funzionare correttamente. Se il tuo problema era il bit-rot o qualcos'altro, eseguivo una diagnostica completa sul PC per verificare che tutto funzionasse correttamente.
Brian D.

4

I dischi rigidi moderni (dal 199x) hanno non solo checksum ma anche ECC, che può rilevare e correggere un po 'di marcio "casuale". Vedi: http://en.wikipedia.org/wiki/SMART .

D'altra parte, alcuni bug nel firmware e nei driver di dispositivo possono anche corrompere i dati in rare occasioni (altrimenti il ​​QA catturerebbe i bug) che sarebbe difficile da rilevare se non si hanno checksum di livello superiore. I primi driver di dispositivo per SATA e NIC avevano dati corrotti su Linux e Solaris.

I checksum ZFS mirano principalmente ai bug nel software di livello inferiore. I sistemi di archiviazione / database più recenti come Hypertable hanno anche checksum per ogni aggiornamento per evitare bug nei filesystem :)


3

Teoricamente, questo è motivo di preoccupazione. In pratica, questo fa parte del motivo per cui conserviamo backup figlio / genitore / nonno. I backup annuali devono essere conservati per almeno 5 anni, IMO, e se hai un caso che risale a questo, il file non è ovviamente così importante.

A meno che tu non abbia a che fare con bit che potrebbero potenzialmente liquidare il cervello di qualcuno , non sono sicuro che il rischio contro la ricompensa sia abbastanza fino al punto di cambiare i file system.


1
Non vedo come i backup figlio / genitore / nonno siano d'aiuto. Non c'è modo di sapere con quel sistema se viene capovolto un po 'perché un utente intendeva cambiarlo o se l'unità lo ha fatto da solo. Non senza un checksum di qualche tipo.
scobi,

Avere backup multipli non ti aiuterà se non sai che i dati in essi contenuti sono buoni. Puoi fare il checksum manuale dei tuoi file, ma ZFS fa molto più automaticamente e semplifica la gestione del filesystem.
Amok,

1
Avere backup che risalgono a più di una settimana / mese aumenta le possibilità di avere una buona copia del file. Probabilmente avrei potuto essere più chiaro al riguardo.
Kara Marfia,

1
Il problema è: come fai a sapere di avere una brutta copia? E come fai a sapere quale copia del backup è quella buona? In modo automatizzato.
scobi,

Ho visto forse un file ogni pochi anni cadere in corruzione che potrebbe essere il risultato di un po 'di marcio, ma potrei soffrire della sindrome dei piccoli pesci. Potrei capire che i backup sono inutili e lo cancellerò se è offensivo. Era tempo ben speso a leggere le altre risposte, a prescindere. ;)
Kara Marfia,

2

Sì, è un problema.

Questo è uno dei motivi per cui RAID6 è ora in voga (oltre ad aumentare le dimensioni dell'HD aumenta il tempo per ricostruire un array). Avere due blocchi di parità consente un backup aggiuntivo.

I sistemi RAID ora eseguono anche RAID Scrubbing che legge periodicamente blocchi del disco, verifica le parità e lo sostituisce se trova un blocco difettoso.


Fare attenzione, l'integrità dei dati non è una caratteristica di tutti i sistemi RAID.
duffbeer703,

1
Con le unità terabyte, ci sono così tanti bit che condividono il destino e l'area di archiviazione fisica di un bit è così piccola che questo problema diventa più importante. Allo stesso tempo, la probabilità di guasto aumenta così tanto con le unità terabyte che RAID6 non è sufficiente a meno che non si inseriscano molte unità nel pool, diciamo 8 o più. Con un numero inferiore di unità è meglio utilizzare una serie di mirror nota anche come RAID 10. Sia su RAID 6 (raidz2) sia su RAID 10 (zpool create mypool mirror c0t1d0 c0t2d0 mirror c0t3d0 c0t4d0) sono possibili su ZFS.
Michael Dillon,

Il RAID non può dire quali dati sono buoni e quali no, quindi non può correggere gli errori, può semplicemente rilevarli.
Amok,

Amuck: Non come parte del "RAID Standard", di per sé, ma i sistemi RAID avanzati (firmware, ecc.) Lo fanno
Matt Rogish,

@ Michael Dillion - L'affidabilità RAID6 non aumenta all'aumentare del numero di unità. Per tutti i dati sono presenti solo i dati originali + 2 parità. L'aumento del numero di unità è peggiore per affidabilità in quanto aumenta il possibile tasso di guasto dell'unità senza aumentare la ridondanza di alcun dato. L'unico motivo per aumentare i numeri di unità è aumentare le dimensioni di archiviazione disponibili.
Brian D.

1

Per quanto riguarda l'affermazione del PO su RAID non capendo quali dati siano buoni o cattivi.

I controller RAID utilizzano almeno bit di parità (pari / dispari) su ogni striscia di dati. Questo è per tutto; le strisce di dati su disco e le strisce di parità (backup).

Ciò significa che per qualsiasi tipo di RAID con striping per ridondanza (RAID 5/6) il controller è in grado di dire con precisione se la striscia di dati originale è cambiata, nonché se la striscia di dati di ridondanza è cambiata.

Se si introduce una seconda striscia ridondante come RAID6, è necessario disporre di 3 strisce di dati, su tre unità diverse danneggiate, che corrispondono tutte agli stessi dati di file effettivi. Ricorda che la maggior parte dei sistemi RAID usa strisce di dati relativamente piccole (128kb o meno), quindi le possibilità del "bit rot" che si allinea allo stesso 128kb, dello stesso file, sono praticamente impossibili.


0

È un problema del mondo reale, sì, ma la domanda è se dovresti preoccuparti o meno.

Se hai solo un disco pieno di immagini, potrebbe non valere la pena. È pieno di importanti dati scientifici, potrebbe essere un altro tipo di storia, hai avuto l'idea.

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.