Ho un hard disk morente, presenta numerosi errori ma il principale riguarda l’impossibilità di montare il file system, il mount infatti riporta l’errore:
sudo mount /dev/sdc1 /mnt
mount: tipo fs errato, opzione non valida, superblocco su /dev/sdc1 danneggiato, codepage o programma ausiliario mancante, o altro errore. In alcuni casi si possono trovare informazioni utili in syslog. Provare ad esempio 'dmesg | tail'
Eseguendo il comando suggerito viene riportato un errore di descrittori di gruppo danneggiati:
dmesg | tail
EXT3-fs error (device sdc1): ext3_check_descriptors: Inode bitmap for group 18 not in group (block 1342177280)! EXT3-fs: group descriptors corrupted!
Anche fsck presenta errori similari:
sudo fsck -n /dev/sdc1
fsck 1.41.4 (27-Jan-2009) e2fsck 1.41.4 (27-Jan-2009) fsck.ext3: I descrittori di gruppo sembrano non validi... trying backup blocks...
I descrittori di gruppo si trovano subito dopo il superblocco, quindi sia che si abbia un superblocco non valido sia che descrittori di gruppo non validi è necessario richiamare un altro superblocco all’interno della partizione.
Vediamo come trovare un superblocco di backup, mke2fs ne genera parecchi per le partizioni ext2/3/4 durante la formattazione e vengono regolarmente aggiornati tutti durante le operazioni di scrittura su disco. E’ quindi possibile usare un superblocco di backup per copiare i dati o tentare il ripristino del disco con fsck.
sudo dumpe2fs /dev/sdc1 | less
Filesystem volume name: SATA-USB Last mounted on: <not available> Filesystem UUID: 3695d175-f27e-4dc4-8af8-b0ba58d1eb77 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal resize_inode dir_index filetype sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean with errors Errors behavior: Continue Filesystem OS type: Linux Inode count: 9781248 Block count: 19539048 Reserved block count: 0 Free blocks: 1975302 Free inodes: 9712806 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 1019 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 16384 Inode blocks per group: 512 Filesystem created: Sun Jan 13 14:54:19 2008 Last mount time: Sat Jul 11 08:17:39 2009 Last write time: Sat Jul 11 10:28:31 2009 Mount count: 0 Maximum mount count: 29 Last checked: Sat Jul 11 08:54:14 2009 Check interval: 1342177280 (517 months, 3 weeks, 3 days, 11:01:20) Next check after: Thu Dec 16 12:27:18 1915 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: tea Directory Hash Seed: 95a0981e-b770-4f85-a588-0792ffe600fa Journal backup: inode blocks Journal size: 128M
La prima parte del risultato mostrerà le informazioni sul file system, la principale interessante per questo scopo sarà block size, in questo esempio a 4096, indica la dimensione in bytes di ogni blocco.
Gruppo 0: (Blocchi 0-32767) superblocco Primario a 0, Descrittori di gruppo a 1-5 Reserved GDT blocks at 6-1024 Mappa dei bit di blocco a 1025 (+1025), mappa dei bit inode a 1026 (+1026) Tavola degli inode a 1027-1538 (+1027) 0 free blocks, 16373 free inodes, 2 directories Gruppo 1: (Blocchi 32768-65535) superblocco Backup a 32768, Descrittori di gruppo a 32769-32773 Reserved GDT blocks at 32774-33792 Mappa dei bit di blocco a 33793 (+1025), mappa dei bit inode a 33794 (+1026) Tavola degli inode a 33795-34306 (+1027) 2 free blocks, 16217 free inodes, 3 directories [...]
Segue immediatamente dopo la definizione del superblocco primario, il primo dei gruppi, naturalmente è quello che risulta danneggiato per cui scorriamo oltre.
Già dal gruppo 1 è presente un superblocco di backup e scorrendo ne seguono altri. Le informazioni riportate indicano che il superblocco di backup si trova al blocco 32768.
Ottenuto ciò sarà quindi possibile montare il file system utilizzando un qualsiasi superblocco di backup.
Prima di procedere è però importante ricordare che mount utilizza blocchi da 1024 bytes, dumpe2fs invece nell’esempio di sopra indicava un blocco di 4096 bytes. Bisogna quindi convertire il blocco da 4k a 1k semplicemente moltiplicando il numero del blocco per 4. In linea generale:
nuovo superblocco = superblocco di backup * block size / 1024
Per montare questa partizione utilizzeremo quindi:
sudo mount /dev/sdc1 /mnt -o sb=131072,ro
La partizione verrà montata su /mnt e sarà possibile copiare i dati interessati e riformattare il disco o sostituirlo in caso di guasto permanente.
Questa operazione non ripara il disco, gli errori saranno sempre lì ma consentirà di accedere ai dati per effettuare una copia di sicurezza. Il disco sarà montato in sola lettura per prevenire ulteriori danni al file system già danneggiato.
Se venisse invece riportato il medesimo errore basterà cercare nell’elenco un altro superblocco di backup e calcolare la posizione con la formula di sopra.
Inoltre su un disco danneggiato non tutti i superblocchi possono riportare le stesse informazioni, se dovessero mancare dei files smontare la partizione e scegliere un altro superblocco, rifacendo l’operazione da capo.
Se si volesse invece tentare la riparazione del volume sarà possibile usare un superblocco di backup con:
sudo e2fsck -b 32768 /dev/sdc1
Non è necessario applicare la moltiplicazione per il calcolo del nuovo superblocco, andrà indicato il parametro restituito da dumpe2fs.
Tutti gli errori saranno mostrati e verrà richiesta la correzione di ciascuno. E’ possibile utilizzare qualsiasi opzione di e2fsck ad esempio -y per far rispondere automaticamente Sì a qualsiasi richiesta di fsck.




08 Dicembre 2009 alle 11:18 |
ciao Muflone, e in questo caso, invece? mi attacco vero?
dumpe2fs 1.41.9 (22-Aug-2009)
dumpe2fs: Nessun file o directory durante l’apertura di /dev/sdc7
Impossibile trovare un valido superblocco per il filesystem.
(END)
08 Dicembre 2009 alle 12:33 |
li` ti sta dicendo che non esiste /dev/sdc7
sicuro sia quello il device?
08 Dicembre 2009 alle 12:37 |
sono (disperato) su LQH