Recupero SD-Card corrotta

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Recupero SD-Card corrotta

Messaggio da joe »

Sto cercando di recuperare in qualche modo il contenuto di una scheda SD che a quanto pare ha subito uno shock non meglio precisato.

Avevo già introdotto la questione in altro topic in cui però avevo messo troppa carne al fuoco e la discussione si era indirizzata più su altri aspetti.
Vi metto comunque qui il link al post in cui trattavo la questione relativa alla scheda sd

Praticamente in questa schedina della capacità di 16 GB vi sono due partizioni, una linux (formattata in ext4, se non ricordo male anche senza journal) e l'altra di swap.

Codice: Seleziona tutto

# fdisk -l /dev/sdd

Disk /dev/sdd: 15.5 GB, 15548284928 bytes
255 testine, 63 settori/tracce, 1890 cilindri, totale 30367744 settori
Unità = sectors di 1 * 512 = 512 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificativo disco: 0x00000000

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sdd1              63    28306529    14153233+  83  Linux
/dev/sdd2        28306530    30362849     1028160   82  Linux swap
La schedina veniva usata come espansione di storage su un netbook (v.di topic del link sopra).
Nella partizione sdd1 veniva montata la /home del sistema.

Qualcosa ha messo sottosopra tutto, purtroppo però non sono in grado di dire cosa sia stato:
- un blackout forse
- oppure potrebbe essersi banalmente rotta la scheda SD
- magari a causa delle eccessive scritture e riscritture nella swap, chissà

Però in qualche modo funziona ancora, cioè fdisk riesce a leggerne almeno la tabella delle partizioni tanto per dire.

Sono partito a fare un fsck sulla partizione linux, ext4, però ottengo:

Codice: Seleziona tutto

Error storing directory block info (inode=131708, block=0, num=61341366): Memory allocation failed
e2fsck: aborted
E sinceramente non so come risolvere...
Allora intanto mi sono detto, facciamo una copia a basso livello della partizione con dd, tanto per lavorare sulla copia invece che direttamente sul device da recuperare... purtroppo però il tutto senza successo:

Codice: Seleziona tutto

root@darkstar:~# dd if=/dev/sdd1 of=/mnt/tmp/sdcard-corrupted bs=512
dd: lettura di "/dev/sdd1": Errore di input/output
16640+0 record dentro
16640+0 record fuori
8519680 byte (8,5 MB) copiati, 17,029 s, 500 kB/s
Sembra saltar fuori un errore input/oputput e mi copia non più di "8 mega emmezzo".

Vi chiedo banalmente:

1- cosa può aver causato questo sgarruppamento? Anche per capire se fosse eventualmente causato da qualche impostazione e quindi evitabile...

2- come recuperare il contenuto della scheda?
Non vi erano dati importantissimi ma più che altro configurazioni varie che potrebbero tornare utili per risistemare il sistema.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Recupero SD-Card corrotta

Messaggio da joe »

Aggiorno rapidamente la situazione:
Ho letto questo articolo e che oltre ad aggiungere l'opzione "noerror" disponibile per "dd", consiglia l'utilizzo del tool ddc3d perchè maggiormente efficiente da come ho capito.
Ecco cosa ne esce:

Codice: Seleziona tutto

:~# dc3dd if=/dev/sdd1 of=/mnt/tmp/sdcard-corrupted/sdcard-corrupted.dd conv=noerror,sync bs=32k iflag=direct  progress=on hash=md5,sha1 log=/mnt/tmp/log.txt vf=/dev/sdd1 verifylog=/mnt/tmp/sdcard-corrupted/log_verifica.txt
warning: sector size not probed, assuming 512
dc3dd 6.12.3 started at 2015-03-07 01:18:09 +0100
command line: dc3dd if=/dev/sdd1 of=/mnt/tmp/sdcard-corrupted/sdcard-corrupted.dd conv=noerror,sync bs=32k iflag=direct progress=on hash=md5,sha1 log=/mnt/tmp/log.txt vf=/dev/sdd1 verifylog=/mnt/tmp/sdcard-corrupted/log_verifica.txt
compiled options: DEFAULT_BLOCKSIZE=32768
sector size: 512 (assumed)
trying to recover sector 18816                                                                   
dc3dd: reading `/dev/sdd1' at sector 18816: Errore di input/output
trying to recover sector 18879                                                                   
dc3dd: Verify FAILED
A quanto pare ne esce che vi è un settore danneggiato ma purtroppo l'operazione termina con lo stesso errore input output di prima.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Recupero SD-Card corrotta

Messaggio da joe »

È da un po' di tempo, (più di un'ora sicuro...) che ho lanciato ddrescue.
E per ora non s'è ancora inchiodato su nessun errore i/o:

Codice: Seleziona tutto

# ddrescue -d -r3 /dev/sdd /mnt/tmp/sdcard-corrupted/ddrescue.img /mnt/tmp/ddrescue.log


GNU ddrescue 1.16
Press Ctrl-C to interrupt
rescued:     7934 MB,  errsize:   7613 MB,  current rate:      128 B/s
   ipos:   173805 kB,   errors:     170,    average rate:     140 kB/s
   opos:   173805 kB,     time since last successful read:       0 s
Splitting failed blocks...

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Recupero SD-Card corrotta

Messaggio da joe »

Codice: Seleziona tutto

rescued:     8193 MB,  errsize:   7354 MB,  current rate:        0 B/s
   ipos:     6253 MB,   errors:    1465,    average rate:    62774 B/s
   opos:     6253 MB,     time since last successful read:       4 s
Splitting failed blocks...
Ho lasciato girare il tutto durante la notte e ora sta ancora girando e non ha terminato....
Cosa ne pensate? sarà normale?
O è indice dell'impossibilità di recuperare il contenuto della SDcard?
Eventualmente ci sarebbe stata una via più breve secondo voi?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Recupero SD-Card corrotta

Messaggio da joe »

Alla fine ho dovuto interrompere la copia a basso livello, davvero troppo lunga (parliamo di giorni).

Ho tentato di salvare il salvabile montando la SDcard e copiando i dati con cp e con rsync.

Codice: Seleziona tutto

rsync -azvv --exclude=".cache" --exclude=".mozilla" --exclude=".config/chromium" --exclude=".thumbnails" --exclude=".mplayer" /tmp/mnt/ /tmp/sdcard-corrupted/
Alla fine anche qui si pianta un po'.
E alla fine ho dato un'occhiata alla roba che aveva copiato.
E pazienza qualcosa s'è salvato e qualcosa no ma va bene così per il momento.

Ora avrei una domanda.
Tutti gli errori di input/output vari ecc, che ho ottenuto sia durante la copia a basso livello che durante quella con cp e rsync, sono indice inequivocabile di corruzione hardware?

In altre parole SDcard da buttare?

Oppure potrebbero essere dovuti a corruzione del filesystem e quindi si potrebbe pensare di recuperare non i dati ma almeno la sdcard magari rasandola tipo con:

Codice: Seleziona tutto

dd if=/dev/zero of=/dev/sdd
Cosa ne dite?

Oppure potrebbero anche essere

Rispondi