wydajność dd w systemie Mac OS X vs. Linux

18

Próbowałem skopiować iso instalatora systemu Windows na dysk twardy, aby uniknąć wypalenia dysku. Najpierw wypróbowałem funkcję przywracania Narzędzia dyskowego, jednak z jakiegoś powodu nie podoba jej się ISO. Następnie spróbowałem użyć dd:

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

Uświadomiłem sobie, że kopiuje plik w tempie ślimaka, około 160 KB / s. Ponownie uruchomiłem instalację Linuksa i ponownie uruchomiłem polecenie, prawie dosłownie:

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

Tym razem polecenie wykonano w niecałą minutę, ze średnią prędkością 57 MB / s. W obu przypadkach źródłem i miejscem docelowym były te same fizyczne dyski twarde. Co się dzieje?

Używam OSX 10.7.3 i Linux 2.6.38-13.

charliehorse55
źródło
1
Hmm, spodziewałbym się, że Linux będzie działał równie wolno bez bsparametru. Czy masz alias do ddinstalacji aliasw systemie Linux (wpisz polecenie)?
Paul

Odpowiedzi:

28

W przypadku OS X użyj /dev/rdisk3.

Z jakiegoś powodu rdiskjest szybszy niż disk. Uważam, że ma to związek z buforami.

Również ogólnie używanie bsflagi z ddpomocą przy prędkości.

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

Rozmiar bajtu to 1M, który przesyła się szybciej. W OS X musisz używać 1m(małe litery) zamiast 1M.

agz
źródło
Dziękuję Ci ! Zapomniałem dodać bs=1mi było powolne jak diabli!
LoremIpsum
4
Komentarz na temat małych liter m w OS X był ratownikiem. Dziękuję Ci bardzo!
Jonathan Komar
0

Surowe dyski BSD

BSD ogólnie mają 2 typy urządzeń dyskowych: buforowanie i niebuforowane (surowe). Ze strony podręcznika 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, ...

Z powodu drugiego akapitu dysk musi zostać odmontowany, aby można było ddz niego korzystać w „trybie surowym”.

dd rozmiar bloku

Ze dd(1)strony podręcznika:

     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.

Domyślny rozmiar bloku to 512 bajtów ...

minusf
źródło