dd if = / dev / hda of = / dev / hdb를 수행하면 깊은 하드 드라이브 복사가 수행된다는 것을 알고 있습니다. 사람들은 "bs"옵션을 사용하여 한 번에 읽고 쓰는 바이트 수 (512)를 늘려 프로세스 속도를 높일 수 있다고 들었습니다.
내 질문은 :
하드 드라이브에서 복사하기위한 이상적인 바이트 크기는 무엇입니까?
과
이것이 이상적인 바이트 크기를 결정하는 이유는 무엇입니까?
dd if = / dev / hda of = / dev / hdb를 수행하면 깊은 하드 드라이브 복사가 수행된다는 것을 알고 있습니다. 사람들은 "bs"옵션을 사용하여 한 번에 읽고 쓰는 바이트 수 (512)를 늘려 프로세스 속도를 높일 수 있다고 들었습니다.
내 질문은 :
하드 드라이브에서 복사하기위한 이상적인 바이트 크기는 무엇입니까?
과
이것이 이상적인 바이트 크기를 결정하는 이유는 무엇입니까?
답변:
Chris 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
/dev/zero
이 생성되므로 디스크에서 읽을 필요가 없습니다. 당신은 할 수 dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile
@ 올리비에 - dulac 잘, dd
이미 속도를 인쇄; 나는 생각하지 않는다 time
(또는 /usr/bin/time
) 정보의 가치를 추가 할 수 있습니다.
불행히도 완벽한 크기는 시스템 버스, 하드 드라이브 컨트롤러, 특정 드라이브 자체 및 각 드라이버에 따라 다릅니다. 완벽한 크기를 찾는 유일한 방법은 다른 크기를 계속 시도하는 것입니다. 일부 장치는 하나의 블록 크기 만 지원하지만 이는 드물지만 일반적으로 드라이버가 차이를 구성한다는 경고입니다.
2 ^ 15 또는 2 ^ 16의 블록 크기는 Adaptec SAS RAID 컨트롤러, 4x PCIe, 64 비트 FreeBSD 8.0-STABLE에 연결된 WDC (8mb 캐시) SATA 드라이브에 가장 적합합니다. 그러나 저렴하고 오래된 썸 드라이브의 경우 2 ^ 10 크기가 가장 빠릅니다.
"완벽한 크기"는 거의 항상 2의 거듭 제곱입니다.