dd 명령에 가장 적합한 바이트 크기를 결정하는 방법

dd 명령에 가장 적합한 바이트 크기를 결정하는 방법

dd if=/dev/hda of=/dev/hdb나는 ~을 하는 것이 ~를 한다는 것을 안다깊은 하드 드라이브 사본. 512옵션을 사용하여 한 번에 읽고 쓰는 바이트 수(기본값: ) 를 늘려 프로세스 속도를 높일 수 있었다고 들었습니다 bs.

내 질문은 다음과 같습니다

  • 하드 드라이브에서 복사할 때 이상적인 바이트 크기는 어떻게 결정됩니까?

그리고

  • 이것이 이상적인 바이트 크기를 결정하는 이유는 무엇입니까?

답변1

처럼크리스 S썼다이 답변최적의 블록 크기는 하드웨어에 따라 다릅니다. 내 경험상 항상 기본 512바이트보다 큽니다. 원시 장치로 작업하는 경우 상위 파일 시스템 구조는 아무런 영향을 미치지 않습니다. dd의 블록 크기를 '최적화'하는 데 도움이 되도록 아래 스크립트를 사용했습니다.

#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000

for bs in  1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M 
 
do
        echo "Testing block size  = $bs"
        dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
        echo ""
done
rm /var/tmp/infile /var/tmp/outfile

답변2

불행히도 완벽한 크기는 시스템 버스, 하드 드라이브 컨트롤러, 특정 드라이브 자체 및 각 드라이버에 따라 다릅니다. 완벽한 사이즈를 찾는 유일한 방법은 계속해서 다양한 사이즈를 시도해 보는 것입니다. 일부 장치는 하나의 블록 크기만 지원한다는 점을 경고합니다. 그러나 이는 드물지만 일반적으로 드라이버가 차이를 메웁니다.

저는 2^15 또는 2^16의 블록 크기가 Adaptec SAS RAID 컨트롤러, 4x PCIe, 64비트 FreeBSD 8.0-STABLE에 연결된 WDC(8mb 캐시) SATA 드라이브에 가장 적합하다는 것을 알았습니다. 하지만 내 값싼 구형 썸 드라이브의 경우 2^10 크기가 가장 빠른 것 같습니다.

"완벽한 크기"는 거의 항상 2의 거듭제곱입니다.

답변3

시간을 낭비하기 전에 사용 중인 장치에 대한 테스트를 수행한 결과를 측정할 수 있다는 장점은 보장할 수 있습니다. 나는 어리석게도 신경 쓰지 않았고 측정 후 블록 크기를 조정하여 590Gb 전송의 DD 기간을 절반으로 줄였습니다. 동일한 BS 값은 다른 캐디/드라이브 콤보를 사용하면 시간이 20%만 단축되었을 뿐입니다.

관련 정보