Hintergrund / Kontext:
Ich verwende derzeit GNU ddrescue 1.18.1, um Daten von einem USB-Stick wiederherzustellen, bei dem eine Kabelverbindung aufgetreten ist, während ich ein Image der virtuellen Festplatte auf die Partition disk2s1 geschrieben habe. Zunächst stelle ich meine zweite Partition (disk2s2) wieder her und stelle fest, dass ich die dritte Phase (Splitting) erreicht habe. Ich platziere das Bild auf einem Netzwerkspeicher.
Frage:
Ich habe bemerkt, dass diese Phase Schleifen. Gibt es eine Möglichkeit, die Anzahl der Schleifen zu berechnen, die aufgrund meiner aktuellen Statusinformationen wahrscheinlich auftreten (ich zeige nur zwei Fehler an)?
Status:
Aktualisieren / Bearbeiten:
Daher bin ich immer noch sehr daran interessiert, wie man die Schleifen / die Zeit für die Fertigstellung mit dem ddrescue-Tool abschätzen kann. Gemäß den Kommentaren füge ich eine Auswertung einer Protokolldatei für meine derzeit ausgeführte disk2s1-Partition hinzu (die disk2s2-Partition wurde nach 14,5 Stunden abgeschlossen, wobei ein Benutzer etwa 6 Stunden lang unterbrochen wurde).
Partitionsprotokoll abgeschlossen
Für die gerade abgeschlossene Partition ist hier das Ergebnis der Protokollprüfung.
Referenz (Hinweise zum Ddrescue-Algorithmus):
4 Algorithmus
GNU ddrescue ist keine Ableitung von dd und steht in keiner Weise in Beziehung zu dd, außer dass beide zum Kopieren von Daten von einem Gerät auf ein anderes verwendet werden können. Der Hauptunterschied besteht darin, dass ddrescue einen ausgeklügelten Algorithmus verwendet, um Daten von fehlerhaften Laufwerken zu kopieren, wodurch diese so wenig zusätzlichen Schaden wie möglich verursachen.
Ddrescue verwaltet den Status der laufenden Rettung effizient und versucht, zuerst die guten Teile zu retten. Dabei werden Lesevorgänge in schlechten (oder langsamen) Bereichen für später geplant. Dies maximiert die Datenmenge, die endgültig von einem fehlerhaften Laufwerk wiederhergestellt werden kann.
Das Standarddienstprogramm dd kann zum Speichern von Daten von einem fehlerhaften Laufwerk verwendet werden. Es liest die Daten jedoch nacheinander, wodurch das Laufwerk möglicherweise abgenutzt wird, ohne dass etwas gerettet wird, wenn sich die Fehler am Anfang des Laufwerks befinden.
Andere Programme lesen die Daten nacheinander, wechseln jedoch zu kleinen Lesevorgängen, wenn sie Fehler finden. Dies ist eine schlechte Idee, da dies bedeutet, mehr Zeit in Fehlerbereichen zu verbringen, die Oberfläche, die Köpfe und die Antriebsmechanik zu beschädigen, anstatt sie so schnell wie möglich zu verlassen. Dieses Verhalten verringert die Wahrscheinlichkeit, die verbleibenden guten Daten zu retten.
Der Algorithmus von ddrescue lautet wie folgt (der Benutzer kann den Prozess jederzeit unterbrechen, muss sich jedoch darüber im Klaren sein, dass ein fehlerhaftes Laufwerk ddrescue für eine lange Zeit blockieren kann, bis der Kernel aufgibt):
1) Lesen Sie optional eine Protokolldatei, die den Status einer mehrteiligen oder zuvor unterbrochenen Rettung beschreibt. Wenn keine Protokolldatei angegeben ist oder leer ist oder nicht vorhanden ist, markieren Sie die gesamte Rettungsdomäne als nicht ausprobiert.
2) (Erste Phase; Kopieren) Lesen Sie die nicht getesteten Teile der Eingabedatei, markieren Sie die fehlgeschlagenen Blöcke als nicht zugeschnitten und überspringen Sie sie. Überspringen Sie auch langsame Bereiche. Die übersprungenen Bereiche werden später in zwei zusätzlichen Durchgängen (vor dem Trimmen) versucht, wobei die Richtung nach jedem Durchgang umgekehrt wird, bis die gesamte Rettungsdomäne ausprobiert ist. Der dritte Durchgang ist ein umfassender Durchgang, bei dem das Überspringen deaktiviert ist. (Der Zweck besteht darin, große Fehler schnell abzugrenzen, die Protokolldatei klein zu halten und gute Ausgangspunkte für das Zuschneiden zu erstellen.) Nur nicht erprobte Bereiche werden in großen Blöcken gelesen. Das Trimmen, Aufteilen und Wiederholen erfolgt Sektor für Sektor. Jeder Sektor wird höchstens zweimal ausprobiert; Der erste in diesem Schritt (normalerweise als Teil eines großen Blocklesevorgangs, manchmal aber auch als einzelner Sektor), der zweite in einem der folgenden Schritte als einzelner Sektor.
3) (Zweite Phase; Trimmen) Lesen Sie jeweils einen Sektor von der Vorderkante des kleinsten nicht getrimmten Blocks weiter, bis ein fehlerhafter Sektor gefunden wird. Lesen Sie dann jeweils einen Sektor von der Hinterkante desselben Blocks rückwärts, bis ein fehlerhafter Sektor gefunden wird. Markieren Sie für jeden nicht zugeschnittenen Block die gefundenen fehlerhaften Sektoren als fehlerhaften Sektor und markieren Sie den Rest dieses Blocks als nicht geteilt, ohne zu versuchen, ihn zu lesen. Wiederholen, bis keine nicht zugeschnittenen Blöcke mehr vorhanden sind. (Große, nicht zugeschnittene Blöcke werden durch Verkettung kleinerer Blöcke erzeugt, und der Anteil guter Daten an den Rändern ist daher geringer.)
4) (Dritte Phase; Aufteilen) Lesen Sie jeweils einen Sektor von der Mitte des größten nicht geteilten Blocks weiter, bis ein fehlerhafter Sektor gefunden wird. Wenn der gefundene fehlerhafte Sektor nicht der erste ist, der versucht wird, lesen Sie jeweils einen Sektor von der Mitte desselben Blocks rückwärts, bis ein fehlerhafter Sektor gefunden wird. Wenn die Protokolldatei größer als '--logfile-size' ist, lesen Sie nacheinander die größten nicht geteilten Blöcke, bis die Anzahl der Einträge in der Protokolldatei unter '--logfile-size' fällt. Wiederholen, bis alle verbleibenden nicht geteilten Blöcke weniger als 7 Sektoren haben. Lesen Sie dann die verbleibenden nicht geteilten Blöcke nacheinander.
5) (Vierte Phase; Wiederholung) Versuchen Sie optional, die fehlerhaften Sektoren erneut zu lesen, bis die angegebene Anzahl von Wiederholungsdurchläufen erreicht ist. Jeder schlechte Sektor wird nur einmal in jedem Durchgang ausprobiert. Ddrescue kann nicht wissen, ob ein fehlerhafter Sektor nicht wiederherstellbar ist oder ob er nach einigen Wiederholungsversuchen irgendwann gelesen wird.
6) Schreiben Sie optional eine Protokolldatei zur späteren Verwendung.
Die Gesamtfehlergröße ('errsize') ist die Summe der Größen aller nicht zugeschnittenen, nicht geteilten und fehlerhaften Sektorenblöcke. Sie nimmt während der Kopierphase zu und kann während des Zuschneidens, Teilens und erneuten Versuchens abnehmen. Beachten Sie, dass sich die Gesamtfehlergröße verringern kann, wenn ddrescue die ausgefallenen Blöcke aufteilt und sie kleiner macht, während die Anzahl der Fehler zunimmt.
Die Protokolldatei wird regelmäßig auf der Disc gespeichert sowie wenn ddrescue beendet oder unterbrochen wird. Im Falle eines Absturzes können Sie die Rettung mit wenig Nachkopieren fortsetzen. Das Intervall zwischen den Speicherungen variiert je nach Größe der Protokolldatei zwischen 30 Sekunden und 5 Minuten (größere Protokolldateien werden in längeren Intervallen gespeichert).
Dieselbe Protokolldatei kann auch für mehrere Befehle verwendet werden, die verschiedene Bereiche der Eingabedatei kopieren, und für mehrere Wiederherstellungsversuche über verschiedene Teilmengen. Siehe dieses Beispiel:
Retten Sie zuerst den wichtigsten Teil der Disc. ddrescue -i0 -s50MiB / dev / hdc hdimage-Protokolldatei ddrescue -i0 -s1MiB -d -r3 / dev / hdc hdimage-Protokolldatei
Dann retten Sie einige wichtige Disc-Bereiche. ddrescue -i30GiB -s10GiB / dev / hdc hdimage-Protokolldatei ddrescue -i230GiB -s5GiB / dev / hdc hdimage-Protokolldatei
Jetzt rette den Rest (kopiert nicht, was bereits getan wurde). ddrescue / dev / hdc hdimage-Protokolldatei ddrescue -d -r3 / dev / hdc hdimage-Protokolldatei
ddrescuelog -t YourLog.txt
in einem anderen Terminal versuchen ?
ddrescue
kann nur versuchen, physische Probleme zu beheben und hilft bei logischen Fehlern überhaupt nicht. Für letztere versuchen fsck
oder gleich ..
ddrescue
nur benötigen , wenn die Festplatte fehlerhafte Blöcke aufweist, die nicht durch eine "Kabeltrennung" verursacht würden. Wenn Sie Kabelprobleme haben, versuchen Sie einfach ein anderes Kabel ...