Passa al contenuto principale
hard-driveINFO

badblocks: il test del disco che il suo stesso manuale ti sconsiglia di lanciare

badblocks analizza un dispositivo alla ricerca di blocchi danneggiati, e una delle sue opzioni cancella ogni byte del disco. Cosa raccomanda davvero il manuale, quale modalità è sicura, e quando testare è la mossa sbagliata.

Di Eric Gerard · Editore · Save My Disk6 min di letturaFoto via Pexels

badblocks è uno di quegli strumenti a cui si ricorre quando un disco inizia a comportarsi in modo strano. È presente su quasi ogni sistema Linux, sembra esattamente quello che serve, e una delle sue opzioni cancella il disco che stavi cercando di diagnosticare. Il manuale è insolitamente diretto su tutto questo, quindi ecco cosa dice davvero.

Cosa fa, e cosa non fa

La descrizione è una riga sola: badblocks analizza un dispositivo alla ricerca di blocchi danneggiati. Produce un elenco.

Il suo compito finisce qui. Non ripara nulla. La riallocazione dei settori è gestita dal firmware del disco secondo i suoi tempi, non da uno scanner in user space. L'elenco esiste per essere passato a e2fsck o mke2fs, in modo che il file system sappia quali blocchi lasciare stare.

Questo lo colloca nella stessa categoria di smartctl, che riporta gli attributi SMART senza ripararli a sua volta. Entrambi ti dicono qualcosa. Nessuno dei due sistema niente.

L'opzione che cancella il disco

Di tutto quello che segue, questa è la parte da ricordare.

L'opzione -w esegue un test in modalità scrittura. Scrive i pattern 0xaa, 0x55, 0xff e 0x00 su ogni blocco del dispositivo, li rilegge uno per uno e li confronta. È un test accurato proprio perché usa l'intera superficie.

Il manuale riporta un avvertimento esplicito:

Non usare mai l'opzione -w su un dispositivo che contiene un file system esistente. Questa opzione cancella i dati! (nel testo originale: «Never use the -w option on a device containing an existing file system. This option erases data!»)

Non c'è modo di annullare, non c'è alcuna preservazione parziale, non esiste il "sovrascrive solo le parti danneggiate". Ogni blocco viene scritto.

Diversi dischi rigidi impilati su una superficie bianca, con i circuiti stampati verdi e blu esposti e un connettore SATA.
Diversi dischi rigidi impilati su una superficie bianca, con i circuiti stampati verdi e blu esposti e un connettore SATA.

Le modalità sicure

Per impostazione predefinita, badblocks esegue un test non distruttivo in sola lettura. Lanciandolo senza alcuna opzione di modalità, legge il dispositivo e segnala ciò che non riesce a leggere. Non viene scritto nulla.

L'opzione -n aggiunge un test non distruttivo in lettura e scrittura: scrive dei pattern ma ripristina il contenuto originale man mano che procede. Il manuale la raccomanda come sostituto di -w quando è presente un file system, ed è onesto sul compromesso: è più lenta, ma preserva i tuoi dati.

-n e -w si escludono a vicenda, il che è una piccola fortuna.

La raccomandazione che quasi nessuno segue

Ecco la parte che sorprende chi usa questo strumento da anni. Il manuale dice, già nella descrizione:

si raccomanda vivamente agli utenti di non eseguire badblocks direttamente, ma di usare piuttosto l'opzione -c dei programmi e2fsck e mke2fs (nel testo originale: «it is strongly recommended that users not run badblocks directly, but rather use the -c option of the e2fsck and mke2fs programs»)

Il motivo è la dimensione dei blocchi. I numeri di blocco prodotti da badblocks dipendono dalla dimensione dei blocchi usata dal file system, e il valore predefinito è 1024 byte. Se il tuo file system ne usa un'altra e non hai passato -b, i numeri nell'output non si riferiscono ai blocchi che pensi. Eseguire la scansione tramite e2fsck -c o mke2fs -c fa sì che la dimensione dei blocchi sia corretta per costruzione.

Quindi l'inquadramento onesto è questo: badblocks è un componente, e gli strumenti che lo richiamano di solito sanno richiamarlo meglio di te.

Perché si rifiuta di toccare un dispositivo montato

Normalmente badblocks rifiuta un test in lettura e scrittura o non distruttivo su un dispositivo montato, perché entrambi possono mandare in crash il sistema o danneggiare il file system, anche se è montato in sola lettura.

Esiste un'opzione -f per scavalcare quel rifiuto, e il commento del manuale al riguardo è una delle righe più memorabili di una man page Linux:

Questo comportamento può essere scavalcato usando l'opzione -f, ma non dovrebbe quasi mai essere usata: se pensi di essere più intelligente del programma badblocks, quasi certamente non lo sei. (nel testo originale: «This can be overridden using the -f flag, but should almost never be used --- if you think you're smarter than the badblocks program, you almost certainly aren't.»)

La mossa corretta è smontare il dispositivo. Il manuale ammette esattamente un'eccezione: un /etc/mtab che sostiene erroneamente che un dispositivo sia montato.

Le opzioni che vale la pena conoscere

Alcune opzioni cambiano la forma di un'esecuzione:

  • -b imposta la dimensione dei blocchi. Predefinita 1024. È quella che rende l'output significativo oppure privo di senso.
  • -c imposta quanti blocchi vengono testati alla volta. Predefinito 64.
  • -p ripete la scansione finché non compaiono nuovi blocchi danneggiati per quel numero di passaggi consecutivi. Predefinito 0, cioè un passaggio singolo.
  • -e interrompe dopo un dato numero di blocchi danneggiati. Utile per rispondere alla domanda "ce ne sono in generale", e il manuale nota che produce un elenco possibilmente incompleto, quindi non usarla quando vuoi il quadro completo.
  • -o scrive l'elenco su un file nel formato che e2fsck -l e mke2fs -l si aspettano.
  • -s mostra l'avanzamento, cosa che conta perché un passaggio completo su un disco grande si misura in ore.

Quando testare è la mossa sbagliata

Questa è la valutazione che il manuale non può fare al posto tuo.

Un passaggio completo di badblocks legge, o legge e scrive, ogni blocco del dispositivo. Su un disco in salute è un esercizio lungo ma innocuo. Su un disco che sta già cedendo, sono ore di carico aggiuntivo su un hardware in difficoltà, e ore durante le quali non stai recuperando nulla.

Se i dati contano ancora, l'ordine è: prima l'immagine, poi l'indagine. Clonare con uno strumento progettato per i supporti danneggiati, che riprova e salta in modo intelligente invece di accanirsi sullo stesso settore illeggibile, porta via i tuoi byte dal disco mentre il disco gira ancora. Ne parliamo nella guida su come clonare un disco difettoso con ddrescue. I test falli poi sull'immagine, tutte le volte che vuoi, senza più nulla da perdere.

Scelta editoriale
4.5 / 5

Quando la scansione conferma che il disco sta cedendo

Fondata nel 2004Garanzia di 30 giorniVersione gratuita da 2 GB
Vedi l'offerta

In breve

badblocks cerca i blocchi danneggiati e annota quello che trova. Non ripara nulla.

La modalità predefinita è in sola lettura ed è sicura. -n scrive e ripristina. -w cancella l'intero dispositivo, e il manuale dice di non usarla mai dove esiste un file system. Il manuale raccomanda anche di non richiamare badblocks direttamente, ma tramite e2fsck -c o mke2fs -c, così la dimensione dei blocchi è corretta. Se si rifiuta di partire perché il dispositivo è montato, smontalo invece di ricorrere a -f.

E se il disco sta morendo invece di essere semplicemente sospetto, non spendere le sue ore residue a testarlo. Copialo prima.

Il comportamento descritto qui, compresi i pattern della modalità scrittura, l'avvertimento contro -w, la raccomandazione di usare e2fsck e mke2fs invece di badblocks direttamente, il rifiuto sui dispositivi montati e i valori predefiniti, è tratto dalla pagina di manuale badblocks(8) distribuita con e2fsprogs 1.47.0. Opzioni e valori predefiniti possono variare tra le versioni; consulta il manuale sul sistema che stai realmente usando. I link commerciali riportano l'attributo rel="sponsored nofollow"; può essere applicata una commissione di affiliazione senza costi aggiuntivi per te.

Scelta editoriale
4.5 / 5

Recupera i dati del tuo disco fisso → EaseUS

Scansione gratuita · file cancellati, formattati, persi · Windows & Mac

Fondata nel 2004Garanzia di 30 giorniVersione gratuita da 2 GB
Vedi l'offerta

Domande frequenti

badblocks ripara i settori danneggiati?

No. La sua stessa descrizione dice che analizza un dispositivo alla ricerca di blocchi danneggiati. Produce un elenco. La riparazione, nel senso della riallocazione di un settore in avaria, viene eseguita dal firmware del disco, non da badblocks. L'output è pensato per essere passato a e2fsck o mke2fs, in modo che il file system possa evitare quei blocchi.

Quale opzione di badblocks distrugge i dati?

Il test in modalità scrittura -w. Scrive i pattern 0xaa, 0x55, 0xff e 0x00 su ogni blocco del dispositivo, poi rilegge ciascuno di essi per confrontarli. Il manuale riporta un avvertimento esplicito: non usare mai -w su un dispositivo che contiene un file system esistente, perché questa opzione cancella i dati. Usa invece -n, che è più lento ma preserva quello che c'è.

È vero che il manuale sconsiglia di lanciare badblocks direttamente?

Sì, ed è facile non accorgersene. Il manuale afferma che si raccomanda vivamente agli utenti di non eseguire badblocks direttamente, ma di usare piuttosto l'opzione -c dei programmi e2fsck e mke2fs. Il motivo è la dimensione dei blocchi: i numeri di blocco generati da badblocks dipendono dalla dimensione dei blocchi in uso nel file system, quindi una discordanza produce un elenco di numeri che non significano quello che credi.

Perché badblocks si rifiuta di testare il mio disco montato?

Perché un test in lettura e scrittura o non distruttivo su un dispositivo montato può mandare in crash il sistema o danneggiare il file system, anche quando è montato in sola lettura. L'opzione -f scavalca quel rifiuto, e il commento del manuale al riguardo è brutale: se pensi di essere più intelligente del programma badblocks, quasi certamente non lo sei. Smonta invece il dispositivo.

Conviene lanciare badblocks su un disco che sta già cedendo?

Di solito no. Una scansione completa legge o scrive ogni blocco del dispositivo, il che è molto lavoro in più per un disco che è già in difficoltà, e il tempo passato a testare è tempo non passato a recuperare. Se i dati contano ancora, crea prima un'immagine del disco con uno strumento pensato per i supporti danneggiati, poi indaga sulla copia.