Tecniche avanzate di recupero file partizione NTFS per unità danneggiate (errori IO)?


8

Di recente ho subito una quantità esageratamente piccola ma piuttosto importante di danni a un disco rigido su un host ESXi che ha interessato un paio di VM. C'è un file che mi piacerebbe molto recuperare, e ovviamente è stato in qualche modo lasciato fuori dal mio backup normale. Le copie più recenti hanno 6 mesi. Ho scoperto che ho bisogno di ... oops.

Dettagli:

1) Ho usato ddrescue (strumento FANTASTICO) all'interno di un ISO avviabile Parted Magic per recuperare il 99,98% dell'unità della VM in questione. Sfortunatamente, gli errori sembrano essere quasi interamente delle scritture di file RECENT ... quindi ovviamente sono esattamente i settori di cui ho bisogno per recuperare di più.

2) Il convertitore di frequenza genera errori di I / O in caso di letture errate del settore, ma a volte ha SUCCESSO nella lettura di un settore precedentemente danneggiato! Quindi, il recupero è ancora possibile. Un po 'più spesso di questo avrà una sorta di grave malfunzionamento e gira l'unità verso il basso e il backup. Oh, e circa 1/4 di questi spin down non torneranno indietro. (Richiede un ciclo di alimentazione intenso, lo spegnimento non funziona) Infine, quasi tutti i settori danneggiati vengono forniti con un piacevole suono udibile.

3) L'importante disco VM è formattato NTFS.

4) Posso (di solito) montare il volume NTFS danneggiato in sola lettura e posso (leggermente meno spesso) passare alla cartella che contiene il file di cui ho bisogno. Tuttavia, il file in questione sembra dare sempre un errore IO quando eseguo un 'ls' della cartella. Gli altri file nella cartella non danno un errore IO.

5) Ho provato ad usare ntfsinfo / etc ... che suona esattamente come quello di cui ho bisogno ... ma non aprirà affatto la partizione. (Frustrante, dal momento che 'mount' di solito lo farà)

6) Il file è un file XLS di Excel 2003, quindi non sono sicuro di poter trovare stringhe per cercare l'immagine del disco grezzo. (Forse parti della versione di 6 mesi?)

Mi piacerebbe davvero usare qualcosa come le strutture di debugfs. Tuttavia, dalle pagine man sembra che gli strumenti ntfs potrebbero fare il lavoro se solo potessero essere fatti per aprire la partizione. In particolare, mi chiedo se gli errori di I / O potrebbero essere puramente all'interno dei metadati per il file e se il record della directory possa essere ripristinato abbastanza bene da copiare il contenuto del file. Come ultima risorsa, qualunque contenuto parziale di file riesco a recuperare sarebbe fantastico.

Ho scritto moduli del kernel (relativamente semplici) prima, quindi ho potuto compilare uno speciale modulo NTFS con ulteriori informazioni di debug abilitate (o aggiunte). (Il file vale almeno alcuni giorni di armeggiare per provare a recuperare ... inoltre sto imparando cose interessanti nel processo)

Qualche puntatore?

MODIFICARE:

Ulteriori informazioni sull'errore dell'unità:

I messaggi / var / log / mostrano ovviamente molti errori NTFS-fs ... ma alla fine mi sono preso la briga di tradurre il messaggio di codice di senso non gestito che di solito ricevo: tasto di rilevamento 0x3, ASC = 0x11, ASCQ = 0x4. (che sembra tradursi in ERRORE DI LETTURA NON RICOPERTO - RIALLOCAZIONE AUTOMATICA NON RIUSCITA).

Quando l'unità si gira, viene visualizzato il messaggio "scsi0: * BusLogic BT-958 Initialized". Non sono sicuro che sia il driver SCSI di Linux, il driver ESXi o l'unità stessa a decidere di spegnere l'unità. Se fosse il driver Linux, allora forse potrei modificare il driver per evitare di rallentare. Tutta questa cosa di ddrescue è resa enormemente più dolorosa da questi spindown che richiedono il ciclo di potenza.

EDIT2:

usando il messaggio di registro "end_request: I / O error, dev sda, sector 7238859" subito dopo che sono la directory che contiene il file in questione, ho indirizzato la mia operazione ddrescue a quel settore. Al momento ho intenzione di rischiare e SCRIVERE quel settore sul disco live se ciò ha esito positivo. Forse posso ricostruire lentamente la mia strada per il file in questione in questo modo. Tuttavia, la maggior parte dei settori danneggiati recuperabili viene recuperata in meno di 20 tentativi ... questo è oltre 150 finora ... * sospiro *

Edit3:

L'errore di settore di "ls" nel file di cui ho bisogno è del tutto non collaborativo (1000+ tentativi durante la notte e senza fortuna). Spero che siano solo metadati quando fai un 'ls'? :)

Ho la maggior parte di una copia di ddrescue, ma che non monta (o monta senza file). L'unità danneggiata si monta correttamente per la maggior parte del tempo ... forse gli errori di I / O sulla forza dell'azionamento danneggiata "montano" per ricadere nello specchio che funziona?

** EDIT4: **

Ho rinunciato per ora, in attesa di ulteriori suggerimenti. Ho rimosso l'unità e ricostruito la scatola. Terrò il giro in auto nel caso dovesse succedere qualcosa.


3
La prima cosa da fare è fare una copia del disco, usando ddrescueo altri strumenti simili per copiare quanti più settori possibile. Non eseguire alcun ripristino a livello di file system dal disco danneggiato, farlo dalla copia.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles Ho già detto che ho usato ddrescue. Apparentemente ci sono errori nei posti sbagliati per il montaggio di una copia. Non è chiaro su quali offset devo concentrarmi con ddrescue per risolvere quel problema ... quindi la domanda su qualcosa come debugfs (o un ntfsinfo che può funzionare con una partizione almeno così come il normale 'mount'). La mia scommessa migliore a questo punto è guardare / var / log / messaggi per errori di settore mentre accedo al disco rigido in un montaggio di sola lettura e provo a trascinarli sulla copia fino a quando non funziona.
darron,

1
Hai raffreddato attivamente l'unità durante questo processo? Mantenere l'unità il più freddo possibile aiuta in modo significativo.
Nathan V,

Risposte:


4

Alcune note della mia esperienza:

  1. (la causa) Se si sente un suono insolito durante i tentativi di accesso all'HD e non si verificano problemi in (più o meno) solo posizioni casuali del disco, allora la causa principale è probabilmente sulla superficie del disco (non l'elettronica) - sfortunatamente , questo è lo scenario triste. Se fosse "solo" l'elettronica, potresti aver avuto la possibilità di recuperare la maggior parte o anche tutti i tuoi dati.
  2. (settori danneggiati) Se non lo hai già fatto, cerca nel Web lo strumento di diagnostica / ripristino avviabile del produttore del disco, scaricalo, avvia, esegui un test approfondito e lascia che provi a rimappare i settori danneggiati: questo è il migliore tra i metodi gratuiti. Nota che i settori danneggiati tendono a crescere, quindi anche se riesci a catturare un pezzo del tuo file dopo un tentativo di lettura del 2314, è probabile che quei tentativi abbiano solo fatto crescere i settori danneggiati nelle vicinanze, diminuendo in modo efficace le possibilità di recupero di altre parti del file.
  3. (recupero NTFS) Nulla può riparare un filesystem NTFS e strumenti nativi di MS Windows. Se l'immagine NTFS non è montabile (assicurati anche di provare a montare la partizione, non l'intero disco!), Puoi provare cose come testdisksotto Linux, ma se falliscono, Windows chkdiskpuò aiutarti. Se hai Windows installato in una macchina virtuale, puoi convertire l'immagine grezza ottenuta da ddrescuein un formato supportato da quella macchina virtuale (come VDIo VMDK), aggiungerla alla VM e avviare Windows in modalità riga di comando per correggere il filesystem. Se si utilizza VirtualBox, il comando per convertire tale immagine è VBoxManage convertfromraw <filename> <outputfile>facoltativamente con --format VDI|VMDK|VHDper ottenere il formato di output specificato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.