desempenho do dd no Mac OS X vs. Linux

18

Eu estava tentando copiar uma iso do instalador do Windows em um disco rígido para evitar a gravação de um disco. Tentei pela primeira vez a função de restauração do Disk Utility, no entanto, por algum motivo, ele não gostou do ISO. Então eu tentei usar o dd:

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

Percebi que estava copiando o arquivo no ritmo de um caracol, cerca de 160 KB / s. Reiniciei a instalação do linux e executei o comando novamente quase literalmente:

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

Desta vez, o comando foi executado em menos de um minuto, com uma velocidade média de 57 MB / s. Nos dois casos, a origem e o destino foram os mesmos discos rígidos físicos. O que está acontecendo?

Estou executando o OSX 10.7.3 e Linux 2.6.38-13.

charliehorse55
fonte
1
Hmm, eu esperaria que o Linux fosse tão lento sem um bsparâmetro. Você tem um alias para ddconfiguração no linux (digite aliasem um prompt)?
Paul

Respostas:

28

Para o OS X, use /dev/rdisk3.

Por alguma razão rdiské mais rápido que disk. Eu acredito que tem a ver com buffers.

Também em geral, usando a bsbandeira com ddajuda com velocidade.

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

O tamanho do bytes é de 1 milhão, que é transferido mais rapidamente. No OS X, você precisa usar 1m(letras minúsculas) em vez de 1M.

agz
fonte
Obrigado ! Eu tinha esquecido de adicionar bs=1me foi lento como o inferno!
precisa
4
O comentário sobre o m minúsculo no OS X foi um salva-vidas. Muito obrigado!
Jonathan Komar 28/02
0

Discos brutos BSD

Os BSDs em geral têm 2 tipos de dispositivos de disco: bufferend e sem buffer (bruto). Na hdutil(1)página do 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, ...

Por causa do segundo parágrafo, o disco deve ser desmontado para poder usá dd-lo no "modo bruto".

dd tamanho do bloco

Na dd(1)página do 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.

O tamanho do bloco padrão é 512 bytes ...

minusf
fonte