Come eseguire un checkdisk?


84

Ho il sospetto che potrebbe esserci un settore danneggiato su un disco. Ho usato il filesystem ext3.

Quale strumento è il miglior equivalente dello strumento di controllo degli errori di Windows?


@PabloBianchi: questa domanda ha esattamente lo stesso scopo. Li sto segnalando per un mod per unirli.
David Foerster,

Risposte:


101

dischi

Per verificare la presenza di settori danneggiati, controllare i dati SMART, probabilmente i migliori accessibili avviando l' utility Disks ( Palimpsest ). Anche se non vedi blocchi danneggiati, avvia un autotest per essere sicuro.

Il programma è incluso nel gnome-disk-utilitypacchetto. Correregksudo gnome-disks

SMART da Palimpsest

O in Ubuntu 16.04 versione (3.18):

SMART da dischi

badblocks

Puoi anche usare badblocks

sudo badblocks -sv /dev/sda

per controllare o per controllare e correggere prima scrivi il risultato in un file temporaneo:

sudo badblocks -sv /dev/sda  > bad-blocks-result
sudo fsck -t ext4 -l bad-blocks-result /dev/sda1

controllerà l'intero disco e stamperà tutti i blocchi danneggiati rilevati su / dev / sda .

Dal badblocksmanuale:

Nota importante: se l'output dei badblock verrà inviato ai programmi e2fsck o mke2fs, è importante che la dimensione del blocco sia specificata correttamente, poiché i numeri di blocco generati dipendono molto dalla dimensione del blocco in uso dal filesystem . Per questo motivo, si consiglia vivamente di non eseguire direttamente i badblock, ma piuttosto di utilizzare l'opzione -c dei programmi e2fsck e mke2fs.

fsck

fsckdi per sé non ti aiuterà a trovare settori danneggiati, peggio ancora, se ci sono molti settori danneggiati può danneggiare ulteriormente i tuoi dati. Usalo solo quando il disco è integro.


1
In realtà il manuale di badblock scoraggia dall'utilizzarlo direttamente e indirizza gli utenti a e2fsck con l'opzione "-c" (per il controllo di sola lettura) o "-cc" (per il controllo di lettura e scrittura).
mrówa,

2
come nota, su 13.04 esegui palinsesto semplicemente eseguendo "dischi" dal menu di Ubuntu, tuttavia ... Non vedo un'opzione per avviare un autotest (forse perché ho solo un disco, ed è quello in esecuzione Ubuntu ...)
rogerdpack l'

2
@ mrówa il manuale dice di farlo solo se "l'output di badblocks verrà inviato ai programmi e2fsck o mke2fs"
Jon

1
Inserisci le informazioni che per elencare tutti i dischi usano sudo fdisk -l
Canguro

2
questo è ora chiamato gnome-disk
endolith

74

In tutta questa risposta suppongo che un'unità di archiviazione appaia come un dispositivo a blocchi sul percorso /dev/sdc. Per trovare il percorso di un'unità di archiviazione nella nostra configurazione corrente, utilizzare:

  • Gnome Disks Installa i dischi Gnome (precedentemente Gnome Disk Utility, aka palimpsest), se è disponibile una GUI, oppure
  • sullo sguardo terminale in uscita lsblked ls -l /dev/disk/by-ide cercare di trovare il giusto dispositivo per dimensione, il partizionamento, il produttore e il nome del modello.

Controllo di base

  • rileva solo supporti completamente non rispondenti
  • quasi istantaneo (a meno che il mezzo non venga ruotato o rotto)
  • sicuro
  • funziona su supporti di sola lettura (ad es. CD, DVD, BluRay)

A volte un supporto di memorizzazione si rifiuta semplicemente di funzionare affatto. Appare ancora come un dispositivo a blocchi nel kernel e nel gestore del disco, ma il suo primo settore che contiene la tabella delle partizioni non è leggibile. Questo può essere verificato facilmente con:

sudo dd if=/dev/sdc of=/dev/null count=1

Se questo comando genera un messaggio su un "Errore di input / output", la nostra unità è rotta o non riesce a interagire con il kernel Linux come previsto. Nel primo caso, con un po 'di fortuna, uno specialista del recupero dati con un laboratorio adeguatamente attrezzato può recuperarne il contenuto. In quest'ultimo caso, vale la pena provare un diverso sistema operativo. (Mi sono imbattuto in unità USB che funzionano su Windows senza driver speciali, ma non su Linux o OS X.)

Autotest SMART

  • completezza regolabile
  • da istantaneo a lento o più lento (dipende dalla completezza del test)
  • sicuro
  • avverte di un probabile fallimento nel prossimo futuro

I dispositivi che lo supportano possono essere interrogati sulla loro salute tramite SMART o istruiti per eseguire test di integrità di diversa completezza. Questa è generalmente l'opzione migliore, ma di solito è disponibile solo su hard disk (non antichi) e unità a stato solido. La maggior parte dei supporti flash rimovibili non lo supporta.

Ulteriori risorse e istruzioni:

Controllo di sola lettura

  • rileva solo alcuni errori dei supporti flash
  • abbastanza affidabile per i dischi rigidi
  • lento
  • sicuro
  • funziona su supporti di sola lettura (ad es. CD, DVD, BluRay)

Per testare l'integrità di lettura dell'intero dispositivo senza scriverlo, possiamo usare in badblocks(8)questo modo:

sudo badblocks -b 4096 -c 4096 -s /dev/sdc

Questa operazione può richiedere molto tempo, soprattutto se l'unità di archiviazione è effettivamente danneggiata. Se il conteggio degli errori supera lo zero, sapremo che esiste un blocco errato. Possiamo interrompere in modo sicuro l'operazione in qualsiasi momento (anche forzatamente come in caso di mancanza di corrente), se non siamo interessati alla quantità esatta (e forse alla posizione) di blocchi danneggiati. È possibile interrompere automaticamente in caso di errore con l'opzione -e 1.

Nota per un uso avanzato: se vogliamo riutilizzare l'output per e2fsck, dobbiamo impostare la dimensione del blocco ( -b) su quella del file system contenuto. Possiamo anche modificare la quantità di dati ( -c, in blocchi) testati contemporaneamente per migliorare la produttività; 16 MiB dovrebbe andare bene per la maggior parte dei dispositivi.

Controllo lettura / scrittura non distruttivo

  • molto approfondito
  • più lento
  • abbastanza sicuro (salvo un'interruzione di corrente o il panico intermittente del kernel)

A volte, specialmente con i supporti flash, si verifica un errore solo quando si tenta di scrivere. (Questo non rileverà in modo affidabile supporti (flash), che pubblicizzano dimensioni più grandi di quelle che hanno effettivamente; utilizzare invece Fight Flash Fraud .)

  • MAI usarlo su un disco con file system montato ! badblockssi rifiuta di operare su quelli comunque, a meno che non lo forziate.

  • Non interrompere questa operazione con forza ! Ctrl+ C(SIGINT / SIGTERM) e in attesa di una chiusura anticipata graziosa è ok, ma killall -9 badblocks(SIGKILL) non lo è. In caso di terminazione forzata badblocksnon è possibile ripristinare il contenuto originale dell'intervallo di blocchi attualmente testato e lo lascerà sovrascritto con dati spazzatura e possibilmente corrompere il file system.

Per utilizzare controlli di lettura / scrittura non distruttivi, aggiungere l' -nopzione al badblockscomando sopra .

Controllo distruttivo in lettura e scrittura

  • molto approfondito
  • Più lentamente
  • CANCELLA TUTTI I DATI SULL'UNITÀ

Come sopra, ma senza ripristinare il contenuto dell'unità precedente dopo aver eseguito il test di scrittura, quindi è un po 'più veloce. Poiché i dati vengono comunque cancellati, la chiusura forzata rimane senza conseguenze (aggiuntive) negative.

Per usare controlli distruttivi in ​​lettura e scrittura, aggiungi l' -wopzione al badblockscomando sopra .


43

fsck - controlla e ripara un file system Linux. Invocalo usando

fsck /dev/sda1

dove / dev / sda1 è l'unità che si desidera controllare. Vedi 'man fsck' per maggiori dettagli.

C'è anche il comando 'badblocks' che controlla un dispositivo per, hai indovinato, blocchi danneggiati.

L'unità deve essere smontata quando selezionata, quindi per controllare la partizione di root è necessario creare un file 'forcefsck' nella radice della partizione e riavviare. Il dispositivo verrà verificato al successivo avvio:

sudo touch /forcefsck
sudo reboot

In alternativa, è possibile eseguire l'avvio da un Live CD ed eseguire il controllo da lì.


Grazie, la macchina funziona senza monitor, c'è un modo per accedere all'output del controllo dopo il riavvio?
Guillaume Coté,

Ho creato il file e riavviato, ma è stato davvero rapido e non c'è nulla di nuovo in boot.log.
Guillaume Coté,

fsck fa solo un controllo molto veloce, ho provato l'opzione -c per verificare il blocco difettoso.
Guillaume Coté,

fsck -c ha appena detto: / dev / sda9: Aggiornamento inode blocco errato. Non ho informazioni su quanti nodi danneggiati e quale percentuale del file system rappresentano.
Guillaume Coté,

sudo dumpe2fs -b /dev/sda9. Ma penso che sia meglio se il disco si occupa di settori difettosi, non del filesystem (SMART, badblocks ecc., Vedi il mio post).
organizzare il

20

badblocks

È possibile verificare la presenza di badblock eseguendo il comando

  1. sudo badblocks -nsv /dev/[device-partition] > bad-blocks-resultper un test di lettura-scrittura non distruttivo. Ciò genererà un file chiamato bad-blocks-resultcon i settori danneggiati.
    • -n Utilizza la modalità di lettura / scrittura non distruttiva. Per impostazione predefinita, viene eseguito solo un test di sola lettura non distruttivo.

    • -s Mostra l'avanzamento della scansione scrivendo il completamento percentuale approssimativo degli attuali badblock sul passaggio del disco.

    • -v Modalità dettagliata.

  2. Quindi, è possibile eseguire sudo fsck -t ext3 -l bad-blocks-result /dev/[device-partition]per dire al file system dove si trovano i settori danneggiati e spostare i dati lontano da essi, se possibile.

Puoi trovare ulteriori informazioni a riguardo qui .


1
Per continuare con i badblock in seguito o se hai dimenticato di esportare il settore danneggiato in un file di testo (come me) questa risposta ti aiuterà: superuser.com/a/693000/218025
chelder

posso usare i badblock per controllare la mia partizione di Windows? O potrebbe in qualche modo danneggiarlo?
Privato

1
@Privato Se hai una nuova domanda, utilizza il link "Poni una domanda" in alto.
Giovanni,

Il fsckcomando ha esito negativo con i btrfsfile system.
Luís de Sousa,

20

smartctl

Smartctl IMO è uno strumento migliore. Probabilmente devi installarlo prima

sudo apt-get install smartmontools 

Poi

sudo smartctl -a /dev/sda | less

per stampare dati sull'integrità dell'unità, attributi e risultati dei test disponibili. Per uscire di meno, digitare q. In alternativa

sudo smartctl -H /dev/sda

per stampare solo i dati sanitari.

Per iniziare un nuovo autotest breve (alcuni minuti) o lungo (fino a molte ore) in background:

sudo smartctl -t [short|long]

GSsmartControl ( home page ) e Gnome Disks sono front-end grafici se preferisci.

Guarda anche


5
Ottima soluzione, se il dispositivo supporta SMART. Molte unità flash rimovibili (economiche) e dischi rigidi molto vecchi no.
David Foerster,

Inizialmente ero sconcertato quando smartctlriportato: "Unknown USB bridge", "Per favore specifica il tipo di dispositivo con l'opzione -d". Ho trovato i dati di cui avevo bisogno su: smartmontools.org/wiki/Supported_USB-Devices .
nobar

10

F3 (Fight Flash Fraud) è un'altra opzione che dovrebbe inoltre rilevare unità flash false (unità flash la cui capacità effettiva è una frazione della capacità pubblicizzata):

  1. Installa F3

    sudo apt install f3
    
  2. Inserisci il tuo disco

  3. Scrivi i dati di test nello spazio libero sull'unità (controlla dove è montata l'unità lsblk)

    f3write /media/$USER/D871-DD7C/
    
  4. Leggi i dati del test

    f3read /media/$USER/D871-DD7C/
    

Riferimento:

Badblocks funziona bene ma non è progettato per rilevare unità flash false e potrebbe non segnalare alcun errore per esse .


badblockscon -wo con i fscksettori contrassegnati come danneggiati / danneggiati in modo che non vengano utilizzati. f3 può restituire qualcosa del genere Corrupted: 16.01 MB (32784 sectors), ma li contrassegna come settori danneggiati? O abbiamo ancora bisogno di blocchi per questo? Sto cercando condumpe2fs -b e sembra id non segna.
Pablo A

4

Puoi testare la lettura dell'intero disco, mostrando al contempo un indicatore di avanzamento:

time sudo pv /dev/sdc >/dev/null

Alcuni problemi del disco si manifesterebbero come errori di I / O segnalati. Questo è un po 'più bello che a ddcausa dell'indicatore di avanzamento e perché l'interfaccia della riga di comando è un po' più standard e un po 'meno incline all'errore . Si noti che pvè sostanzialmente e la versione avanzata di cat. Potrebbe non essere installato per impostazione predefinita, ma può essere installato con sudo apt-get install pv.

Un approccio simile è quello di leggere il disco con uno dei numerosi strumenti disponibili che sono specificamente consapevoli degli errori di I / O del disco e hanno la funzione di "tentare di salvare i dati". Cerca ddrescuenel gestore pacchetti.


Ciò non rileverà i problemi che compaiono solo durante l'accesso in scrittura e non segnalerà la regione interessata del supporto di memorizzazione che si dovrebbe risolvere o aggirare il problema. dd count=1è anche piuttosto veloce a meno che il supporto di memorizzazione non sia completamente rotto (o non supportato).
David Foerster,

Vedi anche:ddrescueview
nobar

Poiché GNU Coreutils 8.24+ ddha un indicatore di progresso con status=progress.
Pablo A

1

Se si dispone di una partizione che NON È possibile perdere i dati, attenersi alla seguente procedura

  1. Determinare quale partizione si desidera controllare per settore danneggiato utilizzando il

$fdisk -l commnd

Supponiamo che la partizione da controllare sia chiamata / dev / sdPTC (partizione da controllare) e che tu abbia un'altra partizione per memorizzare i risultati montati su / scan / resultPath / cartella

2. Quindi è possibile eseguire questo comando

$sudo badblocks -v /dev/sdPTC > /scan/resultPath/badsectors.txt

che determinerà quali sono i blocchi danneggiati del dispositivo dato e li memorizzerà su un file chiamato badsectors.txt

  1. Ora puoi usare il fsckcomando per dire a Ubuntu di non usare i settori danneggiati menzionati nel file badsectors.txt.

$sudo fsck -l /scan_result/badsectors.txt /dev/sda

In questo modo la vita del disco fisso aumenta leggermente fino a quando non ne ottieni uno nuovo per la sostituzione.


Se si dispone di una partizione completa che si desidera verificare la presenza di settori fisici danneggiati e È POSSIBILE AFFERMARE TUTTI I DATI su quella partizione o è VUOTO, attenersi alla seguente procedura

  1. $sudo apt-get install gnome-disk-utility

  2. $sudo gnome-disks

  3. Controllare e ricontrollare che non vi siano dati importanti su quella partizione

  4. Usando gnome-disksDELETE / REMOVE la partizione a mano usando il segno "-"

  5. Utilizzando gnome-disksCREATE una nuova partizione e selezionare l'opzione "slow" che controllerà la presenza di errori nello spazio indicato

inserisci qui la descrizione dell'immagine


Importa quale versione di Ubuntu è? Gestisce bionic beaveri controlli del disco in modo diverso?
Gabriel Fair,

Non ho provato questo processo su quella versione.
Mauricio Gracia Gutierrez,
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.