Frage

Gibt es eine Möglichkeit, Linux beim Klonen einer Festplatte vorauslesen zu lassen?Zum Klonen von Festplatten verwende ich das Programm „dd“.Als ich das das letzte Mal gemacht habe, schien es, als würde das Betriebssystem lesen und dann schreiben, aber nie gleichzeitig.Im Idealfall würde die Zielfestplatte ständig schreiben, ohne zu warten, vorausgesetzt, die Quellfestplatte kann mithalten.

AKTUALISIEREN:Normalerweise wähle ich beim Klonen eine große Blockgröße (z. B.16 MB oder 32 MB).

War es hilfreich?

Lösung

Commodore Jaeger ist recht:

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

Auch „readahead“ auf den Laufwerken Anpassung verbessert in der Regel die Leistung. Der Standard kann so etwas wie 256 sein und eine optimale 1024. Jede Einrichtung ist anders, so würden Sie Benchmarks laufen müssen, um den besten Wert zu finden.

# blockdev --getra /dev/sda
256
# blockdev --setra 1024 /dev/sda
# blockdev --getra /dev/sda
1024
# blockdev --help
Usage:
  blockdev -V
  blockdev --report [devices]
  blockdev [-v|-q] commands devices
Available commands:
    --getsz (get size in 512-byte sectors)
    --setro (set read-only)
    --setrw (set read-write)
    --getro (get read-only)
    --getss (get sectorsize)
    --getbsz    (get blocksize)
    --setbsz BLOCKSIZE  (set blocksize)
    --getsize   (get 32-bit sector count)
    --getsize64 (get size in bytes)
    --setra READAHEAD   (set readahead)
    --getra (get readahead)
    --flushbufs (flush buffers)
    --rereadpt  (reread partition table)
    --rmpart PARTNO (disable partition)
    --rmparts   (disable all partitions)
#

Andere Tipps

Sie könnten versuchen, die Blockgröße Erhöhung des bs Argument; standardmäßig glaube ich, dd eine Blockgröße gleich die Festplatte der bevorzugten Blockgröße verwendet, die viel mehr liest bedeuten werden und schreibt eine ganze Festplatte zu kopieren. Linux dd unterstützt Menschen lesbaren Suffixe:

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

Die schnellste für mich:

dd if=/dev/sda bs=1M iflag=direct | dd of=/dev/sdb bs=1M oflag=direct

erreicht ~ 100MiB / s, während andere Optionen (Einzel Prozess, keine direkte, Standard-512b-Blockgröße, ...) nicht einmal erreichen 30MiB / s ...

, um den Fortschritt zu sehen, in einer anderen Konsole ausführen:

watch -n 60 killall -USR1 dd

Vielleicht können Sie zwei Prozesse verwenden

dd if=indevfile | dd of=outdevfile

Ich nehme an, Sie die anderen dd Optionen festlegen können, wie es Ihnen passt. Dies hat einige Overhead sollte aber Asynchronität zwischen dem Lesen erlauben eine Platte und Schreiben der anderen Seite.

, wenn die beiden Scheiben anderen Kanal verwenden (beispielsweise SATA) können Sie Hochleistungs-Tool wie fastDD verwenden. Die Autoren behaupten:

  

"In dieser Arbeit haben wir die Aufgabe zuverlässig und effizient   Kopieren von Daten, alle Hardware- und Software-Mechanismen unter Hinweis auf die   eingreifen und in dem Kopiervorgang interferieren. Unsere Überlegung haben   codiert wurde sehr kopieren Daten in fastdd, ein C ++ Programm in der Lage   effizient, da zeigen wir in unserem Test. "

Darüber hinaus hält das Werkzeug eine Syntax sehr ähnlich die alten dd.

http://www.dei.unipd.it/~zagonico/fastdd/

https://github.com/zagonico86/fastdd

Sind Sie sicher, dass es zugleich nicht, das zu tun? Ich würde die Platten-Caches erwarten, um sicherzustellen, dass passiert. Wenn nicht, nicht-blockierenden oder sogar asynchron liest / schreibt kann helfen,

Über Ihr Update: Wie groß sind die Caches Ihres HDs? (Speziell das Schreiben eins). Es kann sein, dass das zu viel ist, und Sie können sie reduzieren müssen, um unnötige Blockierung zu verhindern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top