Domanda 1:
Per quanto riguarda l' -b
opzione: 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 badblocks
risultati 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 badblocks
corsa può essere compromessa. Non sono sicuro, ma potrebbero esserci altri problemi con l'impostazione-b
a 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' -c
opzione 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 badblocks
viene eseguita. badblocks
scriverà (facoltativamente), quindi leggerà, bufferizzerà, controllerà, ripeterà per ogni N blocchi come specificato da -c
. Se -c
impostato su un valore troppo basso, le badblocks
esecuzioni 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 -c
impostato su un valore troppo alto, badblocks
potrebbe esaurire la memoria. Se ciò accade, badblocks
fallirà abbastanza rapidamente dopo l'avvio. Ulteriori considerazioni qui includono badblocks
corse parallele : se stai correndobadblocks
contro più partizioni sullo stesso disco (cattiva idea) o contro più dischi sullo stesso canale IO, probabilmente ti consigliamo di sintonizzarti -c
su qualcosa di sensibilmente alto data la memoria disponibile in badblocks
modo 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 -w
test 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, badblocks
effettua le seguenti operazioni:
- Leggi i dati esistenti, esegui il checksum (leggi di nuovo se necessario) e salvali in memoria.
- Scrivi un modello predeterminato (sovrapponibile con l'
-p
opzione, sebbene di solito non necessario) sul blocco.
- Rileggere il blocco, verificando che i dati letti siano gli stessi del modello.
- 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 -w
modalità distruttiva ( ), badblocks
esegue 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é -w
cancellerà 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 badblocks
più volte sugli stessi dati, utilizzando l' -p
opzione.
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.