Utilizzo di "badblocks" su dischi moderni


21

Voglio usare i badblock per controllare i miei HDD e apprezzerei il chiarimento del suo funzionamento.

Qualcuno può spiegare le migliori opzioni da utilizzare con -be -c? Ho incluso le loro definizioni dalla pagina man, ma non sono sicuro che dimensioni maggiori sarebbero utili per i dischi moderni con 64 MB di RAM e settori 4k.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

In secondo luogo, vorrei sapere se il test in modalità di scrittura è più accurato della modalità di lettura e scrittura non distruttiva?

Infine, quante riassegnazioni del settore SMART sono accettabili / le unità con conteggi di riallocazione diversi da zero devono essere immediatamente sostituite?


3
per la seconda parte: non appena inizi a vedere i blocchi, significa che qualcosa è andato storto. Questo è probabilmente un buon segno che dovresti sostituire il disco prima di non poterlo leggere affatto. Ma in tutti i casi, prima ancora dell'errore, dovresti sempre avere 2 backup di dati importanti (1 locale, 1 remoto) oltre alla copia di lavoro. vedi i dettagli sulla mia risposta lì: superuser.com/a/528181/174998
Olivier Dulac

4
per la dimensione del blocco: dovrebbe riflettere la dimensione del blocco effettiva utilizzata dal sistema operativo per archiviare i dati su quel disco rigido (in base al filesystem utilizzato). Non è per accelerare le cose, è così che segna un blocco "cattivo", quel blocco è effettivamente 1 blocco e non 1/2 o 1/4 ° o anche 2 (o più) blocchi.
Olivier Dulac il

Risposte:


21

Domanda 1:

Per quanto riguarda l' -bopzione: questo dipende dal tuo disco. I dischi moderni e di grandi dimensioni hanno blocchi da 4KB, nel qual caso è necessario impostare -b 4096. È possibile ottenere la dimensione del blocco dal sistema operativo ed è generalmente ottenibile leggendo le informazioni sul disco dall'etichetta o cercando su Google il numero del modello del disco. Se -bè impostato su qualcosa di più grande della dimensione del blocco, l'integrità dei badblocksrisultati può essere compromessa (vale a dire che è possibile ottenere falsi negativi: non sono stati trovati blocchi danneggiati quando possono ancora esistere). Se -bè impostato su un valore inferiore alla dimensione del blocco dell'unità, la velocità della badblockscorsa può essere compromessa. Non sono sicuro, ma potrebbero esserci altri problemi con l'impostazione-ba qualcosa di più piccolo della dimensione del blocco, poiché non verifica l'integrità di un intero blocco, potrebbe essere possibile ottenere falsi negativi se impostato su un valore troppo piccolo.

L' -copzione corrisponde a quanti blocchi devono essere controllati contemporaneamente. Lettura / scrittura in batch, fondamentalmente. Questa opzione non influisce sull'integrità dei risultati, ma influisce sulla velocità con cui badblocksviene eseguita. badblocksscriverà (facoltativamente), quindi leggerà, bufferizzerà, controllerà, ripeterà per ogni N blocchi come specificato da -c. Se -cimpostato su un valore troppo basso, le badblocksesecuzioni richiederanno molto più tempo del normale, poiché l'accodamento e l'elaborazione di una richiesta IO separata comporta un sovraccarico e il disco potrebbe imporre un sovraccarico aggiuntivo per ogni richiesta. Se -cimpostato su un valore troppo alto, badblockspotrebbe esaurire la memoria. Se ciò accade, badblocksfallirà abbastanza rapidamente dopo l'avvio. Ulteriori considerazioni qui includono badblockscorse parallele : se stai correndobadblockscontro più partizioni sullo stesso disco (cattiva idea) o contro più dischi sullo stesso canale IO, probabilmente ti consigliamo di sintonizzarti -csu qualcosa di sensibilmente alto data la memoria disponibile in badblocksmodo che le corse parallele non combattano per la larghezza di banda IO e può parallelizzare in modo sano.

Domanda 2:

Contrariamente a quanto indicano altre risposte, il -wtest in modalità di scrittura non è più o meno affidabile del test di lettura-scrittura non distruttivo, ma è due volte più veloce, a costo di essere distruttivo per tutti i tuoi dati. Spiegherò perché:

In modalità non distruttiva, badblockseffettua le seguenti operazioni:

  1. Leggi i dati esistenti, esegui il checksum (leggi di nuovo se necessario) e salvali in memoria.
  2. Scrivi un modello predeterminato (sovrapponibile con l' -popzione, sebbene di solito non necessario) sul blocco.
  3. Rileggere il blocco, verificando che i dati letti siano gli stessi del modello.
  4. Scrivi i dati originali sul disco.
    • Non ne sono sicuro, ma probabilmente rileggerà e verificherà che i dati originali sono stati scritti correttamente e continuano a fare il checksum alla stessa cosa.

In -wmodalità distruttiva ( ), badblocksesegue solo i passaggi 2 e 3 sopra. Ciò significa che il numero di operazioni di lettura / scrittura necessarie per verificare l'integrità dei dati viene dimezzato. Se un blocco è danneggiato, i dati saranno errati in entrambe le modalità. Naturalmente, se ti interessano i dati archiviati sul tuo disco, dovresti usare la modalità non distruttiva, poiché -wcancellerà tutti i dati e lascerà invece badblocks'schemi scritti sul disco.

Avvertenza: se un blocco sta andando male, ma non è ancora completamente andato, alcune coppie di verifica di lettura / scrittura potrebbero funzionare, altre potrebbero non funzionare. In questo caso, la modalità non distruttiva può darti un'indicazione più affidabile della "confusione" di un blocco, poiché esegue due serie di verifica di lettura / scrittura (forse - vedi il punto al punto 4). Anche se la modalità non distruttiva è più affidabile in quel modo, è solo più affidabile per coincidenza . Il modo corretto di verificare la presenza di blocchi che non sono completamente danneggiati ma che non possono sostenere più operazioni di lettura / scrittura è eseguire badblockspiù volte sugli stessi dati, utilizzando l' -popzione.

Domanda 3:

Se SMART sta riallocando settori, probabilmente dovresti prendere in considerazione la sostituzione dell'unità al più presto. Le unità che perdono alcuni settori non sempre continuano a perderle, ma la causa è di solito un'unità fortemente utilizzata che diventa magneticamente sdolcinata, o guasti a testine / motori con conseguenti letture / scritture imprecise o fallite. La decisione finale dipende da te, ovviamente: in base al valore dei dati sull'unità e all'affidabilità di cui hai bisogno dai sistemi che esegui su di esso, potresti decidere di tenerlo aggiornato. Ho alcune unità con noti blocchi danneggiati che girano con gli avvisi SMART da anni nel mio file server, ma sono state salvate in base a una pianificazione in modo tale da poter gestire un errore totale senza molto dolore.


4
Qualche idea sul perché l' -bimpostazione predefinita è 1024? Mi sembra strano. Perché no 512?
Ryan J,

6
@RyanJ 1024 è la dimensione minima del blocco per ext2. badblocks fa parte di e2fsprogs ed era originariamente destinato a popolare l'elenco dei blocchi danneggiati di un filesystem ext2. Devi eseguirlo con la stessa dimensione di blocco di FS per ottenere i numeri nel formato giusto per mkfs.ext2. TL; DR: ragioni storiche di cui non dovresti preoccuparti.
sourcejedi,

BUUUTT, @Zac B ha detto "Se -b è impostato su qualcosa di più grande della dimensione del blocco, l'integrità dei risultati dei blocchi non validi può essere compromessa" 1024> 512. Riesco a capire come il 513 potrebbe far sì che alcuni bytest non vengano controllati. Ma forse dovrebbe essere ribadito "Se -b è impostato su qualcosa di più grande della dimensione del tuo blocco E NON ANCHE MOLTIPLICAMENTE, l'integrità dei risultati dei blocchi può essere compromessa". Che ne dici poster originale, altre persone più intelligenti di me?
Billy C.

4

1) Se il tuo disco moderno utilizza dimensioni del settore diverse da 512b, devi impostare tale dimensione con l' -bopzione (ad es -b 4096.). Senza questa opzione, il tuo controllo verrà eseguito molto più lentamente poiché ogni settore reale verrà provato più volte (8 volte nel caso del settore 4k). Anche come menzionato Olivier Dulac nel commento alla domanda -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

L'opzione -cimplica il numero di settori provati contemporaneamente. Potrebbe avere delle implicazioni sulle prestazioni e il valore di tali prestazioni potrebbe dipendere da un modello di disco specifico.

2) write-mode test- A mio avviso, verificherà solo se si dispone di un errore grave o negativo (alias Degradazione silenziosa dei dati, decomposizione dei bit, decadimento dei supporti di archiviazione, settori UNC)

3) Non mi fiderei del rapporto SMART al momento. È più importante come i valori cambiano nel tempo. Anche qui c'è una ricerca di Google Failure Trends in una popolazione di grandi unità disco e qui ne viene discussa . Ecco la citazione dalla ricerca:

Nonostante questa elevata correlazione, concludiamo che è improbabile che i modelli basati esclusivamente sui parametri SMART siano utili per prevedere i guasti dei singoli drive.

Per quanto riguarda le menzioni di altri per la sostituzione del disco - potresti non avere un problema al disco rigido ma un degrado silenzioso dei dati (bit rot, decadimento dei supporti di archiviazione, settori UNC). In tal caso non ha senso sostituire il disco, ma è utile eseguire nuovamente la lettura / scrittura degli stessi dati sul disco. Puoi vedere qui come potrebbe essere risolto.

Se si verifica un errore grave, è possibile provare a ripartizionare l'unità nel modo in cui l'area danneggiata si trova fuori da qualsiasi partizione. Per me quell'approccio è stato utile e tale cattiva guida è stata utilizzata per lungo tempo senza problemi.


La prima frase è errata, il -bvalore predefinito è 1024. Se il tuo disco utilizza una dimensione del settore diversa da 1024, che è abbastanza comune al di fuori dei filesystem ext2, allora dovresti specificarlo.
Hashim,

1

Lascerei -b e -c come impostazione predefinita a meno che tu non abbia un motivo specifico per cambiarli. Probabilmente potresti impostare -b su 4096 se il tuo disco ha blocchi di dimensioni 4k.

Vorrei suggerire di eseguire prima i badblock con test rw non distruttivo. Se trova settori danneggiati, il disco è rotto e deve essere sostituito. Se NON trova blocchi danneggiati su non distruttivi, ma sospetti ancora che abbia blocchi difettosi, esegui il test distruttivo rw.

Infine, quante riassegnazioni del settore SMART sono accettabili / le unità con conteggi di riallocazione diversi da zero devono essere immediatamente sostituite?

Sostituirei l'unità non appena i settori vengono sostituiti.


2
Sostituirei l'unità non appena i settori vengono sostituiti. come fai a sapere che i blocchi stanno andando male nel normale funzionamento? Ricevi un segnale in qualche modo?
Alexis Wilke,

5
Devi monitorare i log SMART.
Ярослав Рахматуллин,

1
a meno che tu non abbia un motivo specifico per cambiarli . Come avere una dimensione del blocco diversa dalla 1024 predefinita, che è molto comune?
Carcamano

1

Questo tipo di va alla differenza tra la modalità di lettura dei badblock (non distruttiva) e la modalità di scrittura (distruttiva):

Un'unità riallocherà un settore danneggiato solo in caso di errore di scrittura. Gli errori di lettura per i file vengono "corretti" solo quando si tenta di riscrivere il file. Altrimenti. il blocco errato rimane parte del file supponendo che potresti essere in grado di recuperare qualcosa. Gli errori di lettura per le tabelle delle partizioni possono essere "corretti" solo eseguendo blocchi danneggiati in modalità di scrittura e ricreando la partizione

Quindi, la modalità di lettura ti dirà dove sono i blocchi danneggiati ma non può farci nulla. La modalità di scrittura verifica lo stato di ciascun settore e causerà la riassegnazione di un blocco errato al disco, ma a spese della distruzione dei dati. Fai la tua scelta.


0

Per rispondere alla tua seconda domanda sui settori rimappati, dipende. Sto parlando dal contesto di un utente domestico che (occasionalmente) monitora questo tipo di cose.

  • Quanto sono importanti i dati memorizzati sull'unità?
  • Cosa si perde se l'unità all'improvviso diventa a pancia in su?
  • Il backup dei dati è effettuato altrove?
  • L'unità è un membro di un RAID in cui la perdita dell'unità ha un impatto minimo?
  • Il numero di settori rimappati sta crescendo?

Ecco due situazioni che ho affrontato. Ho avuto un RAID5 di 6 unità da 200 GB. Dopo un'interruzione di corrente che ha provocato lo sfarfallio delle luci, un'unità ha mostrato 14 settori rimappati e ha registrato diversi errori. Ho osservato l'unità e non sono stati registrati altri errori e il conteggio dei settori rimappato è rimasto stabile. Ho concluso che l'unità ha sofferto a causa di un transitorio di potenza e non si è altrimenti guastata. Ho continuato a usarlo per anni. Il RAID5 originale è stato ritirato, ma ho due di quelle unità in servizio con circa 10 anni di accensione. Hanno una manciata di settori rimappati. Ne uso due con mirroring per archiviare dump di backup incrementali dal mio backup principale. In questo modo il backup principale sta vedendo (principalmente) operazioni di lettura e le scritture stanno andando su dispositivi diversi. Se una di queste antiche unità si guasta, l'altra dovrebbe continuare. Se entrambi falliscono, Li sostituisco con qualcos'altro ed eseguo nuovamente lo script di backup. L'impatto se una di queste unità si guasta è vicino allo zero, quindi non mi preoccupo dei settori rimappati.

Avevo un HDD da 2 TB che faceva parte di una coppia di unità con mirroring e che ha iniziato a crescere settori rimappati. All'inizio erano dozzine, poi centinaia, poi migliaia. Questo è stato per un periodo di anni. L'altra unità nella coppia è rimasta in salute e, in effetti, il derivato lentamente in fallimento non è stato eliminato dall'array. Alla fine ho sostituito entrambe le unità con unità da 6 TB e il conteggio crescente del settore rimappato è diventato un problema. Ho ancora l'unità e "funziona", anche con circa 4500 settori rimappati. Ho inserito unità come questa in un sistema di test (come membro RAID) per vedere cosa succede quando si muore davvero. Ho avuto un paio di opportunità di lavorare con questo e in ogni caso il rimpiazzo è andato senza drammi.

Ho avuto un guasto all'unità sul mio file server di backup primario. Non ha prodotto alcun avviso avanzato, ha appena smesso di rispondere ai comandi SATA. Era un membro di un ZFS RAIDZ2 e l'ho sostituito senza alcun dramma. In effetti, sul mio server di prova ho sostituito le unità guaste senza spegnere e riaccendere il server.

Un altro punto da notare, ho backup sul sito e fuori sito di tutti i dati importanti. Se si perde un sistema, ci sono due copie dei dati altrove.

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.