In che modo gli autotest SMART sono correlati ai badblock?


15

Lo strumento smartctl consente di avviare un lungo autotest ( smartctl -t long /dev/sda). Tuttavia c'è anche badblocksche posso correre su un disco. Come sono collegati i due? Se i blocchi danneggiati rilevano blocchi danneggiati, il convertitore aggiorna automaticamente i suoi valori SMART (ad es. Aggiornando il conteggio dei settori trasferiti)? I badblock possono essere sostituiti smartctl -t longo viceversa?

Risposte:


5

Non sono d'accordo con voretaq7 - SMART non è magico. Quando hai un disco e uno dei suoi settori va male, non sarai più in grado di leggere i dati da esso. Quindi è perfettamente possibile avere un file illeggibile su una moderna unità disco. SMART contrassegnerebbe questo settore illeggibile come "In attesa corrente" e "Non correggibile offline" quando si accede per la prima volta dopo un errore.

Ma quando questo settore verrebbe scritto di nuovo, verrebbe rimappato nello spazio di rimappatura, non marcato e un contatore "Reallocated_Sector_Ct" aumenterebbe. Quindi un intero disco sarebbe di nuovo leggibile.

smartctl -t longtest è utile: verificherà l'intero spazio su disco per settori illeggibili e registrerà e contrassegnerà come "Current Pending" e "Offline Uncorrectable" il primo settore danneggiato rilevato durante l'esecuzione. Sto configurando i miei server per eseguire questo lungo test una volta alla settimana su ogni unità. Non influisce troppo sulle normali funzioni dell'unità, poiché le richieste del sistema operativo hanno sempre la priorità sulle scansioni SMART.

Come su un server, eseguo sempre dischi nei mirror RAID1, quindi quando un lungo test rileva un settore danneggiato, posso riscriverne il contenuto usando i dati di un'altra unità in un mirror, forzando la riallocazione.

badblocksa volte è utile, ad esempio testerà l'intero disco e non si fermerà al primo errore. Può testare una singola partizione o qualsiasi altra parte di un'unità. È possibile utilizzarlo per verificare rapidamente se un blocco danneggiato è stato riassegnato correttamente.


11

Come ho sottolineato nella mia altra risposta , ogni disco rigido moderno ha a disposizione lo spazio di rimappatura (perché soprattutto alle densità del disco di oggi, nessun piatto di unità sarà perfetto - ci saranno sempre alcuni difetti che l'unità dovrà rimappare in giro, anche sul marchio -nuovo-mai-usato-mai-uscito-dalla-linea-di-assemblaggio-in-le mie mani mani).

Per questo motivo, teoricamente dovresti avere un errore SMART segnalato prima di qualcosa come badblocksavvisi (settori visibili all'utente) su settori danneggiati su un'unità.
Sui dischi rigidi moderni tutti i settori danneggiati visibili all'utente finale (come potrebbe essere segnalato badblockso rilevato automaticamente dal sistema operativo) sono un sussulto finale e un brivido di un disco morente.


Alla fine SMART e badblocksprova due cose diverse, ma correlate:

SMART è uno strumento di automonitoraggio:

Il disco rigido conosce alcune informazioni sui suoi parametri operativi e ha alcune meta-conoscenze su ciò che è "normale" per alcuni e "accettabile" per altri.
Se l'unità rileva che alcuni parametri sono "anormali" o "inaccettabili", segnalerà una condizione di pre-guasto - in altre parole, l'unità è ancora funzionante, ma potrebbe non funzionare presto.

Ad esempio: il motore del mandrino assorbe normalmente 0,10 amp, ma ora assorbe 0,50 amp; un assorbimento anomalo che può indicare che l'albero si sta legando o che il lubrificante permanente sui cuscinetti è sparito. Alla fine il motore non sarà in grado di superare la resistenza e l'unità si bloccherà.

Un altro esempio: l'unità ha 1000 blocchi "rimappatura" per gestire settori danneggiati. Ne ha usati 750 e gli ingegneri che hanno costruito l'unità hanno determinato che il numero di rimappature indica qualcosa di sbagliato internamente (piatto cattivo, guasto alla vecchiaia, testa danneggiata) - l'unità segnalerà una condizione di pre-guasto che consente di ottenere il tempo i tuoi dati prima che lo spazio di rimappatura si esaurisca e che i settori danneggiati diventino visibili.

SMART è alla ricerca di settori più che brutti: è una valutazione più completa della salute dell'unità. È possibile che sia presente un avviso di pre-guasto SMART su un'unità senza settori danneggiati e senza errori di lettura / scrittura (ad esempio, il problema del motore mandrino che ho descritto sopra).


badblocks è uno strumento con uno scopo specifico (obsoleto): trovare settori danneggiati.

badblocksproviene da un tempo prima della rimappatura SMART e dei settori danneggiati. All'epoca sapevamo che le unità presentavano imperfezioni, ma l'unico modo per mapparle per impedire l'archiviazione accidentale dei dati era quello di sottoporre a stress test il disco, causare un guasto e quindi ricordarsi di non riporlo più.

Il motivo per cui dico che è obsoleto è perché l'elettronica sui dischi moderni fa già quello che badblocksfa, internamente e alcune migliaia di volte più veloce. badblocksfondamentalmente consente ai dischi antichi che non dispongono di elettronica sofisticata di mappare nuovamente (o saltare) i settori che hanno fallito, ma i moderni dischi rigidi già rilevano i settori guasti e li rimappano per te.

Teoricamente potresti usare i badblocksdati per avere gli errori di rimappatura del sistema operativo (visibili) come se il tuo disco moderno fosse un disco Winchester antico, ma alla fine è controproducente - Come ho detto prima, QUALSIASI settore danneggiato rilevato badblockssu un disco moderno è una causa per scartare il intera unità come difettosa (o sta per guastarsi).

I settori danneggiati visibili indicano che l'unità ha esaurito lo spazio di rimappatura, il che è relativamente raro per i dischi moderni a meno che non siano vecchi (vicino alla fine della vita funzionale) o difettosi (piatti / teste difettosi dalla fabbrica).


Quindi fondamentalmente se l'esecuzione badblockssu un disco prima di distribuirlo in produzione ti fa sentire meglio andare avanti e farlo, ma se il tuo disco è stato prodotto in questo secolo e mostra un settore danneggiato visibile, dovresti buttarlo nel cestino (o chiamare la sua garanzia). Per quanto riguarda i miei soldi, lo stato e la difesa SMART in profondità è un uso migliore del mio tempo rispetto al controllo manuale dei dischi.


1
Bene, questo spiega molto bene la differenza tra SMART e badblock. Ma ciò implica che il monitoraggio dello stato SMART è sufficiente o devo anche eseguire lunghi test SMART una volta ogni tanto se voglio che gli avvisi SMART vengano eseguiti correttamente? Vale a dire che dovrei correre di smartctl -t long /dev/sdatanto in tanto, o posso presumere che smartd"automagicamente" mi avvertirà di problemi imminenti senza che io debba impostare altro?
Hongli Lai,

Questa è una decisione che solo tu puoi prendere, tuttavia SMART non è progettata per richiedere un intervento manuale ("Funziona" e generalmente non dovresti fare confusione). Fidati del tuo hardware (almeno in misura limitata), perché se non puoi fidarti del tuo hardware puoi anche fare le valigie e tornare a casa.
voretaq7,

2
"Le unità moderne fanno già ciò che fanno i badblock, internamente e alcune migliaia di volte più veloce" badblockslegge ogni byte dall'unità, li sovrascrive con schemi casuali e quindi ripristina i dati originali. Gli autotest SMART non lo fanno. Questo dovrebbe cancellare tutti i settori "in sospeso", se ho capito bene.
endolito il

4
@endolith I test non sono equivalenti diretti, ma lo scopo che servono è equivalente (scoprire e consentire la rimappatura di settori danneggiati). Il mio punto principale era l'ultimo paragrafo: se vuoi eseguire i badblock come esercitatore del disco (per vedere se riesci a provocare errori SMART perché sta trovando un sacco di blocchi danneggiati) provaci, ma se stai eseguendo i badblock oggi con il intenzione di caricare l'elenco di blocchi danneggiati per evitare di usare quei settori (come abbiamo fatto nell'età della pietra) Stai sbagliando: settori danneggiati visibili significano che dovresti buttare il disco nel cestino più vicino.
voretaq7,

1
@Hashim Sì, credo che sia utile usare i badblock perché eliminerà i settori in sospeso.
endolith

5

Buone risposte a questa domanda sono

/superuser//a/693065

/superuser//a/693064

Contrariamente ad altre risposte trovo che i badblock non siano obsoleti ma uno strumento molto utile. Una volta ho aggiornato il mio PC con un nuovo disco rigido e ha iniziato a essere instabile. Mi ci è voluto un po 'di tempo per capire, grazie ai badblock, che la superficie del disco aveva dei difetti. Da allora eseguo badblock completi in modalità di scrittura (distruttibili!) Per ogni nuovo disco rigido che inizio a utilizzare e non ho più avuto questo problema. Consiglio vivamente a

time sudo badblocks -swvo sdX.log / sev / sdX

per ogni nuovo disco rigido. Testerà ogni singolo bit del disco alcune volte per la scrittura e la lettura e quindi può evitare molti problemi in seguito.

Durante questo test i blocchi danneggiati verranno mappati dall'unità. Pertanto, il "Conteggio dei settori riattivati" deve essere annotato prima e dopo il test e confrontato con la soglia SMART, poiché dirà qualcosa sull'integrità dell'unità.


2
Lo stress test di una nuova unità mentre è ancora in garanzia è un'ottima idea.
endolito il

2

badblocks è una reliquia dei vecchi tempi e non è strettamente utile, può trovare un settore attualmente illeggibile, ma la cosa giusta da fare con un settore danneggiato è recuperare i dati dal backup. Cosa si può fare se i dati non fossero fondamentali per te è eliminare il file associato e scrivere qualcosa in quella posizione, questo consentirà al disco di riallocare il settore se ritiene che debba e continuerà a funzionare.

L'autotest del disco andrà anche in giro e testerà l'intero supporto per vari difetti, si suppone che utilizzi soglie più basse rispetto a ciò che utilizza nel normale funzionamento per vedere se il disco ha molti punti deboli e in base alla logica del fornitore può decidere che il disco ha superato la sua vita utile e dichiara che il test ha avuto esito negativo. A quel punto dovresti estrarre tutti i tuoi dati o recuperarli dal backup e sostituire il disco.

Se un'azione del disco (mediante blocchi non funzionanti o funzionamento normale) rileva un errore di lettura irrecuperabile, il disco aggiornerà automaticamente il contatore in attesa di riallocazione e quando verrà eseguita la riallocazione aggiornerà i contatori di riallocazione in sospeso e i contatori riallocati. Anche un semplice dd accadrà.

Se devi scegliere tra i due usa smartctl -t a patto che avrebbe una migliore analisi del disco.

Posso anche suggerire l'uso della mia utility diskscan https://github.com/baruch/diskscan , funziona più come i badblock ma cerca di valutare se ci sono settori che vanno male, un po 'come un settore con problemi di udito che prende un molto più tempo da leggere. Questo è indicativo di un problema di sviluppo multimediale e nelle versioni future potrebbe anche offrire un tentativo automatico di aiutare il disco a risolvere questo problema.


"Inoltre, i badblock sono essenzialmente obsoleti al giorno d'oggi poiché i dischi stessi rialloceranno i dati e non è più necessario mappare i blocchi danneggiati a livello di filesystem." Non badblockssollecita l'unità in modi in cui i test automatici SMART non lo fanno?
endolito il

No. i badblock eseguiranno una scansione sequenziale del disco. Non è meglio di dd e sarà lo stesso di quello che fa anche l'autotest.
Baruch anche il

badblockslegge ogni byte dal disco, lo sostituisce con schemi di prova, quindi riscrive i dati originali al loro posto. Gli autotest SMART sono test di lettura e scrittura simili?
endolith

1
Bene, i badblock che riscrivono i dati elimineranno tutti i "settori in sospeso" e farebbero che il drive li contrassegni nuovamente come buoni o li riallochi, giusto?
endolito il

1
Sì. Potrebbe essere quello che vuoi in questo caso.
Baruch anche il
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.