Home > Comandi Console, Dischi, File System, Guide, Linux, Partizioni, Sistema, Ubuntu > Montare una partizione con superblocco non valido

Montare una partizione con superblocco non valido

11 luglio 2009

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.

  1. perfab
    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?

  2. perfab
    08 dicembre 2009 alle 12:37

    sono (disperato) su LQH🙂

  3. 13 dicembre 2009 alle 0:10

    come ben sai… risolto; grazie!!

    • 13 dicembre 2009 alle 0:14

      gia`, ti e` andata bene

  4. iuber
    09 aprile 2010 alle 15:41

    Ciao, io ho lo stesso problema riscontrato da perfab..ovvero
    ho usato il comando “sudo dumpe2fs /dev/sda5 | less” e ottengo la segeuente risposta: “bad magic number in super-block durante l’apertura di /dev/sda5 impossibile trovare un valido superblocco per il filesystem”

    come posso fare? ti prego aiutami xkè su quella partizione ho dei dati importanti…appunti della tesi!!!

    grz mille!

    • 09 aprile 2010 alle 16:05

      con che file system è formattata quella partizione?

  5. luca
    23 gennaio 2012 alle 17:34

    Ciao, non ho un superblocco di backup valido, che posso fare?

    luca@urano:~$ mount
    /dev/sda1 on / type ext2 (rw,noatime,errors=remount-ro)
    proc on /proc type proc (rw)
    none on /sys type sysfs (rw,noexec,nosuid,nodev)
    none on /sys/fs/fuse/connections type fusectl (rw)
    none on /sys/kernel/debug type debugfs (rw)
    none on /sys/kernel/security type securityfs (rw)
    none on /dev type devtmpfs (rw,mode=0755)
    none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
    none on /dev/shm type tmpfs (rw,nosuid,nodev)
    tmpfs on /tmp type tmpfs (rw,noatime)
    tmpfs on /var/run type tmpfs (rw)
    tmpfs on /var/lock type tmpfs (rw)
    none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
    tmpfs on /var/tmp type tmpfs (rw,noatime)
    tmpfs on /var/log type tmpfs (rw)
    /dev/sdb1 on /dati type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)

    luca@urano:~$ sudo dumpe2fs /dev/sdb1 | less
    Impossibile trovare un valido superblocco per il filesystem.

    NB: Ubuntu è su CF ma il problema è su un disco esterno USB ossia /dev/sdb1.

    • 23 gennaio 2012 alle 22:51

      ciao

      questa guida riguarda partizioni ext e la tua e` una partizione ntfs.
      devi ripararla da windows, non esiste modo affidabile di riparare le partizioni ntfs da linux.

  6. luca
    23 gennaio 2012 alle 23:03

    Ciao muflone, hai perfettamente ragione.
    Avevo dimenticato di aver creato una partizione ntfs per poterla usare in un secondo tempo su un pc winzozzz…. e quindi credevo che fosse ext2. Stavo diventando pazzo per una dimenticanza. E’ ovvio che dumpe2fs non trovasse il superblocco valido. Ho poi girato il web e ho trovato una utile comando che non conoscevo e che posto:

    luca@urano:~$ sudo blkid
    /dev/sda1: UUID=”8675e7ba-6f6c-400d-8589-393c2a2ba195″ TYPE=”ext2″
    /dev/sdb1: LABEL=”usb-500gb” UUID=”24E68072576062D2″ TYPE=”ntfs”

    la terza riga conferma il tipo di file system: ntfs

    Ho poi concluso che non è possibile una verifica sul pinguino ma devo rispolverare un so winzozz. Azz!

    Comunque grazie mille. Luca.

  1. No trackbacks yet.
I commenti sono chiusi.
%d blogger cliccano Mi Piace per questo: