производительность на Mac OS X против Linux

18

Я пытался скопировать ISO-файл установщика Windows на жесткий диск, чтобы избежать записи диска. Сначала я попробовал функцию восстановления Дисковой утилиты, однако по какой-то причине ей не понравился ISO. Затем я попробовал использовать dd:

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

Я понял, что это копирование файла со скоростью улитки, около 160 КБ / с. Я перезагрузился в установку Linux и снова выполнил команду, почти дословно:

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

На этот раз команда выполняется менее чем за минуту со средней скоростью 57 МБ / с. В обоих случаях источником и местом назначения были одни и те же физические жесткие диски. В чем дело?

Я использую OSX 10.7.3 и Linux 2.6.38-13.

charliehorse55
источник
1
Хм, я бы ожидал, что Linux будет работать так же медленно, без bsпараметров. У вас есть псевдоним для ddустановки в Linux (введите aliasв командной строке)?
Пол

Ответы:

28

Для OS X используйте /dev/rdisk3.

По какой-то причине rdiskэто быстрее, чем disk. Я считаю, что это связано с буферами.

Также в общем случае использование bsфлага с ddподсказками по скорости.

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

Размер байта равен 1М, который передается быстрее. На OS X вы должны использовать 1m(строчные буквы) вместо 1M.

AGZ
источник
Спасибо ! Я забыл добавить, bs=1mи это было чертовски медленно!
LoremIpsum
4
Комментарий о строчной букве m на OS X был спасителем. Большое спасибо!
Джонатан Комар
0

Сырые диски BSD

Обычно BSD имеют два типа дисковых устройств: буферные и небуферизованные (необработанные). Со hdutil(1)страницы руководства :

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

Из-за 2-го абзаца диск должен быть размонтирован, чтобы иметь возможность использовать ddего в «сыром режиме».

размер блока дд

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

Размер блока по умолчанию составляет 512 байт ...

minusf
источник