Ich benutze dd in seiner einfachsten Form, um eine Festplatte zu klonen:
dd if=INPUT of=OUTPUT
Ich habe jedoch in der Manpage gelesen, dass dd einen blocksize-Parameter kennt. Gibt es einen optimalen Wert für den Parameter blocksize, der das Klonen beschleunigt?
linux
hard-drive
backup
clone
Phi
quelle
quelle
Antworten:
64k scheint eine gute Wahl zu sein:
(von hier genommen ).
dies stimmt mit meinen eigenen erkenntnissen über das lesen / schreiben von puffern überein, um ein io-heavy konverter-programm zu beschleunigen, das ich einmal bei @work gepimpt habe.
quelle
dd kopiert gerne mit der BS von was auch immer Sie wollen und kopiert einen Teilblock (am Ende).
Grundsätzlich scheint der Parameter block size (bs) die Menge an Speicher festzulegen, die zum Einlesen eines Klumpens von einer Festplatte verwendet wird, bevor versucht wird, diesen Klumpen auf die andere zu schreiben.
Wenn Sie über viel RAM verfügen, bedeutet die Vergrößerung der BS (die jedoch vollständig im RAM enthalten ist), dass das E / A-Subsystem so gut wie möglich ausgelastet ist, indem sehr große Lese- und Schreibvorgänge ausgeführt werden - unter Ausnutzung des RAM. Wenn Sie die BS klein machen, steigt der E / A-Overhead im Verhältnis zur Gesamtaktivität.
Natürlich gibt es dabei ein Gesetz, das die Renditen mindert. Meine grobe Annäherung ist, dass eine Blockgröße im Bereich von 128K bis 32M wahrscheinlich eine solche Leistung ergibt, dass der Overhead im Vergleich zur normalen E / A gering ist und eine Vergrößerung keinen großen Unterschied macht. Der Grund für die Untergrenze von 128 KB bis 32 MB liegt darin, dass dies von Ihrem Betriebssystem, Ihrer Hardware usw. abhängt.
Wenn ich es wäre, würde ich ein paar Experimente durchführen, um eine Kopie / einen Klon mit einer BS von 128K und erneut mit (sagen wir) 16M zu planen. Wenn man merklich schneller ist, benutze es. Wenn nicht, verwenden Sie die kleinere BS der beiden.
quelle
Für diejenigen, die hier über Google landen, auch wenn diese Diskussion ein bisschen alt ist ...
Denken Sie daran, dass dd aus einem bestimmten Grund dumm ist: Je einfacher es ist, desto weniger Fehler können auftreten.
Komplexe Partitionierungsschemata (in Betracht gezogen wird eine Dual-Boot-Festplatte, die zusätzlich LVM für ihr Linux-System verwendet) führen dazu, dass in Programmen wie Clonezilla Fehler aus dem Holz geholt werden. Schlecht nicht gemountete Dateisysteme können ntfsclone in die Luft jagen.
Ein beschädigtes Dateisystem, das Sektor für Sektor geklont wurde, ist nicht schlechter als das Original. Ein beschädigtes Dateisystem nach einer fehlgeschlagenen "intelligenten Kopie" ist möglicherweise WIRKLICH in Verfassung.
Verwenden Sie im Zweifelsfall dd und gehen Sie forensisch vor. Forensische Bildgebung erfordert Sektor-für-Sektor-Kopien (in der Tat kann es mehr Sektoren erfordern, als Sie mit dd schaffen können, aber das ist eine lange Geschichte). Es ist langsam und mühsam, aber es wird die Arbeit korrekt erledigen.
Machen Sie sich auch mit den Optionen "conv = noerror, sync" vertraut, damit Sie Laufwerke klonen können, die allmählich ausfallen - oder ISOs von zerkratzten ( Husten- ) CDs erstellen können - ohne dass es Monate dauert.
quelle
sync
Option? Der Mann Seite sagt nur:"use synchronized I/O for data and metadata"
. Womit synchronisieren wir? Das können viele verschiedene Dinge sein.Wie andere gesagt haben, gibt es keine universell korrekte Blockgröße; Was für eine Situation oder ein Teil der Hardware optimal ist, kann für ein anderes schrecklich ineffizient sein. Abhängig vom Zustand der Festplatten kann es auch vorzuziehen sein, eine andere Blockgröße als die "optimale" zu verwenden.
Eine Sache, die auf moderner Hardware ziemlich zuverlässig ist, ist, dass die Standardblockgröße von 512 Bytes fast eine Größenordnung langsamer ist als eine optimalere Alternative. Im Zweifelsfall habe ich festgestellt, dass 64K ein ziemlich solider moderner Standard ist. Obwohl 64K normalerweise nicht DIE optimale Blockgröße ist, ist es meiner Erfahrung nach viel effizienter als die Standardgröße. 64K hat auch eine ziemlich solide Erfolgsgeschichte: Sie finden eine Nachricht aus der Eug-Lug-Mailingliste von ca. 2002, in der eine Blockgröße von 64K empfohlen wird: http://www.mail-archive.com/eug- [email protected]/msg12073.html
Um DIE optimale Ausgabeblockgröße zu bestimmen, habe ich das folgende Skript geschrieben, das das Schreiben einer 128-MB-Testdatei mit dd in einem Bereich von verschiedenen Blockgrößen testet, von standardmäßig 512 Byte bis maximal 64 MB. Seien Sie gewarnt, dieses Skript verwendet dd intern. Seien Sie also vorsichtig.
dd_obs_test.sh:
Auf GitHub ansehen
Ich habe dieses Skript nur auf einem Debian (Ubuntu) -System und unter OSX Yosemite getestet, daher werden wahrscheinlich einige Anpassungen erforderlich sein, um an anderen Unix-Versionen zu arbeiten.
Standardmäßig erstellt der Befehl eine Testdatei mit dem Namen dd_obs_testfile im aktuellen Verzeichnis. Alternativ können Sie einen Pfad zu einer benutzerdefinierten Testdatei angeben, indem Sie einen Pfad nach dem Skriptnamen angeben:
Die Ausgabe des Skripts ist eine Liste der getesteten Blockgrößen und ihrer jeweiligen Übertragungsraten wie folgt:
(Hinweis: Die Einheit der Übertragungsraten variiert je nach Betriebssystem.)
Um die optimale Leseblockgröße zu testen, könnten Sie mehr oder weniger den gleichen Prozess verwenden, aber anstatt von / dev / zero zu lesen und auf die Festplatte zu schreiben, würden Sie von der Festplatte lesen und nach / dev / null schreiben. Ein Skript dafür könnte so aussehen:
dd_ibs_test.sh:
Auf GitHub ansehen
Ein wichtiger Unterschied in diesem Fall ist, dass die Testdatei eine Datei ist, die vom Skript geschrieben wird. Richten Sie diesen Befehl nicht auf eine vorhandene Datei, da sonst die vorhandene Datei mit zufälligen Daten überschrieben wird!
Für meine spezielle Hardware stellte ich fest, dass 128 KB die optimalste Eingangsblockgröße auf einer Festplatte und 32 KB die optimalste auf einer SSD war.
Obwohl diese Antwort die meisten meiner Erkenntnisse abdeckt, bin ich so oft auf diese Situation gestoßen, dass ich einen Blog-Post darüber geschrieben habe: http://blog.tdg5.com/tuning-dd-block-size/ Weitere Einzelheiten finden Sie hier zu den tests die ich dort durchgeführt habe.
Dieser StackOverflow-Beitrag kann auch hilfreich sein: dd: Wie berechnet man die optimale Blockgröße?
quelle
Ja, aber ohne viele Tests werden Sie es nicht finden. Ich habe festgestellt, dass 32M ein guter Wert für die Verwendung ist.
quelle
Klonen des alten Startlaufwerks auf eine neue SSD auf einer externen SSD (SSD auf SSD)
Verwenden von Datenträgern (Tool)> Formatieren> ATA Secure Erase (2 Minuten)
Testläufe:
Zweiter Versuch nach dem sicheren Löschen mit dem gleichen Ergebnis:
quelle