
Ich habe versucht, ein ISO des Windows-Installationsprogramms auf eine Festplatte zu kopieren, um das Brennen einer CD zu vermeiden. Zuerst habe ich die Wiederherstellungsfunktion des Festplatten-Dienstprogramms ausprobiert, aber aus irgendeinem Grund hat es das ISO nicht gemocht. Dann habe ich versucht, dd zu verwenden:
dd if=/path/to/image.iso of=/dev/disk3
Mir wurde klar, dass die Datei im Schneckentempo kopiert wurde, etwa 160 KB/s. Ich startete meine Linux-Installation neu und führte den Befehl fast wortwörtlich erneut aus:
dd if=/path/to/image.iso of=/dev/sdc
Diesmal wurde der Befehl in weniger als einer Minute ausgeführt, mit einer durchschnittlichen Geschwindigkeit von 57 MB/s. In beiden Fällen waren Quelle und Ziel dieselben physischen Festplatten. Was ist los?
Ich verwende OSX 10.7.3 und Linux 2.6.38-13.
Antwort1
Verwenden Sie für OS/dev/rdisk3
X.
Aus irgendeinem Grund rdisk
ist es schneller als disk
. Ich glaube, es hat mit Puffern zu tun.
Auch allgemein trägt die Verwendung der bs
Flagge dd
zur Geschwindigkeit bei.
dd if=/path/to/image.iso of=/dev/sdc bs=1M
Die Bytegröße beträgt 1 M, was die Übertragung beschleunigt. Unter OS X müssen Sie 1m
(Kleinbuchstaben) statt verwenden 1M
.
Antwort2
BSD-Raw-Festplatten
BSDs haben im Allgemeinen zwei Festplattengerätetypen: gepuffert und ungepuffert (roh). Aus der hdutil(1)
Manpage:
DEVICE SPECIAL FILES
Since any /dev entry can be treated as a raw disk image, it is worth
noting which devices can be accessed when and how. /dev/rdisk nodes
are character-special devices, but are "raw" in the BSD sense and
force block-aligned I/O. They are closer to the physical disk than
the buffer cache. /dev/disk nodes, on the other hand, are buffered
block-special devices and are used primarily by the kernel's
filesystem code.
It is not possible to read from a /dev/disk node while a filesystem
is mounted from it, ...
Aufgrund des 2. Absatzes muss die Festplatteunmontiertdd
um es im "Raw-Modus" verwenden zu können .
dd Blockgröße
Aus dd(1)
der Manpage:
Where sizes are specified, a decimal, octal, or hexadecimal number of bytes
is expected. If the number ends with a ``b'', ``k'', ``m'', ``g'', or ``w'',
the number is multiplied by 512, 1024 (1K), 1048576 (1M), 1073741824 (1G) or
the number of bytes in an integer, respectively. Two or more numbers may be
separated by an ``x'' to indicate a product.
Die Standardblockgröße beträgt 512 Bytes ...