dd rendimiento en Mac OS X frente a Linux

dd rendimiento en Mac OS X frente a Linux

Estaba intentando copiar una ISO del instalador de Windows en un disco duro para evitar quemar el disco. Primero probé la función de restauración de la Utilidad de Discos, sin embargo, por alguna razón no me gustó la ISO. Luego intenté usar dd:

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

Me di cuenta de que estaba copiando el archivo a paso de tortuga, aproximadamente 160 KB/seg. Reinicié mi instalación de Linux y ejecuté el comando nuevamente, casi palabra por palabra:

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

Esta vez el comando se ejecutó en menos de un minuto, con una velocidad promedio de 57 MB/seg. En ambos casos, el origen y el destino eran los mismos discos duros físicos. ¿Qué está sucediendo?

Estoy ejecutando OSX 10.7.3 y Linux 2.6.38-13.

Respuesta1

Para OS X, utilice /dev/rdisk3.

Por alguna razón rdiskes más rápido que disk. Creo que tiene que ver con los amortiguadores.

Además, en general, usar la bsbandera ddayuda con la velocidad.

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

El tamaño de bytes es 1M, lo que se transfiere más rápido. En OS X tienes que usar 1m(minúsculas) en lugar de 1M.

Respuesta2

discos BSD sin formato

Los BSD en general tienen 2 tipos de dispositivos de disco: con búfer y sin búfer (sin formato). Desde la hdutil(1)página de 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, ...

Debido al segundo párrafo, el disco debedesmontadopara poder usarlo dden "modo crudo".

dd tamaño de bloque

Desde dd(1)la página de 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.

El tamaño de bloque predeterminado es 512 bytes...

información relacionada