dd performances sous Mac OS X vs Linux

18

J'essayais de copier une image ISO du programme d'installation de Windows sur un disque dur pour éviter de graver un disque. J'ai d'abord essayé la fonction de restauration de l'Utilitaire de disque, mais il n'aimait pas l'ISO pour une raison quelconque. Ensuite, j'ai essayé d'utiliser dd:

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

J'ai réalisé qu'il copiait le fichier à un rythme d'escargot, environ 160 Ko / sec. J'ai redémarré dans mon installation linux et exécuté à nouveau la commande, presque mot pour mot:

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

Cette fois, la commande a été exécutée en moins d'une minute, avec une vitesse moyenne de 57 Mo / sec. Dans les deux cas, la source et la destination étaient les mêmes disques durs physiques. Que se passe-t-il?

J'utilise OSX 10.7.3 et Linux 2.6.38-13.

charliehorse55
la source
1
Hmm, je m'attendrais à ce que Linux fonctionne aussi lentement sans bsparamètre. Avez-vous un alias pour l' ddinstallation sur linux (tapez aliasà l'invite)?
Paul

Réponses:

28

Pour OS X, utilisez /dev/rdisk3.

Pour une raison quelconque, rdiskc'est plus rapide que disk. Je crois que cela a à voir avec les tampons.

Également en général, l'utilisation du bsdrapeau ddaide à la vitesse.

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

Le bytesize est 1M qui transfère plus rapidement. Sous OS X, vous devez utiliser 1m(en minuscules) au lieu de 1M.

agz
la source
Merci ! J'avais oublié d'ajouter bs=1met c'était lent comme l'enfer!
LoremIpsum
4
Le commentaire sur le minuscule m sur OS X a été une bouée de sauvetage. Merci beaucoup!
Jonathan Komar
0

Disques bruts BSD

Les BSD en général ont 2 types de périphériques de disque: bufferend et non tamponnés (raw). Depuis la hdutil(1)page de manuel:

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

Du fait du 2ème paragraphe, le disque doit être démonté pour pouvoir être utilisé dddessus en "mode brut".

dd taille de bloc

Depuis la dd(1)page de manuel:

     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 taille de bloc par défaut est de 512 octets ...

minusf
la source