domenica 11 gennaio 2009

Recuperare dati da supporti danneggiati

Per chi ha un attività o gestisce un impresa, l'evento più disastroso che scatena il panico è la sorpresa data dalla perdita dei dati elettronici dai supporti usati per memorizzarli. Mi accorgo di ciò quando entro in ufficio e trovo una moltitudine di chiamate perse al cellulare. Il disastro si verifica solitamente negli orari meno opportuni, quasi sempre nei giorni festivi e spesso quando sono oberato di impegni inderogabili. Solo allora divento indispensabile ed oggetto di suppliche, mai accompagnate dalla promessa di retribuire adeguatamente la mia disponibilità a risolvere la situazione. Stavolta è toccato ad una chiavetta usb, con gli archivi dei clienti di un dentista. Non mi chiedo come mai i dati dei clienti siano memorizzati in un archivio di lavoro su una chiavetta usb invece del PC dello studio dentistico. Accetto l'incarico "agratis" e, dato che non è la mia attività principale ma solo un favore fatto in funzione di un lavoretto che dovrei far fare alla mia arcata dentale superiore, sperando nella disponibilità futura ad un pagamento "in natura" (cambio merce), decido di dare un occhiata al supporto. A volte mi arrivano dei casi veramente disperati, supporti danneggiati a tal punto che il recupero è quasi impossibile. Ecco qui gli strumenti che utilizzo per riportare il sorriso a chi si affida a me, anche se non sempre la fiducia riposta trova una vera soluzione.
Gli strumenti che uso per il recupero dei dati? Sono dei programmi in ambiente GNU-linux. Vediamoli:

dd_rescue
È una variante dell'utility unix “dd”. Estrae i dati dal supporto e trasferisce ciò che è leggibile su un file o su un device a blocchi. Crea un "clone" dei dati con blocchi a zero se non riesce a leggerli dall'origine.

fsck
E' uno strumento di unix per la manutenzione dei filesystem. È composto da una suite di programmi, ciascuno dei quali lavora su uno specifico filesystem: per esempio fsck.ext3 lavora su filesystem ext3, fsck.vfat su FAT16/FAT32, ecc… Verifica la consistenza della struttura del filesystem e risolve gli eventuali problemi. Può lavorare sia su device a blocchi (es. /dev/sdb /dev/hda ecc...) che su file immagine (creati ad es. con dd_rescue).

testdisk
E' un programma di recupero dati interattivo che ricostruisce in modo "semi-automatico" una tavola di partizione danneggiata. Legge i settori iniziali di ciascun cilindro del disco e cerca quelli che potrebbero assomigliare ad una partizione. E' in grado di rilevare in automatico il tipo di filesystem (ne riconosce davvero moltissimi) e le sue dimensioni provando anche a volte di correggere problemi di consistenza.

photorec
L'interfaccia è simile a testdisk. Recupera i files direttamente dall'area dati senza affidarsi al filesystem. È utile quando il filesystem è pesantemente danneggiato e/o non è supportato dagli altri strumenti. Sarebbe da impiegare come ultima spiaggia dato che è in grado di recuperare solo alcuni tipi di file. Ovviamente non può mantenere i nomi originali dei files, per cui ci si potrebbe trovare nella situazione di aprirli uno ad uno per comprendere cosa contengano aiutandosi con l'estensione.

La procedura
Do per scontato che nelle operazioni di recupero si utilizzi uno strumento predisposto a farlo, ovvero un PC con gli strumenti software installati, spazio sufficiente per trasferire i dati da recuperare, eventualmente delle porte ide libere (evito, se posso, gli adattatori usb-ide), collegato ovviamente in rete per scaricare eventuali aggiornamenti.


Controllo il partizionamento del supporto per individuare quali partizioni contiene. Se il device è /dev/sdb:

fdisk -l /dev/sdb

Se l'MBR è corrotta non si può effettuare il mount in sola lettura, altrimenti provo a montare in read-only la partizione in esame (SDB1 per la prima):

mkdir -p /mnt/dati
mount -o ro /dev/sdb1 /mnt/dati

Se il mount non va a buon (MBR è corrotta) o non è leggibile, devo clonare l’intero disco:

ddrescue /dev/sdb /mnt/immagine_chiavetta.img

Con il comando precedente, estraggo tutto il dispositivo con tutte le sue partizioni.

Se dd_rescue va a buon fine senza errori, occorre ripristinare una tavola di partizione corretta:

testdisk /mnt/immagine_chiavetta.img

che esegue una scansione dell’immagine alla ricerca dei possibili punti di inizio delle partizioni. Se esce il messaggio "partition sector don't have the end mask 0xAA55" significa che la tabella delle partizioni è completamente andata (salta al passo photorec direttamente) e difficilmente è possibile ripristinarla a mano (in alcuni casi si può fare).
Se tutto va bene, testdisk ripristina il tutto e si può procedere a salvare la nuova MBR. Quando si lavora con testdisk può essere necessario impostare a mano la geometria del disco CHS Cilindri - testine - settori per traccia: sui dischi vecchi i dati sono riportati sull'etichetta, mentre in quelli più attuali è riportata solo la dimensione in blocchi: in questo caso il firmware del disco usa una geometria fittizia per mappare l’indirizzo LBA dei blocchi: i settori per traccia sono sempre 63 e le testine 255: il numero di cilindri si calcola dividendo la dimensione in blocchi per 16065.

Dopo la ricostruzione della tavola di partizione, si può estrarre l’immagine solo della partizione che ci interessa: Per sapere dove inizia e dove finisce:

sfdisk -d /mnt/spazio/immagine.img

Ci si annota “start” e “size” della partizione: supponendo che i valori siano rispettivamente 63 e 156296322 posso estrarre l’immagine sovrascrivendo quella completa ottenuta in precedenza:

ddrescue -i (numero_inizio)b -s (numero_size) /dev/sdb /mnt/immagine_partizione.img

Si può così tentare un fsck: supponendo un filesystem di tipo FAT:

fsck -t vfat /mnt/immagine_partizione.img

e montare in loopback l’immagine:

mkdir -p /mnt/chiavetta
mount -o loop,ro /mnt/immagine_partizione.img /mnt/chiavetta

Il lavoro è terminato e si può procedere con l'analisi dei dati. Se, come nel mio caso la FAT è completamente andata, l’ultima possibilità consiste nell’uso di photorec:

mkdir -p /mnt/chiavetta/files
cd /mnt/chiavetta/files
photorec /mnt/immagine_partizione.img

Il supporto di origine può essere inutilizzabile o inaffidabile per memorizzarci altri dati. Se si desidera comunque riutilizzarlo, va formattato con il comando:

dd if=/dev/zero of=/dev/sdb bs=1

A meno di spiacevoli sorprese, in molti casi si riesce a recuperare qualcosa, magari non tutto. Possono però capitare dei comportamenti "strani". Con dd possono comparire errori di I/O che interrompono il processo di recupero. Anche dd_rescue può conteggiare errori di lettura. A volte l'errore di I/O è volatile, nel senso che si verifica saltuariamente ed imprevedibilmente in settori diversi. E' comunque indispensabile riuscire a salvare il maggior numero di blocchi (tutti se possibile) altrimenti il tentativo è inutile. A volte l'errore deriva da una chiavetta "consumata", ovvero utilizzata oltre il numero di cicli di scrittura consentiti. In altri casi può essere un problema hardware del circuito di interfaccia alla porta usb che si manifesta solo in particolari condizioni di temperatura. In questi casi essere un pò maghi e conoscere qualche rito sciamanico può aiutare. Alla prossima

P.S. Invertire il 7 con l'8. Ripeto: Invertire il 7 con l'8.

martedì 6 gennaio 2009

Serbatoio sottovuoto (parte 9)

Collaudo ok. Il macchinario per l'aspirazione dell'inchiostro dalle cartucce a spugna è finalmente terminato e funziona alla grande. Dopo aver sperimentato numerosi materiali per creare la tenuta dell'aria attorno alla testina durante l'aspirazione, ho optato per una gomma morbida, recuperata dal materiale di protezione di un tamburo nuovo che avevo tempo fa acquistato per una stampante laser Brother hl700 ora in fase di rottamazione. Tutto il materiale utilizzato è di recupero, a parte il pannello frontale in plexyglass. Per la realizzazione ho utilizzato:
  • un serbatoio trasparente cilindrico con fori per il circuito pneumatico
  • una pompa a palette (220 volts ) per l'aspirazione dell'aria dal serbatoio
  • tre elettrovalvole, una per lo scarico dell'inchiostro esausto, una per creare il vuoto ed una per la fase di aspirazione dell'inchiostro
  • un alimentatore industriale a 12 volts raffreddato ad aria (ventola interna)
  • tre pulsanti illuminati (Verde, rosso e giallo). Quello blu in foto è inutilizzato in quanto rotto.
  • un interruttore manuale che sostituisce il pressostato mal funzionante.
  • un manometro che misura il livello di vuoto nel serbatoio
  • un relè a 12 volts e 2 deviatori per l'azionamento delle elettrovalvole
  • una morsa per cartucce HP (di tipo diverso da quella in foto ma utilizzabile comunque)
  • un tubo di gomma per lo scarico dell'inchiostro esausto, dotato di fascetta metallica stringi tubo
  • cavi elettrici di collegamento intestati a fast-on
  • una morsettiera industriale montata su rail DIN
  • quattro piedini in gomma per sollevare il macchinario dal piano di appoggio
  • tubi per l'aria ed innesti rapidi per i collegamenti della parte pneumatica
  • pannelli in multistrato e compensato assemblati con spine di legno

Per l'azionamento di agisce sull'interruttore manuale che aziona il relè di scambio e si preme il pulsante giallo sino a quando non si raggiunge il vuoto desiderato (-0,8 bar / -9 psi). Si commuta il deviatore manuale in modo da chiudere il condotto per creare il vuoto ed abilitare il circuito pneumatico di aspirazione. Si posiziona la cartuccia nella morsa e si agisce sul pulsante verde per l'aspirazione. Il metodo migliore consiste nel dare dei colpetti (due o tre) in rapida successione al pulsante di aspirazione. In questo modo ho rigenerato un paio di cartucce nere che in precedenza non stampavano su alcuni ugelli. Le cartucce colore sono un pò più critiche. Sono riuscito a rigenerarne solo una su un totale di tre (ulteriori prove sono in corso per verificare a fondo il funzionamento). In linea di principio il tutto funziona e si vede chiaramente scendere l'inchiostro dal condotto di scarico, a dimostrazione che le mie intuizioni iniziali si sono rivelate esatte. Il serbatoio assicura un aspirazione (con cartuccia installata) di circa 10 secondi alla pressione di -9 psi, dipende da quanto si preme la cartuccia nella morsa. Per non creare un aspirazione troppo forte si lascia defluire un pò d'aria dalle fessure attorno la testina o in alternativa premere forte la morsa in modo che l'unica via di "sfogo" sia rappresentata solo dagli ugelli. Importante che ad aspirazione terminata non si formi della schiuma sulla tstina, segno che è fuoriuscita dell'aria dagli ugelli che rendono il lavoro inutile. Ovviamente l'operazione vaeffettuata a cartuccia totalmente piena (al limite della sua capacità massima).

Il galleggiante per il troppo pieno è stato escluso, così come il pressostato. Non escludo in futuro di provvedere ad installare l'elettronica di comando con un microprocessore dedicato. L'utilizzo dei cavi elettrici di recupero ha notevolmente appesantito i collegamenti interni. Il filo utilizzato, a mio avviso, è di sezione esagerata. Com'é ovvio, la realizzazione presenta dei margini di miglioramento molto ampi, ma tanto il macchinario lo devo usare io e non è in vendita, per cui "chissenefrega" delle norme di sicurezza. Pensavo inoltre di dover realizzare una specie di vaschetta raccogli inchiostro sotto la morsa, ma ho verificato che così come realizzata, l'inchiostro non fuoriesce e va a finire tutto dentro la canaletta di aspirazione. Il fatto poi di aver posto l'elettrovalvola di aspirazione sotto il livello del serbatoio non comporta alcun tipo di problema relativo al ritorno indietro dell'inchiostro. Per pulire il condotto di aspirazione ho spruzzato dell'acqua che è andata tutta aspirata dentro il serbatoio di raccolta. Perfetto. Ora voglio procedere con la combinazione centrifuga + vuoto per procedere con un lavaggio completo e totale (con acqua distillata) delle cartucce, specialmente quelle a cui manca inspiegabilmente del tutto un colore su tre (il giallo sembra essere quello che più frequentemente da dei problemi, seguito dal blu). Il rosso sino ad ora non mi ha mai preoccupato e non mi spiego perché. Anche se i risultati ottenuti non rappresentano una base statistica attendibile per poter cantare vittoria, mi accontento per ora del risultato, in attesa di approfondire la rigenerazione della scorta di cartucce che è in stand-by per essere sistemata. Preferisco procedere con due cartucce alla volta in modo da evitare di dover lasciare le altre per lungo tempo nel cassetto. Credo infatti che in mancanza di un adeguato confezionamento, tenere le cartucce a lungo all'aria aperta (anche con la clip di protezione) crei dei problemi che posso comunque risolvere in quanto, tempo fa, ho recuperato e restaurato una termo saldatrice a filo per confezionare le cartucce nei sacchetti di plastica. Ad ogni modo sono proprio contento e felice. Alla prossima.

P.S. La Befana ne ha per cinque. Ripeto: La Befana ne ha per cinque.

domenica 4 gennaio 2009

Serbatoio sottovuoto (parte 8)

Dopo una lunga pausa sul progetto temporaneamente messo da parte per ragioni di lavoro, decido di completare l'opera. Sto costruendo un macchinario per "succhiare" l'inchiostro dalle cartucce di stampa a spugna per le stampanti a getto. L'operazione si chiama "priming" e serve a ripristinare il flusso di inchiostro nei condotti che lo portano alla testina piezo. Dopo aver smanettato per due ore a tappare le falle d'aria (con nuova intestazione dei tubi pneumatici) e aver ri-collegato il filo di alimentazione del circuito a 12 volts (staccatosi per sbaglio), mi imbatto in un problema inaspettato. Il pressostato non lavora come mi aspettavo. Il pressostato dovrebbe aprire un contatto che diseccita il relè che commuta l'aspirazione, dalla pompa principale al serbatoio, tramite due elettrovalvole. Nonostante riesca ad arrivare a -9 psi (-0,8 bar), il contatto del pressostato non si apre. Ho tentato di agire sulla vite di regolazione, in modo da renderlo più sensibile e scattare a -4 psi. Il problema è che quando la depressione scende a valori quasi nulli, il pressostato non ri-chiude il contatto. Anche se scatta manualmente (agendo sulla vite di regolazione), non ne vuole sapere di lavorare a modo. Mi aspettato una certa isteresi di funzionamento ma così proprio non va. Quando la depressione va a zero, il contatto non si richiude e non posso azionare la pompa per ripristinare il vuoto. Devo apportare una ulteriore modifica al circuito di comando, bypassando il pressostato ed aggiungendo un interruttore. Così il macchinario diventa totalmente manuale e dovrò stare attento ad azionarlo come si deve. Peccato. Ora che sto per finire le cartucce, ne ho proprio bisogno. Vedrò di sbrigarmi. Alla prossima.

P.S. Neve e ghiaccio in ombra. ripeto: Neve e ghiaccio in ombra.