DDer Rettungsparallelbetrieb

598
Ro-ee

Ich verwende ddrescue, um Daten von einem Seagate Barracuda 3TB-Laufwerk wiederherzustellen. Das Laufwerk schlägt fehl, aber bisher hat jeder Sektor, den ich zu lesen versuche, die korrekten Daten zurückgegeben, es kann jedoch einige Tests erforderlich sein (ddrescue muss also in der letzten Phase mehrere Durchgänge ausführen, in denen fehlerhafte Sektoren gelesen werden).

Der normale Betrieb ist jedoch sehr langsam. Ich habe einige Abschnitte auf der Festplatte, die mit voller Geschwindigkeit (60 MB / s) gelesen werden, aber nach dem erfolgreichen Abrufen von ~ 2,5 TB an Daten sind die verbleibenden 500 GB auf der gesamten Festplatte verteilt und werden mit einer rasenden Geschwindigkeit von ~ 2 KB / s gelesen. mit einer Schätzung von wenigen tausend Tagen.

Ich kann jedoch mehrere Instanzen von ddrescue gleichzeitig auf demselben Laufwerk ausführen, was den Durchsatz erhöht, aber ich bin nicht sicher, wie ich die Daten letztendlich zu einem Bild zusammenfassen kann, insbesondere durch das Verfolgen der Kartendatei. Mehrere Prozesse bedeuten mehrere Kartendateien, nehme ich an.

Weiß jemand auch, warum die Fahrt so langsam ist? Ich meine, 2 KB / s (oder weniger, im Fehlerfall) ist mühsam langsam, bringt Erinnerungen an C64 zurück. Ich brauchte 3 Stunden, um 30 MB Daten zu erhalten. Ich hätte ein identisches Barracuda-3-TB-Laufwerk, das als Organspender fungieren könnte, falls durch einen Wechsel durch den Controller das Problem gemildert würde (aber wenn man das liest, ist es zweifelhaft, dass dies funktionieren wird).

1
Erhöht die Ausführung mehrerer Instanzen tatsächlich den Durchsatz? Oder scheint es einfach schneller zu sein, da die langsamen Lesevorgänge durch die schnelleren Lesevorgänge verdeckt werden? Es fällt mir schwer, mir einen Fall vorzustellen, bei dem mehrere Leser auf einer einzigen sich drehenden Platte tatsächlich zu höheren Lesegeschwindigkeiten führen würden. Es scheint, dass Sie die Dinge tatsächlich verlangsamen würden, indem Sie mehr Head-Search hinzufügen. ernie vor 6 Jahren 0
Ich muss das testen, aber ich bin mir nicht sicher, ob die Platte viel Kopfbewegungen ausführt, wenn sie nur 2 KB / s liest. Wenn dies der Fall ist, weil der Sektor häufig intern neu gelesen werden muss, könnte dies der Fall sein, und wenn Sie an verschiedenen Orten suchen, würde sich die Geschwindigkeit verschlechtern. Ro-ee vor 6 Jahren 0
Ja, es geht mir um eine perfekt funktionierende Festplatte. Ich weiß nicht, wie zwei gleichzeitige Lesevorgänge schneller sein können als ein einzelner Leser. ernie vor 6 Jahren 0
WENN (und das ist ein großer Fall) Die langsame Lesegeschwindigkeit wird nicht durch das Lesen selbst verursacht, sondern durch etwas anderes im Laufwerk (denken Sie daran, dass das Laufwerk gerade ausfällt, intelligente Daten geben mir den Schrecken), dann könnten gleichzeitige Lesevorgänge auftreten schneller, da das physische Lesen / per se / in der gleichen Zeit erfolgt, aber die verbleibende Datenverarbeitung würde den Rest der Zeit beanspruchen. Das ist der einzige Grund, aus dem ich kommen kann, aber Tests müssen das zeigen. Ich weiß, wenn ich die Größe mit ddrescue auf 30 MB beschränke, dauert das ungefähr 3 Stunden. Ich kann das also parallel machen und sehe, dass es 3 oder 6 Stunden dauert. Ro-ee vor 6 Jahren 0
Gleichzeitige Lesevorgänge führen immer zu Kopfsuche und verlangsamen die Dinge. Es scheint, Sie stellen sich ein Szenario vor, in dem der Engpass darin besteht, dass etwas von der Platte gelesen wird, und dann gibt es eine Verarbeitung oder etwas, das extrem langsam ist, und das ist der Engpass? Das erscheint wirklich sehr unwahrscheinlich. Bei einem fehlerhaften Laufwerk würde ich wirklich nur ungern parallele Lesegeräte verwenden, da Sie durch die zusätzlichen Kopfbewegungen zusätzlichen Verschleiß auf dem Laufwerk verursachen. Anstatt dd oder ähnliches zu verwenden, kann ich einfach versuchen, die Dateien zu kopieren, die ich unbedingt direkt benötige. ernie vor 6 Jahren 0
Wie wäre es mit einem `smartctl`-Trick aus dieser Antwort (https://superuser.com/a/905814/432690)? Kamil Maciorowski vor 6 Jahren 0
@ Kamil Maciorowski: Leider gibt smartctl zurück "SCT Error Recovery Control-Befehl wird nicht unterstützt." Ro-ee vor 6 Jahren 0
@ernie, paralleles Lesen verbessert die Geschwindigkeit nicht, wie meine Messungen gezeigt haben (leider). Ro-ee vor 6 Jahren 0

1 Antwort auf die Frage

0
Deltik

Anstatt Dinge mit zwei Bildern zu komplizieren, können Sie GNU ddrescue anweisen, die langsamen Teile zu überspringen und später darauf zurückzukommen.

Die Flagge, mit der Sie dies tun können, ist --min-read-bytes=.

Aus dem Handbuch der GNU ddrescue :

--min-read-rate=bytes

Minimale Lesegeschwindigkeit für nicht getestete Bereiche in Byte pro Sekunde. Wenn die Lesegeschwindigkeit diesen Wert unterschreitet, springt ddrescue je nach Rate und Fehlerhistorie um einen variablen Betrag. Die übersprungenen Blöcke werden in zusätzlichen Durchläufen (vor dem Trimmen) versucht. Wenn Bytes 0 (Auto) ist, wird die minimale Lesegeschwindigkeit jede Sekunde als (Average_rate / 10) neu berechnet.


Wenn Sie darauf bestehen, mehrere Bilder zu erstellen, enthält das Handbuch auch ein Beispiel, wie Sie diese kombinieren können:

Beispiel 4: Zusammenführen der teilweise wiederhergestellten Bilder von 3 identischen DVDs mit ihren Mapfiles als Domain-Mapfiles.

 ddrescue -m mapfile1 dvdimage1 dvdimage mapfile ddrescue -m mapfile2 dvdimage2 dvdimage mapfile ddrescue -m mapfile3 dvdimage3 dvdimage mapfile (if bad-sector size is zero, dvdimage now contains a complete image of the DVD and you can write it to a blank DVD) 
Ich verwende bereits -a (= --min-read-bytes), was bei 20000 bytes / s ausfällt. Ich habe es mehrmals bei Pass 1 ausgeführt (ich habe herumgespielt und den 'aktuellen' Zeiger in der Map-Datei zurückgesetzt, da ich fand, dass noch größere Abschnitte übersprungen wurden, was mir bisher geholfen hat, ~ 10 GB an zusätzlichen Daten zu erhalten Stunden, aber irgendwann wurden alle großen Gebiete bearbeitet, und mir stehen 30 MB unprobierte Gebiete nördlich von 50 km zur Verfügung. Vielen Dank für den Zusammenführungstipp. Ro-ee vor 6 Jahren 0