ディスクの書き込みを回避するために、WindowsインストーラーのISOをハードドライブにコピーしようとしました。私は最初にディスクユーティリティの復元機能を試しましたが、何らかの理由でISOが好きではありませんでした。それから私はddを使ってみました:
dd if=/path/to/image.iso of=/dev/disk3
カタツムリのペース、約160 KB /秒でファイルをコピーしていることに気付きました。私は自分のLinuxインストールで再起動し、ほとんど逐語的に次のコマンドを実行しました。
dd if=/path/to/image.iso of=/dev/sdc
今回はコマンドが1分以内に実行され、平均速度は57 MB /秒でした。どちらの場合も、ソースと宛先は同じ物理ハードドライブでした。どうしたの?
OSX 10.7.3とLinux 2.6.38-13を実行しています。
OS Xの場合、/dev/rdisk3
を使用します。
何らかの理由でrdisk
はdisk
より高速です。バッファと関係があると思います。
また、一般にbs
フラグをdd
とともに使用すると、速度が向上します。
dd if=/path/to/image.iso of=/dev/sdc bs=1M
バイトサイズは1Mで、転送が速くなります。 OS Xでは、1m
ではなく1M
(小文字)を使用する必要があります。
一般に、BSDには2つのディスクデバイスタイプがあります。バッファエンドとバッファなし(raw)です。 hdutil(1)
のmanページから:
_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, ...
_
2番目の段落のため、ディスクは「-raw」モードでdd
を使用できるようにアンマウントする必要があります。
dd(1)
のmanページから:
_ 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.
_
デフォルトのブロックサイズは512バイトです...