rendimiento de dd en Mac OS X vs. Linux

18

Estaba tratando de copiar una iso del instalador de Windows en un disco duro para evitar grabar un disco. Primero probé la función de restauración de la Utilidad de Discos, sin embargo, no me gustó el ISO por alguna razón. 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, a unos 160 KB / seg. Reinicié mi instalación de Linux y ejecuté el comando nuevamente, casi textualmente:

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. ¿Que esta pasando?

Estoy ejecutando OSX 10.7.3 y Linux 2.6.38-13.

charliehorse55
fuente
1
Hmm, esperaría que el Linux fuera igual de lento sin un bsparámetro. ¿Tiene un alias para la ddconfiguración en Linux (escriba aliasen un indicador)?
Paul

Respuestas:

28

Para OS X, use /dev/rdisk3.

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

También, en general, usar la bsbandera con ddayuda con la velocidad.

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

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

agz
fuente
Gracias ! ¡Me había olvidado de agregar bs=1my fue lento como el infierno!
LoremIpsum
44
El comentario sobre la m minúscula en OS X fue un salvavidas. ¡Muchas gracias!
Jonathan Komar
0

BSD discos crudos

Los BSD en general tienen 2 tipos de dispositivos de disco: bufferend y unbuffer (sin procesar). Desde la hdutil(1)página del 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 debe desmontarse para poder usarlo dden "modo sin formato".

dd blockize

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

menos
fuente