kinerja dd di Mac OS X vs Linux

18

Saya mencoba untuk menyalin iso dari installer windows ke hard drive untuk menghindari membakar disk. Saya pertama kali mencoba fungsi pemulihan Disk Utility, namun tidak menyukai ISO karena beberapa alasan. Lalu saya mencoba menggunakan dd:

dd if=/path/to/image.iso of=/dev/disk3

Saya menyadari itu menyalin file dengan kecepatan siput, sekitar 160 KB / detik. Saya reboot ke instalasi linux saya dan menjalankan perintah lagi, hampir kata demi kata:

dd if=/path/to/image.iso of=/dev/sdc

Kali ini perintah dijalankan dalam waktu kurang dari satu menit, dengan kecepatan rata-rata 57 MB / detik. Dalam kedua kasus sumber dan tujuan adalah hard drive fisik yang sama. Apa yang sedang terjadi?

Saya menjalankan OSX 10.7.3 dan Linux 2.6.38-13.

charliehorse55
sumber
1
Hmm, saya berharap linux akan berjalan lambat tanpa bsparameter. Apakah Anda memiliki alias untuk ddpengaturan di linux (ketikkan aliaspada prompt)?
Paul

Jawaban:

28

Untuk OS X, gunakan /dev/rdisk3.

Untuk beberapa alasan rdisklebih cepat daripada disk. Saya percaya ini ada hubungannya dengan buffer.

Juga secara umum menggunakan bsbendera dengan ddbantuan kecepatan.

dd if=/path/to/image.iso of=/dev/sdc bs=1M

Bytesize adalah 1M yang mentransfer lebih cepat. Pada OS X Anda harus menggunakan 1m(huruf kecil) alih-alih 1M.

agz
sumber
Terima kasih ! Saya lupa menambahkan bs=1mdan lambat sekali!
LoremIpsum
4
Komentar tentang huruf kecil pada OS X adalah penyelamat. Terima kasih banyak!
Jonathan Komar
0

Disk baku BSD

BSD pada umumnya memiliki 2 tipe perangkat disk: bufferend dan unbuffered (raw). Dari hdutil(1)halaman manual:

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, ...

Karena paragraf ke-2, disk harus dilepas untuk dapat menggunakannya dddi dalam "mode mentah".

dd blocksize

Dari dd(1)halaman manual:

     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.

Blocksize default adalah 512 byte ...

minusf
sumber