Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Howto] Data Recovery su Partizioni Rovinate o Illeggibili
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2963
Location: Milano, Italy

PostPosted: Fri Dec 02, 2005 12:56 pm    Post subject: [Howto] Data Recovery su Partizioni Rovinate o Illeggibili Reply with quote

In questo howto si tratterà del come creare copie di partizioni danneggiate, per poi di recuperare i dati in esse contenute. Effettuare operazioni di ripristino dati su partizioni già danneggiate non è mai una buona idea in quanto si modifica l'originale con tutti i dati sopra e, se il danno è fisico, si rischia di peggiorar ancora di più la situazione.

Le informazioni qui contenute sono frutto della mia personale esperienza. Non assicuro che quanto ho fatto io possa esser utile anche a voi a recuperare i dati presenti sul vostro disco. Le procedure qui di seguito riportate possono arrecare MORTE E DISTRUZIONE a voi ai vostri dati e al vostro hardware. NON MI ASSUMO ALCUNA RESPONSABILITA' in caso di danni. Se non vi sentite all'altezza, NON FATELO. Se vi trovate a legger questo post, e non è per puro interesse intellettuale, siate consci che il cestino è la prossima fermata. Se decidete di seguire questo howto, leggetelo tutto almeno un paio di volte prima di cominciare a lavorare sul vostro disco ed assicuratevi di aver compresi TUTTI I PASSAGGI

Bene dopo queste piccole formalità, cominciamo. Bisturi...

Prefazione

So come vi sentite, avete paura, dei dati a cui non riuscite più ad accedere non avete backup e sono dannatamente importanti, sono frutto del vostro lavoro e della vostra fatica.

La prima cosa che dovete fare e respirare e stare calmi. L'impulsività non ha mai portato a buoni risultati. Innanzitutto vi anticipo che questa procedura sarà lunga. almeno 24h.

Prima di cominciare qualsiasi operazione di recupero dei dati, vi suggerisco di lasciare spento, staccato dalla corrente, il disco contenente la partizione non più leggibile. Chiamatela irrazionalità chiamatela superstizione ma 24h di riposo spesso hanno fatto la differenza. Lasciarlo collegato alla corrente mantiene il disco in rotazione, il funzionamento genera calore e il calore non è salutare in queste situazioni delicate.

Respirate e leggete tutto il documento. E' molto probabile che recupererete tutti ivostri dati. Ridate corrente al disco solo quando saprete esattamente come muovervi. Dovrete esser veloci e precisi come chirurghi.

Obiettivo

Recuperare tutto il FS contenuto sulla partizione danneggiata, per poi provvedere alla correzione degli errori presenti (argomento non trattato in questo howto) e ritornare così ad accedere ai nostri dati. Non è mai saggio lavorare sui dati originali, se si devono effetturare operazioni di ripristino e/o correzione del filesystem.

Errori

Gli errori di lettura su una partizione possono esser causati da danni solo al filesystem o anche a livello hardware.

Se il danno è solo a livello di FS, possiamo tranquillamente usare le altre partizioni per lavorare ed eventualmente far partire altri OS.

Se invece il danno a livello logico [filesystem] è generato da un problema a monte, a livello HW [ badblocks o $altri_eventi_traumatici ], continuare a lavorare sullo stesso disco, anche solo con altre partizioni, non farà altro che ridurre la possibilità di recupero dei dati.

Come distinguere che tipo di danno è? Usate gli smartmontools!

Strumenti

Il tool che farà al caso nostro è dd_rhelp. dd_rhelp non fà altro che migliorare il buon lavoro di dd_rescue che non è altro che dd orientato al recupero dei dischi (che adorabile digressione) :-D

dd, come tutti saprete, permette di leggere sequenzialmente bit a bit il disco, non tenendo in considerazione ciò che sta ai livelli superiori, ossia filesystem e dati ivi contenuti. Questo ci permette di andare a leggere e copiare altrove tutti e soli i blocchi sani di un filesystem con alcuni blocchi non sono più leggibili perchè danneggiati o $altro_evento_tragico.

dd non fa altro che ricevere come informazioni da dove leggere, dove scrivere, eventualmente quanti blocchi leggere alla volta e stop. Ora capite bene che il tempo impiegato da dd a leggere 1e scrivere 1 blocco alla volta è molto. Se anche impostassimo un numero maggiore di blocchi letti alla volta, il rischio è che se noi leggiamo 5 blocchi alla volta ed il blocco danneggiato è uno solo, ne scartiamo 4 buoni. L'ideale sarebbe quello di avere un meccanismo dinamico che legge molti blocchi alla volta, ma quando incontra un errore, riduce la finestra di lettura e riprova, così da assicurarci la lettura di TUTTI i blocchi sani presenti sul disco.

dd_rescue fà proprio questo. ma in caso di errore passa a leggere 512byte alla volta. Una caratteristica molto utile di dd_rescue è che il programma tiene un log dei blocchi salvati e questo permette di interrompere le operazioni di recupero e di riprenderemo sucessivaamente, cercando di leggere tutti e soli i dati non già letti. Questa caratteristica è utile anche quando abbiamo 2 copie corrotte dello stesso file [dd_rescue accetta come fonte sia device a blocchi (partizioni ad esempio) sia file]. Eseguendo dd_rescue su entrambi e dandogli come output il medesimo file, ci sono buone probabilità di ottenere la copia completa del file originale. dd_rescue di default legge 65k alla volta, ma in caso di errore passa a leggere 512byte [l'unità minima di allocazione su un file system] alla volta. Il problema di questo comportamento è che dd_rescue prova e riprova a leggere il settore danneggiato, consumando un sacco di tempo.
Una soluzione potrebbe esser quella di copiare prima tutti i dati sani e poi spender tempo su i blocchi rovinati.

E questo è esattamente il comportamento di dd_rhelp, che altro non è che uno leggerissimo programma che si appoggia a dd_rescue e ci permette di avere una prima copia con il dati immediatamente leggibili in tempi più rapidi.

LiveCD

L'ideale compagno di situazioni come queste è un buon liveCD con tutti i tools del caso. Esistono dei liveCD pensati proprio per questi casi; essi ad es. non montano in auomatico i dischi [per preservarne l'integrità] e forniscono raccolte di tools specifici.

Io mi son trovato molto bene a lavorare con R.I.P. (Recovery Is Possible) in quanto integra sia dd_rescue che dd_rhelp ed offre alcuni utili script.

Spazio

La copia della partizione che creeremo andrà a finire dentro ad un file. Pertando assicuriamoci di avere una partizione almeno un po' + grande della partizione che stiamo recuperando.

Il salvataggio su file della partizione danneggiata è indubbiamente molto flessibile in quanto ci permette di spostare il file contenente il FS ivi contenuto dove più ci aggrada [meglio su una partizione con FS XFS che gestisce al meglio file grossi], correggere eventuali errori e ripristinare i dati contenuti su un'altra partizione, eventualmente + grande o con un altro filesystem.

Ovviamente vale quanto detto prima, se si tratta di un errore solo SW ben venga l'uso del medesimo disco. In caso di errori fisici, è tassativo usare un altro disco.

Let's go!

Adesso si passa alla pratica: bootate con il vostro liveCD ed innanzitutto attivate il dma su tutti i dischi che saranno coinvolti nelle operazioni di ripristino

Code:
hdparm -d1 /dev/$device(s)


Adesso create la directory sulla quale monterete la partizione sulla quale verrà salvato il file con la partizione recuperata. Per comodità la chiameremo con lo stesso nome della partizione.

Code:
mkdir /mnt/$partizione_tampone


Adesso montate la partizione sulla quale verrà salvato il file con la partizione recuperata sul punto di mount appena creato.

Code:
mount /dev/$partizione_tampone /mnt/$partizione_tampone


Adesso fate un respiro profondo e digitate

Code:
dd_rhelp /dev/$partizione_rovinata /mnt/$partizione_tampone/$nome_file_partizione_recuperata


fatto ciò il programma inizierà la copia e vi mostrerà tutte le informazioni circa i dati letti, quelli scritti e gli eventuali blocchi che non è riuscito a copiare.

Il tempo impigato sarà variabile a seconda della velocità dei dischi, della dimensione della partizione e del numero di errori riscontrati.

Correzione degli errori

Adesso che avete il vostro file-filesystem non ci rimane che correggere gli errori presenti sul disco, riempire i buchi lasciati dai settori danneggiati e incrociare le dita.

Per tutte queste belle cose vi rimando a questa pagina che tratta approfonditamente dell'argomento, ricordandovi che dovrete passare, quando si parla del FS rovinato, l'indirizzo al vostro file rescue.

Infine se vorrete poi controllare che le operazioni di ripristino son andate a buon fine potrete montare la partizione così ottenuta usando loop:

Code:
mkdir /mnt/rescue
mount -o loop /mnt/$partizione_tampone/$nome_file_partizione_recuperata
/mnt/rescue


Sempre montando tramite loop potrete copiare i vostri file recuperati su altre partizioni con altri FS.

Quanto vi ho illustrato è solo il primo passo per il recupero dei vostri dati, ma è anche il più importante. Spesso sono pochi byte in più che fan la differenza tra il recuperare o meno dei file.

A seconda dell'entità del danno, dell'entropia universale d'improbabilità e dell'influenza della costante cosmica gattoimburrato potrete avere un successo completo :D , un totale fiasco :twisted: o una via di mezzo :wink:


che lo sforzo sia con voi


.:deadhead:.
_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)


Last edited by .:deadhead:. on Sat Mar 24, 2007 8:35 am; edited 2 times in total
Back to top
View user's profile Send private message
TeoBì
Apprentice
Apprentice


Joined: 31 May 2004
Posts: 150

PostPosted: Fri Dec 02, 2005 2:44 pm    Post subject: Reply with quote

Non mi è chiaro una cosa,
adesso stò effettuando quanto scritto sulla guida e ho lanciato il dd_rhelp che salvando tutta la partizione in un file.
Una volta finito il tutto dovrei montare la partizione con il comando

Code:

mount -o loop /mnt/$partizione_tampone/$nome_file_partizione_recuperata
/mnt/rescue


Il problema che mi pongo ora è:
una volta che provo a montare il file, con la partizione recuperata, mi da un errore che non trova il super-blocco o che cmp devo fare prima un rebult-tree, che tool devo usare? reiserfsck mi sembra che funzioni solo con partizioni fisiche, cioè gli puoi passare solo /dev//hd* e non un file, come nel caso in cui sono io. Mi stò sbagliando io oppure c'è un altro tool che fa queste correzioni?

Grazie mille ancora per il tuo aiuto e per l'aiuto di tutto il forum in generale :)
Back to top
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2963
Location: Milano, Italy

PostPosted: Fri Dec 02, 2005 4:01 pm    Post subject: Reply with quote

Prova a dare uno sguardo a tutta questa pagina sul wiki, in particolare al link in fondo

Per quanto riguarda i tools di recupero/ripristino passagli tranquillamente come argomento il file contenente il FS
_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)
Back to top
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Fri Dec 02, 2005 4:21 pm    Post subject: Reply with quote

@.:deadhead:.
aggiungo che, qualora non si disponesse dello spazio necessario, è possibile fare la copia via rete usando ssh
Code:
ssh host "dd if=/dev/hda" > /dirLocale/partizione

suppongo che valga lo stesso per dd_rescue, eventualmente specificando /dev/stdout come file in uscita
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Sat Dec 03, 2005 12:07 am    Post subject: Reply with quote

Aggiunto al topic "Faq, Howto, Tips e Documentazione" sezione howto :wink:
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
unz
l33t
l33t


Joined: 28 Jul 2004
Posts: 819
Location: Roma, Italia

PostPosted: Sat Dec 03, 2005 10:45 am    Post subject: Reply with quote

mo libero spazio e vedo se riesco a recuperare un mio vecchio hd su cui ho pianto molto ... incrocio le dita ;)
_________________
Ma che c'hai là? Sulla spalla!!!! http://lascimmia.it/
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum