Mac OS X 및 Linux에서의 dd 성능 속도로 약

디스크 굽기를 피하기 위해 Windows Installer의 ISO를 하드 드라이브에 복사하려고했습니다. 디스크 유틸리티의 복원 기능을 먼저 시도했지만 어떤 이유로 ISO를 좋아하지 않았습니다. 그런 다음 dd를 사용해 보았습니다.

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

파일이 달팽이 속도로 약 160KB / 초로 복사되고 있음을 깨달았습니다. 나는 리눅스 설치로 재부팅하고 명령을 다시 실행했다.

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

이번에는 명령이 1 분 안에 실행되었으며 평균 속도는 57MB / 초입니다. 두 경우 모두 소스와 대상은 동일한 물리적 하드 드라이브였습니다. 무슨 일이야?

OSX 10.7.3 및 Linux 2.6.38-13을 실행 중입니다.



답변

OS X의 경우을 사용하십시오 /dev/rdisk3.

어떤 이유로 rdisk보다 빠릅니다 disk. 버퍼와 관련이 있다고 생각합니다.

또한 일반적으로 bs플래그를 사용 dd하면 속도에 도움이됩니다.

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

바이트 크기는 1M이며 더 빠르게 전송됩니다. OS X에서는 1m대신 (소문자) 를 사용해야 1M합니다.


답변

BSD 원시 디스크

BSD에는 일반적으로 2 개의 디스크 장치 유형이 있습니다 : bufferend 및 unbuffered (raw). 로부터 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, ...

두 번째 단락으로 인해 “원시 모드”에서 디스크 를 사용할 수 있도록 디스크를 마운트 해제 해야합니다 dd.

dd 블록 크기

에서 dd(1)매뉴얼 페이지

     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 바이트입니다.


답변