Badblocks è contenuto all’interno del pacchetto “e2fsprogs“, quindi se non lo abbiamo gia instalato, installiamolo con il seguente comando (comando relativo ad ArchLinux e derivate)
sudo pacman -S e2fsprogs
al termine dell’installazione, possiamo iniziare ad usare l’utility badblocks.
[Opzionale] Vi consiglio di studiarvi un po il suo manuale, per comprendere al meglio come utilizzare questo software.
Per farlo potete usare il comando
man badblocks
A questo punto non ci resta che analizzare il nostro disco o penna usb, per farlo, innanzi tutto dovete vedere quale è il dispositivo da analizzare, per farlo potete usare il comando
sudo fdisk -l
che vi restituirà un output simile
Dispositivo Start Fine Settori Size Tipo
/dev/sda1 2048 923647 921600 450M Windows recovery environment
/dev/sda2 923648 1128447 204800 100M EFI System
/dev/sda3 1128448 1161215 32768 16M Microsoft reserved
/dev/sda4 1161216 348456453 347295238 165,6G Microsoft basic data
/dev/sda5 348456960 350085119 1628160 795M Windows recovery environment
/dev/sda6 350085120 380805119 30720000 14,7G Linux filesystem
/dev/sda7 380805120 957240666 576435547 274,9G Linux filesystem
/dev/sda8 957241344 976771071 19529728 9,3G Linux filesystemDisk /dev/sdb: 2 GiB, 2147484160 bytes, 4194305 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Nel mio caso /dev/sda (i vari /dev/sda1, …. , /dev/sda8 sono le varie partizoni del disco, ma non ci interessa saperlo) è il disco principale del notebook, mentre /dev/sdb è una penna usb collegata al computer.
a questo punto possiamo iniziare la scansione utilizzando 2 differenti metodi:
- Metodo non distruttivo (non cancella i file)
- Metodo distruttivo (cancella i file, in quanto per migliorare l’accuratezza, esegue 4 differenti scrittura su ogni blocco del dispositivo
vediamo come usarli
AVVERTENZA: Questo processo mette sotto pesante stress il vostro dispositivo, quindi se già è mezzo rotto, questo processo potrebbe dargli la botta finale.
NOTA: per poter usare badblocks è necessario che il dispositivo su cui volete lavorare non sia montato, quindi se volete scansionare il vostro HDD principale, vi servirà una distribuzione live.
per smontare un dispositivo potete usare il comando
sudo umount /dev/sdX
dove al posto di /dev/sdX dovete mettere il dispositivo che volete smontaare (potete vederlo dall’output di fdisk)
Metodo non distruttivo
Anche se con questo metodo non correte il rischio di perdere dati è consigliabile fare lo stesso un backup, sopratutto se avete dati importanti.
Apriamo un terminale e digitiamo il seguente comando
sudo badblocks -n -s -v -o errori.log /dev/sdX
dove al posto di /dev/sdX dovete mettere il vostro dispositivo come avete visto dall’output di fdisk, ad esempio /dev/sda oppure /dev/sdb, ecc…)
Come potete vedere dal manuale di backblocks, le varie opzioni servono a:
-n indica la modalità non distruttiva (non può essere usata assieme all’opzione -w)
-s vi mostra la percentuale di avanzamento
-v è la modalità verbosa che vi fornisce maggiori dettagli (numero errori in lettura/scrittura/corruzione
-o serve per scrivere l’output in un file (in questo caso errori.log)
se volete usare altre opzioni potete guardare il manuale e scegliere le opzioni che preferite
Il processo impiegherà molto tempo, e ovviamente più il dispositivo è capiente, maggiore sarà il tempo necessario alla scansione
Metodo distruttivo
Attenzione questo metodo cancellerà tutti i file presenti all’interno del dispositivo, assicuratevi quindi di fare un backup.
il comando è simile all’altro e si differenzia solo per un’opzione
sudo badblocks -w -s -v -o errori.log /dev/sdX
Le opzioni sono simili al precedente comando, di nuovo c’è solo:
-w serve ad indicare che vogliamo usare la modalità distruttiva (non può essere usata assieme a -n)
Al termine della scansione, indipendentemente dal metodo che avete usato vi ritroverete all’interno del file “errori.log” tutta la lista di eventuali blocchi danneggiati.
A questo punto potete formattare il dispositivo facendo si che i settori danneggiati vengano ignorati, così che non vengono utilizzati e non correte il rischio che eventuali file che vadano a scrivere sopra questi blocchi, si corrompano rendendo inutilizzabile il file.
per farlo potete usare il comando
mkfs.TIPO_FILE-SYSTEM -l errori.log /dev/sdX
dove al posto di TIPO_FILE-SYSTEM dovete inserire il file system che volete venga usato
Invece con l’opzione -l dite ad mkfs di ignorare i blocchi indicati all’interno del file errori.log
Come al solito al posto di /dev/sdX dovete inserire il dispositivo che volete formattare
per formattare in Fat32
sudo mkfs -t vfat -I -l errori.log /dev/sdb
Avrete un output del genere
mkfs.fat 3.0.28 (2015-05-16)
1023248 bad blocks
e noterete anche che le dimensioni del dispositivo saranno ridotte (ad esempio la chiavetta che ho testato, è passata da avere 2GB ad averne 1.1)