fsck: opzioni per il controllo del disco più completo


12

Ho un disco con un problema noto (lo so perché dd gag quando provo a clonarlo). Ma quando avvio con un CD live ed eseguo fsck sulla partizione non montata, ottengo questo:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

un millisecondo dopo. È difficile credere che sia stato estratto l'intero disco rigido in un ms.

Inoltre non sono sicuro se dovrei essere fsck'ing sdf1 o l'intero disco fisico sdf. Quando provo l'intero disco:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Il che non capisco perché nessuna delle partizioni sembra essere montata (ho appena avviato da un CD live ed eseguito il comando).

Quindi la mia domanda di base è: come posso ottenere fsck (o uno strumento diverso che potrebbe funzionare meglio) per spendere più di un millisecondo ad analizzare il mio disco problematico?

Risposte:


14

Prima di tutto, hai ragione sull'eseguire fsck sulla partizione: fsck funziona solo su filesystem, non su interi dischi. È possibile ottenere un elenco di tutte le partizioni sul disco con fdisk -l /dev/sdd.

Il tuo tipo di filesystem è probabilmente ext3 (il valore predefinito nella maggior parte delle distribuzioni Linux), il che significa che di solito passerà un fsck finché il suo diario è pulito. fsck -fforzerà, come detto sopra, un controllo completo.

Tuttavia, se hai errori di lettura sul disco, nessuna quantità di fsck aiuterà dd, poiché a dd non importa davvero il contenuto del disco.

Per ottenere dd per leggere il disco e continuare su errori di lettura, utilizzare dd conv=noerror,sync, che continuerà su errori di lettura e aggiungere byte null a qualsiasi blocco quando si verifica un errore di lettura.

Dopo aver completato il backup, è necessario eseguire fsck -fil clone per ripristinarlo.

Un altro suggerimento: se si esegue il backup della partizione in un file, è possibile montarlo in loopback mount -o loop filename.ext3 /mountpoint. Inoltre, supponiamo che tu stia clonando una partizione 200G su un'unità 500G, quindi puoi eseguire resize2fs /dev/sdx1(dove sdx è la tua nuova unità, partizionata con una singola partizione 500G) e il filesystem verrà ridimensionato a 500G.

Infine, se il disco è in una forma tale che ti dà errori di lettura, ti consiglierei di evitare di spegnere e riaccendere il disco fino al termine del recupero dei dati. In alcune modalità di errore, il disco a un certo punto semplicemente non gira più o non viene riconosciuto dal sistema operativo, e a quel punto ottenere dati dall'unità diventa piuttosto costoso.


Ho provato "dd conv = noerror, sync", ma il disco clonato risultante non era avviabile. Il che è frustrante, perché il disco di avvio funziona bene, fscks bene, ma non riesco a clonarlo su un altro disco perché il disco ha 1 blocco danneggiato (dove apparentemente non ci sono dati). Mi sembra di essere bloccato ...
Fred Hamilton,

Non dimenticare che potrebbero esserci altri motivi per cui il disco non è stato avviato (diversa geometria del disco e problemi di MBR / boot loader). Se prima puoi confermare che il filesystem sul nuovo disco è OK, puoi avviare il sistema usando la modalità di ripristino dal CD di installazione, aggiornando il bootloader di GRUB ecc. eseguire prima fsck -f / dev / sdx1, quindi provare a montare il filesystem con mount / dev / sdx1 / mnt - sostituire x con la lettera di unità appropriata.
Kristian,

Suggerimento eccellente, ma quando ho eseguito fsck -f sulla partizione clonata ho avuto letteralmente centinaia di errori (blocchi illegali in inode, bit di compressione impostati su un filesystem senza supporto di compressione, blocchi di attributi estesi non validi, ecc.) Prima di concedere che il dd il clone è stato completamente cancellato ... Non so cosa fare dopo ... Suppongo che proverò a copiare tutti i file su una partizione pulita ... Grazie comunque.
Fred Hamilton,

4
È meglio usare ddrescue (o dd_rescue + dd_rhelp) rispetto a dd; è più intelligente nella gestione degli errori, nel riprovare settori che hanno avuto errori. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
freiheit

1
Il controllo del disco più completo (con tutte le correzioni automatizzate se possibile) per la partizione root ext2, ext3 o ext4 viene eseguito come segue: (1) avvio dal supporto di ripristino (la partizione root deve essere smontata), (2) esecuzione e2fsck -f -cc -D -p. Ciò fa un controllo forzato con un controllo di lettura / scrittura non distruttivo per i media e ripara tutti i problemi riscontrati che possono essere risolti in modo sicuro. Potrebbero essere necessari alcuni giorni per un HDD da 2 TB ...
Mikko Rantalainen,

10

Questo potrebbe non essere rilevante nel tuo caso, ma ho pensato di menzionarlo comunque:

Per un controllo del disco di livello inferiore, è possibile utilizzare l' badblocksutilità. Passa attraverso un dispositivo e segnala eventuali blocchi danneggiati (ovviamente non può riparare nulla). È utile, almeno, per verificare se un disco è danneggiato fisicamente.

Inoltre, e2fsckpuò essere utilizzato badblocksper evitare che blocchi danneggiati vengano utilizzati da un filesystem. Dal e2fsckmanuale:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.

Nota anche fsck_hfs -sla scansione per blocchi danneggiati.
Awiebe,

5

Vuoi che l'opzione -f fsck (Forza il controllo anche se il file system sembra pulito.)

È necessario eseguire fsck in modalità utente singolo. Un modo semplice per farlo senza un avvio cdrom live è riavviare con l'opzione -F.

shutdown -rF now 

Grazie, ma una domanda: se riavvio con l'opzione -F usando un CD live, come fa il CD live a sapere che avrebbe dovuto eseguire il controllo? È un CD, non ha memoria di cui io sia a conoscenza ...
Fred Hamilton,

Non penso che tu debba farlo dal cd live. Basta avviare dal cd live ed eseguire fsck sulla partizione non montata con l'opzione -f (force) inclusa. OPPURE, è possibile riavviare dal disco rigido con shutdown -rF. Questo forzerà un fsck prima che il filesystem sia montato.
Richard Hoskins,

In realtà, farà l'sck in modalità utente singolo. Ho modificato la mia risposta.
Richard Hoskins,

1
La -Fbandiera per shutdownnon è di solito ufficialmente documentata (vedi man shutdowne shutdown --helpnota che non è lì) quindi non puoi fidarti che funzioni. A volte è una no-op. Ufficialmente l'unico metodo per scansionare la partizione di root è l'avvio da un supporto alternativo.
Mikko Rantalainen,
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.