Irgendwo im Internet habe ich gelesen, dass gddrescue dd zumindest in Bezug auf die Anzahl der in einem problematischen Sektor durchgeführten Festplattenlesevorgänge überlegen ist. Ist das wirklich der Fall?
Zeit dd if = / dev / sda skip = 900343967 von = a.bin count = 4 iflag = direct conv = noerror, sync
dd: Lesen von `/ dev / sda ': Eingabe- / Ausgabefehler
2 + 0 Datensätze in
2 + 0 Datensätze aus
1024 Bytes (1,0 kB) kopiert, 18.6057 s, 0,1 kB / s
3 + 1 Datensätze in
4 + 0 Datensätzen aus
2048 kopierte Bytes (2,0 kB), 18,6707 s, 0,1 kB / sreal 0m18.672s
Benutzer 0m0.000s
sys 0m0.004s
Übrigens hilft die direkte Flagge wirklich, ohne sie konnte ich nur 1 von 4 Sektoren lesen (gegenüber 3/4 damit). Dies verlangsamt jedoch die Übertragungsgeschwindigkeit spürbar - sie ist für mich mindestens fünfmal langsamer: 5 MB / s gegenüber 25 MB / s ohne dieses Flag. Wie auch immer, jetzt zum gddrescue (ddrescue) Teil.
Zeit ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
Über 2048 Bytes von / dev / sda nach b.bin kopieren
Startpositionen: infile = 460976 MB, outfile = 0 B
Blockgröße kopieren: 1 harte Blöcke
Harte Blockgröße: 512 Bytes
Max_retries: 0
Direkt: ja Sparse: nein Split: nein Abschneiden: nein
Drücken Sie Strg-C, um die Rettung zu unterbrechen : 1536 B, Fehlergröße: 512 B, aktuelle Rate: 53 B / s
ipos: 460976 MB, Fehler: 1, durchschnittliche Rate: 53 B / s
opos: 1536 B, Zeit vom letzten erfolgreichen Lesevorgang: 0 s
Fertigreal 0m18.736s
Benutzer 0m0.004s
sys 0m0.000s
Wie oben gezeigt, hat die Ausführung genau genauso lange gedauert. Wie erwartet - gleiche Statistik: 3/4. Obwohl ich die problematischen Sektoren mit 0x00 für dd (conv = sync) auffüllen konnte, scheint gddrescue diese Funktionalität zu vermissen? Stattdessen überspringt es einfach den problematischen Sektor, ohne etwas an seine Position zu schreiben, und fährt mit dem nächsten folgenden Sektor fort (wenn ich bereits Daten über diesen Sektor in der Ausgabedatei geschrieben habe - werden sie nicht überschrieben: Manchmal ist dies möglicherweise nicht wünschenswert ). Ich bin nicht sicher, wie die Option -t (Abschneiden) für ein Blockgerät mit gddrescue funktioniert(Ich denke, es wird es vollständig mit 0x00 überschreiben), aber in einer regulären Datei wird, wie vorhergesagt, die gesamte Datei abgeschnitten, ohne dies nur innerhalb der versetzten Dimensionen (dh -o1) zu tun. Das ist also etwas ähnlich wie dd sync , aber weit davon entfernt, dasselbe zu sein, da es nur die Identifikationsfunktionalität nachahmt, wenn Sie bereit sind, das gesamte Ausgabegerät / die gesamte Ausgabedatei zu überschreiben.
Dank der ausführlichen Option und der Möglichkeit, fehlerhafte Sektoren / Blöcke zu protokollieren, scheint gddrescue eine bessere Wahl zu sein. Es ist wichtig zu beachten, dass beide Apps mit (ziemlich) identischen Parametern gestartet wurden.
Die Ausgabe von
diff? .bin
ist leer (Exit 0), was bedeutet, dass die Dateien genau gleich sind.
Dies ist der Teil, den ich NICHT verstehe:
dd ist selbst bei fehlerfreien Dingen langsam, da es winzige Lese- und Schreibvorgänge ausführt. Es verbringt viel Zeit damit, durch die fehlerhaften Teile des Laufwerks zu kauen, anstatt so viel fehlerfreies Zeug wie möglich zu lesen, und dann wieder die harten Sachen zu machen.
Worum geht es? Besonders der Teil " Es verbringt viel Zeit damit, durch die fehlerhaften Teile des Laufwerks zu kauen, anstatt so viel fehlerfreies Zeug wie möglich zu lesen und dann wieder das harte Zeug zu machen "? Es hat genauso lange gedauert wie oben gezeigt (obwohl ich einen sehr kleinen Teil der Daten überprüft habe, aber sollte das wichtig sein?).
gddrescue bietet den Schalter -r an , der die Anzahl der erneuten Lesevorgänge in einem "fehlerhaften Sektor" steuern soll. Dd scheint jedoch die ganze Zeit mit -r0 zu laufen (da dies dieselbe Zeit in Anspruch nahm). Ist diese Option also nur für die "Nachbearbeitung" gedacht? Was ich bei bekommen, ist , dass die ursprünglich beide dd und gddrescue scheinen zu laufen -r0 und dd scheint nicht zu kauen durch die fehlerhaften Teile mehr als gddrescue (sie scheinen beide halt an einem schlechten Block für 15-18 Sekunden geben oder nehmen, also was ist los , wie ist gddrescue schneller ???)
Wofür ist die Option -D (verwenden Sie synchrone Schreibvorgänge für die Ausgabedatei)? Ich habe keinen Unterschied zu einigen der durchgeführten Tests festgestellt.
Kann jemand das Ganze kommentieren? Vielen Dank.