dd performance su Mac OS X vs. Linux


18

Stavo cercando di copiare un iso del programma di installazione di Windows su un disco rigido per evitare di masterizzare un disco. Per prima cosa ho provato la funzione di ripristino di Utility Disco, ma per qualche motivo non è piaciuta la ISO. Quindi ho provato ad usare dd:

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

Mi sono reso conto che stava copiando il file a passo di lumaca, circa 160 KB / sec. Ho riavviato la mia installazione di Linux ed ho eseguito nuovamente il comando, quasi alla lettera:

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

Questa volta il comando è stato eseguito in meno di un minuto, con una velocità media di 57 MB / sec. In entrambi i casi, l'origine e la destinazione erano gli stessi dischi rigidi fisici. Cosa sta succedendo?

Sto eseguendo OSX 10.7.3 e Linux 2.6.38-13.


1
Hmm, mi aspetterei che quello di Linux proceda altrettanto lentamente senza un bsparametro. Hai un alias per l' ddinstallazione su Linux (digita aliasal prompt)?
Paul,

Risposte:


28

Per OS X, utilizzare /dev/rdisk3.

Per qualche motivo rdiskè più veloce di disk. Credo che abbia a che fare con i buffer.

Anche in generale l'utilizzo della bsbandiera ddaiuta con la velocità.

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

Il bytesize è 1M che trasferisce più velocemente. Su OS X devi usare 1m(lettere minuscole) invece di 1M.


Grazie ! Mi ero dimenticato di aggiungere bs=1med era lento da morire!
LoremIpsum,

4
Il commento sulla m minuscola su OS X è stato un vero toccasana. Grazie mille!
Jonathan Komar,

0

Dischi grezzi BSD

I BSD in generale hanno 2 tipi di dispositivi a disco: bufferend e senza buffer (non elaborati). Dalla hdutil(1)pagina 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, ...

A causa del secondo paragrafo, il disco deve essere smontato per poterlo utilizzare ddin "modalità raw".

dd blockize

Dalla dd(1)pagina 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.

La dimensione di blocco predefinita è 512 byte ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.