it-swarm.com.de

Wie würde ich eine volle Festplatte beschleunigen?

Mit diesem Befehl mache ich ein dd auf zwei identischen Laufwerken:

 dd if=/dev/sda of=/dev/sdb bs=4096

Beide Festplatten haben genau die gleiche Modellnummer und beide haben 1 TB Speicherplatz. /dev/sda verwendet eine Blockgröße von 4096. /dev/sda ist ein lokales Laufwerk und /dev/sdb ist ein Remote-Caddy. Ich kann möglicherweise die folgenden Protokolle verwenden:

  • USB2.0 HighSpeed ​​(Derzeit ist der Plan)
  • Gigabit Over-The-Network-Klon (Wirklich nicht wollen, auch dies zu versuchen)
  • USB3.0 (Wenn ich meinen anderen Laufwerkscaddy finde)
  • eSATA (Wenn ich ein Kabel finde/kaufe)
  • SATA (Wenn ich ein Kabel finde/kaufe, muss ich Laptop-CD-Laufwerke lieben)

Gibt es eine Möglichkeit, diese Laufwerkskopie auszuführen, die weniger als 96 Stunden dauert? Ich bin offen für andere Tools als dd.

Ich muss die folgenden Partitionen (einschließlich UUIDs) klonen

  • Fat32 EFI-Partition (*)
  • NTFS-Windows-Partition (*)
  • HFS + OSX-Partition
  • EXT4 Ubuntu Partition (*)
  • Swap-Partition (*)

* Unterstützt von Clonezilla


Ich habe Clonezilla ausprobiert (und es war VIEL schneller), aber es unterstützt nicht das intelligente Kopieren von HFS +, das ich benötige. Vielleicht unterstützt die neueste Version dies?

Als ich meinen ersten Klon erstellt habe, habe ich alle Partitionen außer HFS + erstellt und es ging sehr schnell. (Nicht mehr als 3 Stunden insgesamt)

60
Kaz Wolfe

Meiner Erfahrung nach gibt es in der Befehlszeile nicht etwas Schnelleres als dd. Durch Anpassen des Parameters bs kann die Geschwindigkeit erhöht werden. Ich habe beispielsweise 2 Festplatten mit einer Lese-/Schreibgeschwindigkeit von mehr als 100 MB/s.

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

Es gibt auch pv (muss zuerst installiert werden), das auf beiden Laufwerken nach der schnellsten Geschwindigkeit sucht und dann mit dem Klonen fortfährt. Dies muss natürlich von root aus erfolgen:

pv < /dev/sda > /dev/sdb

Mit PV habe ich 156 MB/s

Das Schöne an pv ist neben der Geschwindigkeit, dass es den Fortschritt, die aktuelle Geschwindigkeit, die Zeit seit dem Start und die ETA anzeigt. In Bezug auf HFS + würde ich nicht wissen, versuche nur auf dem "Speed" Teil zu helfen. Mit pv oder einem sehr optimierten bs Parameter können Sie eine 4 TB Fahrt in weniger als 7 Stunden (6 Stunden 50 Minuten bei einer aktuellen Geschwindigkeit von 150 MB/s) durchführen. .

enter image description here

Ich habe einige Tests mit den von Ihnen verwendeten Verbindungstypen und anderen verfügbaren durchgeführt. Ich habe das Asus Z87 Pro und das Intel DZ68DP verwendet. Dies waren meine Ergebnisse, aber zuerst müssen wir wissen, dass die theoretischen Geschwindigkeiten für viele Übertragungsraten (Raw-Geschwindigkeiten) genau das sind, Theorie. Reale Tests haben ergeben, dass sie zwischen 40% und 80% dieser Rohgeschwindigkeit liegen. Diese Tests können sich je nach verwendetem Gerät, Verbindungstyp, Motherboard, Art des Verbindungskabels, Dateisystemtyp usw. ändern. In diesem Sinne habe ich Folgendes erhalten (ich habe nur die Schreibgeschwindigkeit für das Gerät getestet, das Lesen ist normalerweise höher):

Connected Device  -  Connection Type  -  Speed (Write Speed)
  USB 2.0                 USB 2.0              25 MB/s
  USB 3.0                 USB 2.0              35 MB/s
  USB 3.0                 USB 3.0              73 MB/s
  eSata                   eSata                80 MB/s
  Sata 2G HDD             Sata 2G              120 MB/s
  Sata 3G HDD             Sata 2G              140 MB/s
  Sata 3G HDD             Sata 3G              190 MB/s
  Sata 2G SDD             Sata 2G              170 MB/s
  Sata 3G SDD             Sata 2G              210 MB/s
  Sata 3G SDD             Sata 3G              550 MB/s 
67
Luis Alvarado

Das Problem ist Ihr Verbindungstyp und die Blockgröße. Für die schnellsten Ergebnisse sollte Ihre Blockgröße die Hälfte der niedrigsten Schreibgeschwindigkeit sein, die Sie normalerweise erhalten. Dies gibt Ihnen einen sicheren Spielraum, lässt aber dennoch eine große Anzahl zu; Natürlich müssen Sie genug RAM haben, um die Daten auch zu halten.

USB 2.0 ist 12 Megabit pro Sekunde (Mbit/s), USB 2.0 High Speed ​​ist 480 Mbit/s. Das ist natürlich die rohe Geschwindigkeit; Bei 8 Bits in einem Byte und Framing-Overhead ist die nutzbare Geschwindigkeit in MB/s normalerweise eine Dezimalstelle höher. So werden zum Beispiel 480 RAW 48 MB nutzbar. Denken Sie daran, dass dies das mathematisch beste ist, in der realen Welt wird es ein bisschen niedriger sein. Für USB 2.0-Hochgeschwindigkeitsverbindungen sollten Sie mit einer maximalen Schreibgeschwindigkeit von 30-35 MB rechnen, vorausgesetzt, das tatsächliche Speichergerät kann die Verbindungsgeschwindigkeiten erreichen oder übertreffen.

12
Fellow

Verwenden Sie zum Kopieren einer Partition im Großhandel cat ANSTELLE VON dd. Ich habe Benchmarks vor einiger Zeit ausgeführt und eine große Datei anstatt einer Partition zwischen zwei Festplatten kopiert (auf derselben Festplatte sind die relativen Timings unterschiedlich):

dd bs=64M    51.3
dd bs=1M     41.8
dd bs=4k     48.5
dd bs=512    48.9
cat          41.7
cp           45.3

Die Schlussfolgerung aus diesem Benchmark ist, dass die Auswahl der Blockgröße für dd wichtig ist (aber nicht so wichtig), und cat findet automatisch den besten Weg, um eine schnelle Kopie zu erstellen: dd kann Sie nur verlangsamen. Bei einer kleinen Blockgröße verschwendet dd Zeit damit, winzige Lese- und Schreibvorgänge zu vermeiden. Bei einer großen Blockgröße bleibt eine Festplatte im Leerlauf, während die andere liest oder schreibt. Die optimale Rate wird erreicht, wenn eine Festplatte liest, während die andere schreibt.

Um eine Partition zu kopieren, ist es möglicherweise schneller, die Dateien mit cp -a zu kopieren. Dies hängt davon ab, wie viele Dateien vorhanden sind und wie viel Speicherplatz im Dateisystem frei ist. Das Kopieren von Dateien hat einen Overhead, der in etwa proportional zur Anzahl der Dateien ist, aber das Kopieren von freiem Speicherplatz kostet Zeit.

Die maximale Datenrate für USB2 liegt bei etwas unter 50 MB/s, was 6 bis 7 Stunden für die Übertragung von 1 TB entspricht. Dies setzt eine Festplatte voraus, die schnell genug ist, um den USB-Bus zu überlasten. Ich denke, die schnelleren Laufwerke mit 7200 U/min können das, aber 5900 U/min sind möglicherweise nicht so schnell (vielleicht sind sie für lineare Schreibvorgänge?).

Wenn eine der Festplatten gleichzeitig verwendet wird, kann dies den Kopiervorgang erheblich verlangsamen, da sich die Festplattenköpfe bewegen müssen.

12
Gilles

Ich bin damit einverstanden, dass die rohe Geschwindigkeit eines gut abgestimmten dd ('pv') - oder 'cat' -Befehls schwer zu übertreffen ist, aber wenn es ein Problem mit der Kopie gibt (fehlerhafter Sektor, Stromausfall, Benutzerfehler usw.) dann musst du von vorne anfangen.

Ich würde gerne vorschlagen ddrescue - ein FOSS-Tool, das die Geschwindigkeit von dd hat, aber Festplattenfehler umgeht und zu einem späteren Zeitpunkt fortgesetzt wird, wenn ein Fehler auftritt.

5
dan_linder

Ich habe Windows 7 von einer Festplatte auf eine SSD verschoben und diese und einige andere Antworten gefunden ... Etwas, das ich gelernt habe und das anderen helfen könnte. In meinem Fall ist das Quelllaufwerk größer, sonst hätte ich auf der Geräteebene/dev/sda ->/dev/sdb gearbeitet.

Win7 und seine 3 Partitionen ... Ich habe Xbuntu 14.04 Live-CD auf einem USB verwendet. Nehmen Sie die DVD des Win-Computers heraus und setzen Sie die SSD ein. Partclone installiert und ausprobiert:

partclone.ntfs -b -N -s /dev/sda3 -o /dev/sdb3

Partclone kotzte auf den ntfs, die unter Windows chkdisk benötigen, so dass partclone mit einer schnellen Lösung glücklich wurde:

ntfsfix -b /dev/sda3
ntfsfix -d /dev/sda3

Alle Befehle werden als root ausgeführt. Die ncurses-Benutzeroberfläche von Partclone (Option -N) gab an, dass die Übertragung 7 GB/min und 5 GB/min betrug, was 83 MB/s entspricht. Der große Teil ist, dass partclone nicht ungenutzten Speicherplatz kopiert. Dadurch wurde der Klon bemerkenswert schnell.

Zusätzliche mögliche Fallstricke:

  • wenn das Laufwerk, auf das Sie übertragen, zuvor verwendet wurde, weist es möglicherweise Reste einer GPT auf. Bei Windows 7-Werksinstallationen handelt es sich normalerweise um MSDOS/MSB-Partitionstabellen. Sie müssen die GPT-Fragmente vom Ziellaufwerk entfernen. Dies nix & Linux QA hat mir dabei geholfen. Sie müssen gdisk auf dem Gerät verwenden, x, dann z und yes verwenden, um GPT-Daten zu zappen und sicherzustellen, dass Sie den MBR BEWAHREN.

  • Und vergessen Sie nicht, dass Sie den MBR mithilfe von kopieren müssen, wenn Sie keine Geräteebene dd ausführen
    dd if=/dev/sdb of=/dev/sda bs=446 count=1
    wobei sdb Quelle oder altes Laufwerk und sda Ziel oder neues Laufwerk ist ( Quelle )

2
Chris K

Ich habe kürzlich ein Image einer 100-GB-Partition (HDD) erstellt und auf die neue SSD-Festplatte geschrieben.

Hier ist ein Tipp, der den Prozess drastisch beschleunigen kann:)

Datei in kleinere Teile aufteilen (je größer die Datei ist, desto langsamer funktioniert sie)

Sudo dd if=/dev/sda3 conv=sync,noerror bs=2M | split -a 3 -d -b 1G - /maindisk.img

Während des Vorgangs können Sie die Geschwindigkeit mit (in separatem Terminal) überprüfen.

pgrep -l '^dd$' #to find PROCESSID
kill -USR1 PROCESSID #to check the speed

Wenn Sie dann ein Verzeichnis mit Ergebnisdateien (maindisk.img000, maindisk.img001 usw.) haben, verwenden Sie

Sudo cat maindisk.img* | Sudo dd of=/dev/sda1

das Image in die neue Partition der SSD 'brennen' (Partition muss die gleiche Größe haben wie die alte)

Für mich hat es ein bisschen schneller geklappt als sonst (ohne zu splitten). Die durchschnittliche Geschwindigkeit zum Erstellen des Bildes betrug ~ 13 MB/s. Wenn ich die 'normale' Art verwende, beginnt es mit ~ 15MB/s und geht dann auf 1MB/s zurück.

1
matowc1991

Für alle, die diesen Thread finden, ist es viel einfacher und schneller, nur ein Tool für die Datenwiederherstellung zu verwenden, wie ddrescue. Bei Lesefehlern wird zunächst versucht, die guten Teile zu retten. Sie können die Rettung auch jederzeit unterbrechen und später an derselben Stelle fortsetzen.

Führe es zweimal aus:

Kopieren Sie in der ersten Runde jeden Block ohne Lesefehler und protokollieren Sie die Fehler in rescue.log.

Sudo ddrescue -f -n /dev/sdX /dev/sdY rescue.log

Kopieren Sie in der zweiten Runde nur die fehlerhaften Blöcke und versuchen Sie dreimal, aus der Quelle zu lesen, bevor Sie aufgeben.

Sudo ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log

Jetzt können Sie das neue Laufwerk einbinden und das Dateisystem auf Beschädigungen überprüfen.

Mehr Info:
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html

0
goetzc

Verwenden Sie eine andere Blockgröße. Es ist die Datenmenge, die dd gleichzeitig liest. Wenn zu wenig gelesen wird, wird ein größerer Teil der Zeit für die Programmlogik aufgewendet, und wenn zu viel gelesen wird, wird viel Zeit für das Verschieben der großen Daten aufgewendet.

Verwenden Sie das folgende bash -Skript, um die Geschwindigkeit bei verschiedenen Blockgrößen zu messen:

  • setzen Sie $dev auf das Gerät
  • fixieren Sie cbtotal auf mindestens das 5-fache Ihrer erwarteten Lesegeschwindigkeit
    (set -o errexit; skip=0; cbtotal=$((120*1024**2)); bs=256;
    for power in `seq 10`; do
      bs=$((bs*2)); skip=$((skip/2)); count=$((cbtotal/bs));
      if [ "$count" -lt 1 ]; then break; fi;
      echo $bs;
      dd if=$dev of=/dev/null skip=$skip bs=$bs count=$count
      skip=$((skip+count))
    done)

Das Ergebnis kann aufgrund des bevorstehenden Lesens des Datenträgers in Richtung einer größeren Größe verzerrt sein - daher ist es wichtig, cbtotal groß genug einzustellen.

0
ivan_pozdeev

Ich würde empfehlen, die Eingabe/Lesedatei/Festplatte auf SATA zu speichern, um die Lesegeschwindigkeit zu erhöhen. Die USB 2.0 High Speed ​​ist auch gut, da ich durchschnittliche Geschwindigkeiten von 33816 kb/s mit ddrescue im Vergleich zu den Einstellung war USB 2.0 zu SATA bei 2014 kb/s

0
NateNjugush