it-swarm.com.de

Vollständige DD-Kopie von Festplatte zu Festplatte

ORIGINAL FRAGE :

Wenn ich 2 identische Festplatten mit folgenden Eigenschaften habe:

  • SATA 6,0 Gbit/s
  • 5400 U/min
  • 3 TB

Wie lange sollte eine vollständige dd-Kopie dauern?

Bisher läuft es seit 5 Stunden und läuft noch ...

Ich benutze Linux Ubuntu 12.04 64bit und der Befehl, den ich benutze, ist:

dd if=/dev/sdb of=/dev/sdc

UPDATE: 1

Ich kann jetzt den Fortschritt sehen und es waren mehr als 6 Stunden für das Kopieren von 430 GB. Die Festplatte ist 3 TB ...

Gibt es keinen schnelleren Weg, dies zu tun?


UPDATE: 2

Dies scheint viel besser als zuvor (Danke an Groxxda für die Vorschläge):

Sudo dd if=/dev/sdb bs=128K | pv -s 3000G | Sudo dd of=/dev/sdc bs=128K

Die ETA beträgt ungefähr 3 Stunden für 3 TB, während sie nach 6 Stunden 430 GB erreicht hat. Ich vermute, dass sie mit dem vorherigen Befehl ungefähr 36 Stunden gedauert hätte.

37
oshirowanen

dd war früher nützlich, als Leute Bänder verwendeten (wenn Blockgrößen wichtig waren) und wenn einfachere Tools wie cat möglicherweise nicht binärsicher waren.

Heutzutage, dd if=/dev/sdb of=/dev/sdc ist eine nur komplizierte, fehleranfällige, langsame Schreibweise cat /dev/sdb >/dev/sdc. Während dd für einige relativ seltene Aufgaben immer noch nützlich ist , ist es viel weniger nützlich als die Anzahl der Tutorials, in denen es erwähnt wird, lässt Sie glauben. Es gibt keine Magie in dd, die Magie ist alles in /dev/sdb.

Dein neuer Befehl Sudo dd if=/dev/sdb bs=128K | pv -s 3000G | Sudo dd of=/dev/sdc bs=128K ist wieder unnötig langsam und kompliziert. Die Daten werden jeweils mit 128 KB gelesen (was besser ist als der dd Standard von 512B, aber nicht so gut wie noch größere Werte). Es geht dann durch zwei Rohre, bevor es geschrieben wird.

Verwenden Sie den einfacheren und schnelleren Befehl cat. (In einigen Benchmarks , die ich vor ein paar Jahren unter Linux erstellt habe, war cat schneller als cp für eine Kopie zwischen verschiedenen Festplatten und cp war mit jeder Blockgröße schneller als dd; dd mit einer großen Blockgröße war beim Kopieren auf dieselbe Festplatte etwas schneller.)

cat /dev/sdb >/dev/sdc

Wenn Sie diesen Befehl in Sudo ausführen möchten, müssen Sie die Umleitung als root ausführen:

Sudo sh -c 'cat /dev/sdb >/dev/sdc'

Wenn Sie einen Fortschrittsbericht wünschen, können Sie, da Sie Linux verwenden, leicht einen erhalten, indem Sie die PID des Prozesses cat notieren (z. B. 1234) und die Position seiner Eingabe oder Ausgabedatei) überprüfen Deskriptor.

# cat /proc/1234/fdinfo/0
pos:    64155648 
flags:  0100000

Wenn Sie einen Fortschrittsbericht wünschen und Ihre Unix-Variante keine einfache Möglichkeit bietet, an die Positionen eines Dateideskriptors zu gelangen, können Sie --- (pv anstelle von cat.

dd verwendet standardmäßig eine sehr kleine Blockgröße (512 Byte). Dies führt zu viel Overhead (ein read() und write() Syscall pro 512 Bytes).

Es geht viel schneller, wenn Sie eine größere Blockgröße verwenden. Optimale Geschwindigkeiten beginnen bei bs=64k oder so. Die meisten Leute benutzen ein noch größeres bs=1M damit es für den Menschen lesbar wird (wenn dd sagt, dass es kopiert wurde 1234 blocks, du weißt es ist 1234 MiB ohne Mathe). Die Verwendung noch größerer Blockgrößen führt wahrscheinlich nicht zu Geschwindigkeitsverbesserungen, sondern nur zu einem höheren Speicherverbrauch.

Der Befehl sollte also lauten:

dd bs=1M if=/dev/sdb of=/dev/sdc

Wenn bereits eine langsame dd ausgeführt wird, können Sie diese unterbrechen und mit einer schnelleren dd Instanz fortfahren. Dazu ist es wichtig zu wissen, wie weit die Kopie bereits fortgeschritten ist. dd druckt normalerweise den Fortschritt, wenn Sie ihn abbrechen, oder Sie können ihm den USR1 Signal während der Ausführung, damit der Fortschritt gedruckt wird.

kill -USR1 $(pidof dd)

Zum Beispiel, wenn mehr als 1234MiB können Sie an Position 1234MiB using:

dd bs=1M seek=1234 skip=1234 if=/dev/sdb of=/dev/sdc

Wenn weniger als 1234MiB, Ihre Kopie wird unvollständig sein. Wenn mehr als 1234MiB werden einige bereits kopierte Teile erneut kopiert, was normalerweise keinen Schaden anrichtet. Wenn Sie Zweifel haben, sollten Sie einen Wert auswählen, der etwas kleiner ist als der, von dem Sie glauben, dass er bereits kopiert wurde.

7
frostschutz

Abrufen von Statistiken zum laufenden dd-Prozess

Sie können den Befehl kill mit dem entsprechenden Signal verwenden, um dd Ausgabestatistiken auf Standardfehler zu setzen.
Aus der Manpage GNU dd:

Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
      $ dd if=/dev/zero of=/dev/null& pid=$!
      $ kill -USR1 $pid
      18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB)  copied,  34.6279 seconds, 271 MB/s

Stellen Sie sicher, dass Sie zuerst auf Ihrer Manpage nach dem richtigen Signal suchen, da es bei verschiedenen dd-Implementierungen unterschiedlich sein kann: (BSD dd verwendet SIGINFO).

Beschleunigung des Prozesses

  1. Schließen Sie jede Festplatte an einen eigenen SATA-Anschluss an, damit die Daten gleichzeitig von einem Gerät gelesen und auf das andere geschrieben werden können.
  2. Verwenden Sie eine geeignete Blockgröße mit bs= Streit. Schauen Sie sich dieser Thread im Superuser an und probieren Sie einige Werte selbst aus.
  3. Verwenden Sie separate dd Aufrufe zum Lesen und Schreiben und verwenden Sie eine Pipe, um sie zu verbinden (dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M).
    Wenn Sie dies tun und eine Blockgröße angeben, stellen Sie sicher, dass Sie bei jedem Aufruf dieselbe Blockgröße verwenden.
  4. Sie können andere Optimierungen wie das Argument direct ausprobieren.
  5. Stellen Sie sicher, dass Ihre Festplatten nicht gemountet sind, da dies zu einer beschädigten Kopie führen kann.
5
groxxda

Es gibt kommerzielle Software namens HDClone . Es ist sowohl als Freeware als auch als kommerziell lizenziert. Jede Version kann ein bootfähiges Pendrive oder eine bootfähige DVD erstellen sowie Datenträger kopieren. Schließen Sie die Quell- und Ziel-HDs an und befolgen Sie die Anweisungen auf GUI-Basis.

Die kostenlose Version wird mit einer Geschwindigkeit von ca. 80 MB/s übertragen, während die kostenpflichtigen Versionen viel schneller ausgeführt werden können. Für NTFS- und FAT-Dateisysteme können die kostenpflichtigen Versionen so konfiguriert werden, dass nur die belegten Bits der Festplatte geklont werden, was die Geschwindigkeit jedes Klons erheblich erhöht.

0
Gerold manders

Haben Sie versucht, "gparted"? Sie können eine Partition buchstäblich von einem Laufwerk auf ein anderes kopieren und einfügen und die Größe nach Bedarf entsprechend ändern. Sie erhalten Übertragungsrate und verbleibende Zeit. Es verwendet 'e2image' darunter für Linux-Partitionen.

0
ioannis