Cosa indica un errore ZFS permanente?


18

Diversi permanent errorssono stati segnalati sul mio zpool oggi.

  pool: seagate3tb
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

Modifica: sono sicuro che questi CKSUMvalori siano accurati. Stavo redigendo i dati e potrei averli distrutti per errore. Potrebbero essere stati 0. Sfortunatamente, non riesco a trovare una risposta conclusiva nelle mie note e gli errori sono stati risolti ora, quindi non ne sono sicuro, ma tutto il resto è accurato / riflette ciò che zpool stava segnalando.

/mnt/seagate3tb/Install.iso è un file di esempio segnalato con un errore permanente.

Ecco dove mi confondo. Se confronto il mio "errore permanente" Install.isocon un backup dello stesso file esatto su un altro filesystem, sembrano identici.

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

I file sembrano essere identici. Inoltre, il file funziona perfettamente. Se lo uso in un'applicazione, si comporta come mi aspetterei.

Come affermano i documenti :

Gli errori di corruzione dei dati sono sempre fatali.

Ma in base alle mie verifiche di file rudimentali, non sono sicuro di aver capito la definizione di fatal.

stato: uno o più dispositivi hanno riscontrato un errore con conseguente danneggiamento dei dati. Le applicazioni potrebbero essere interessate.

azione: ripristinare il file in questione, se possibile. In caso contrario, ripristinare l'intero pool dal backup.

Forse mi manca qualcosa, ma il file sembra perfettamente a posto, per quanto posso dire, e non ha bisogno di alcun restauro né mostra corruzione, nonostante la raccomandazione di ZFS.

Ho visto altri articoli con lo stesso errore , ma devo ancora trovare una risposta alla mia domanda.

Qual è l'errore permanente con il file? Esiste un problema di livello inferiore con il file che non mi risulta immediatamente evidente? In tal caso, perché ciò non dovrebbe essere rilevato da shasumuna differenza nel file?

Dal punto di vista di un laico, non vedo nulla che indichi alcun errore con questo file.


Hai delle istantanee?
ewwhite,

3
Dal momento che nessun altro l'ha detto, posso darti il ​​benvenuto in ServerFault? Questa mi sembra un'ottima prima domanda e spero che continui a raccogliere risposte istruttive. Spero che tu decida di rimanere su SF e di contribuire ulteriormente.
MadHatter,

Grazie @MadHatter! Apprezzo il tuo cortese benvenuto e sicuramente starò attorno a San Francisco. L'ho già aggiunto al mio breve elenco di comunità SE.
Will Haley,

Risposte:


22

La formulazione di zpool statusè un po 'fuorviante. Un errore permanente (in questo contesto) indica che si è verificato un errore I / O ed è stato registrato nel registro errori SPA (Storage Pool Allocator) per quel pool. Ciò non significa necessariamente v'è irrecuperabile corruzione dei dati.

Quello che dovresti fare è eseguire un zpool scrubnel pool. Una volta completato lo scrub, il registro degli errori SPA verrà ruotato e non mostrerà più errori prima dello scrub. Se lo scrub non rileva errori zpool status, non mostrerà più errori "permanenti".

Per quanto riguarda la documentazione, sta dicendo che solo "errori fatali" sono registrati in questo modo. Un errore irreversibile è un errore I / O che non è stato possibile correggere automaticamente da ZFS e pertanto è stato esposto a un'applicazione come I / O non riuscito. Al contrario, se l'I / O è stato immediatamente ripetuto correttamente o se l'I / O logico è stato soddisfatto da un dispositivo ridondante, non sarebbe considerato un errore irreversibile e pertanto non verrebbe registrato come errore di danneggiamento dei dati.

Un errore fatale non significa necessariamente perdita permanente dei dati, ma significa che al momento non è stato possibile risolverlo prima che si propagasse all'applicazione. Ad esempio, un cavo allentato o un controller difettoso potrebbero causare errori fatali temporanei che ZFS definirebbe "permanenti". Se si tratta davvero di un problema dipende dalla natura dell'I / O e se l'applicazione è in grado di recuperare da errori I / O.

EDIT: concorda pienamente con @bahamat che dovresti investire in ridondanza il più presto possibile.


Il registro degli errori SPA che riporta questo come "permanente" sembra in effetti un po 'fuorviante. Il zpool scrubfatto esattamente quello che hai suggerito @ tom-shaw, e la tua spiegazione ha perfettamente senso. Non vedo più "errori permanenti" su questo array dopo lo scrub. Non ho pensato a errori fatali nel contesto di una lettura fallita. Penso che debba essere stato un errore I / O temporaneo su una lettura come suggerisci tu. Concordo anche totalmente sulla necessità di ridondanza.
Will Haley,

Tom, non ti vedo da un po '. Ben tornato.
the-wabbit,

7

Un errore permanente indica che si è verificato un errore di checksum nel file e che non vi erano repliche sufficienti per la riparazione. Significa che almeno una lettura ha restituito dati danneggiati a causa di un errore I / O. Se qualunque cosa ricevesse la lettura, quindi riscrivendola nello stesso file su disco ora avresti corrotto i dati irrecuperabili.

Osservando la configurazione del pool, sembra che non si abbia ridondanza. Questo è molto pericoloso. Non ottieni nessuno dei benefici di auto-guarigione di ZFS, ma sarà in grado di dirti quando c'è stata la corruzione dei dati. Normalmente ZFS correggerà automaticamente e silenziosamente le letture corrotte, ma nel tuo caso non può. Sembra anche che tu abbia già eseguito zpool clearperché il CKSUMconteggio è 0per entrambe le unità.

Sfortunatamente, senza repliche non c'è davvero modo di saperlo.


2
Non zpool clearcancellerebbe anche il messaggio di errore stesso, non solo l'errore conta? È strano che il messaggio persista, ma non vengono mostrati errori.
user121391

2
Mie scuse. Avevo omesso i file dall'elenco di errori permanenti per la privacy. Nel modificare quell'output, ho anche modificato i conteggi di CKSUM e perso un contesto prezioso. Ho modificato la domanda per riflettere la realtà. @ user121391
Will Haley

In tal caso, se i numeri che mostri sono corretti, probabilmente hai un errore hardware da qualche parte. Poiché entrambi i dischi mostrano CKSUM countsche potrebbe essere il controller, il cavo o qualsiasi hardware condiviso tra i due dischi. È anche possibile che entrambi i dischi non funzionino. In ogni caso, ciò sottolinea la necessità di aggiungere la ridondanza APPENA POSSIBILE e di verificare la corruzione dei file indicati.
bahamat,

L'OP non sembra avere ridondanza; il vdev ha 56 errori CKSUM e il pool ha 28 errori CKSUM. Quindi non sono sicuro di ciò a cui ti riferivi "entrambi i dischi" nel tuo commento precedente. Sono d'accordo con il tuo punto sul valore della ridondanza.
un CVn

Hai ragione. Ho letto male il nome della piscina come se fosse un altro disco. Grazie per la segnalazione.
bahamat,
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.