appunti personali

se trovi qualcosa di utile, lascia un commento. grazie.

Controllo blocchi difettosi hard-disk

Premessa: un disco con errori S.M.A.R.T. ha affidabilità zero e va sostituito per l’utilizzo normale.
Se gli errori sono saltuari, può servire come disco esterno per immagazzinare dati ingombranti ma recuperabili in caso di danneggiamento, ad esempio tutto ciò che si scarica da Internet.

Per partizioni ext2/ext3/ext4 (es. sdb1) lo strumento per il controllo di dei blocchi difettosi è badblocks. Le sue pagine man raccomandano di non usarlo direttamente, ma di richiamarlo con le opzioni di e2fsck

# e2fsck -cckV /dev/sdb1

-cc esegue il controllo di lettura-scrittura non distruttivo;
-k evita di ri-analizzare i blocchi già indicati come danneggiati;
-V è il solito verbose.

Problema: e2fsck non può essere interrotto e ripreso; se ho un disco enorme devo lasciarlo macinare per ore e ore di seguito.

Soluzione: usare direttamente badblocks.

1. Creare con gparted una nuova tabella gpt per il disco (es. sdb) e una partizione che occupi l’intero disco (es. sdb1) e annotare i valori di Dimensione settore (es. 512) per il disco, e Primo settore (es. 2048) per la partizione.

2. Ricavare e annotare la dimensione dei blocchi con

# dumpe2fs -h /dev/sdb1 grep 'Block size'
dumpe2fs 1.43.4 (31-Jan-2017)
Block size:               4096

3. Quindi il primo blocco della partizione è il 256 (= 512 x 2048 / 4096)

4. Avviare il controllo dei blocchi danneggiati sull’intero disco e annotare il numero totale di blocchi

# badblocks -b 4096 -o blocchi-difettosi.list -nsv /dev/sdb
Ricerca dei blocchi non validi in modalità lettura-scrittura non distruttiva
Dal blocco 843456 al blocco 122096645
Ricerca dei blocchi non validi (test in moalità lettura-scrittura non distruttiva)
Controllo con un modello casuale:  34.03% done, 2:07:21 elapsed. (0/0/0 errors)

-b imposta la dimensione dei blocchi al valore 4096 rilevato in precedenza;
-o specifica dove salvare l’elenco dei blocchi difettosi trovati;
-n è il controllo non distruttivo in lettura-scrittura; [usando -w al posto di -n il controllo è più rapido, ma distruttivo e sequenziale (prima scrive tutto il disco, poi lo legge tutto), quindi non si può interromperlo quando ci pare]
-s stampa alcune statistiche del processo;
-v è il solito verbose.

5. Per interrompere in qualsiasi momento il controllo, premere ctrl+c e annotare l’ultimo blocco analizzato

Interrupted at block 42371776
Rilevato interrupt, pulizia in corso

6. Ora è possibile riprendere il controllo da dove è stato interrotto, cambiando anche il file di output (altrimenti il precedente sarà sovrascritto)


# badblocks -b 4096 -o blocchi-difettosi-2.list -nsv /dev/sdb 122096645 42371776
Ricerca dei blocchi non validi in modalità lettura-scrittura non distruttiva
Dal blocco 42371776 al blocco 122096645
Ricerca dei blocchi non validi (test in moalità lettura-scrittura non distruttiva)
Controllo con un modello casuale: 34.87% done, 0:39 elapsed. (0/0/0 errors)

7. Terminato il controllo, copiare tutti gli elenchi dei blocchi in un foglio di calcolo, aggiungere ad ognuno il valore 256 (ricavato al punto 3.) e salvare il nuovo elenco (es. blocchi-difettosi-partizione.list).

8. Scrivere l’elenco dei blocchi difettosi nella partizione

# e2fsck -l blocchi-difettosi-partizione.list /dev/sdb1

9. Fine.

Per le partizioni NTFS bisogna affidarsi ad un disco di avvio di Windows o dischi live con Windows PE ed eseguire:

chkdsk /b /v <unità>:

L’opzionie /b ripete il test sui settori già indicati come danneggiati (implica /r che controlla i settori, e che implica /f che corregge gli errori trovati); /v è il solito verbose.
Non so come si comporta il programma se viene interrotto durante la scansione:
1. registra i blocchi danneggiati trovati finora?
2. salterà tali blocchi in un successivo controllo?

/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *