스파 스 파일을 복사하는 가장 빠른 방법은 무엇입니까? 가장 작은 파일의 결과는 무엇입니까?


11

배경 : 200GB 크기이지만 16GB의 할당 된 블록이있는 희소 qcow2 VM 이미지를 복사하고 있습니다. 이 스파 스 파일을 동일한 서버 내에서 복사하기 위해 다양한 방법을 시도했으며 예비 결과가 있습니다. 환경은 RHEL 6.6 또는 CentOS 6.6 x64입니다.

ls -lhs srcFile 
16G -rw-r--r-- 1 qemu qemu 201G Feb  4 11:50 srcFile

cp를 통해-최고 속도

cp --sparse=always srcFile dstFile
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 1:02 (mm:ss) 

Via dd-전체적으로 최고의 공연자

dd if=srcFile of=dstFile iflag=direct oflag=direct bs=4M conv=sparse
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/21GB actual, bloat: 5GB
    Copy time: 2:02 (mm:ss)

cpio를 통해

mkdir tmp$$
echo srcFile | cpio -p --sparse tmp$$; mv tmp$$/srcFile dstFile
rmdir tmp$$
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 9:26 (mm:ss)

rsync를 통해

rsync --ignore-existing -aS srcFile dstFile
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 24:49 (mm:ss)

virt-sparsify를 통해-최고의 크기

virt-sparsify srcFile dstFile
    Copied 200GB max/16GB actual VM as 200GB max/16GB actual, bloat: 0
    Copy time: 17:37 (mm:ss)

다양한 블록 크기

dd 복사 중 '부풀림'(파일 크기가 원본보다 증가)에 대해 걱정했기 때문에 블록 크기를 변경했습니다. '시간'을 사용하여 총 시간과 CPU %도 얻었습니다. 이 경우 원본 파일은 7.3GB 스파 스 200GB 파일입니다.

4K:   5:54.64, 56%, 7.3GB
8K:   3:43.25, 58%, 7.3GB
16K:  2:23.20, 59%, 7.3GB
32K:  1:49.25, 62%, 7.3GB
64K:  1:33.62, 64%, 7.3GB
128K: 1:40.83, 55%, 7.4GB
256K: 1:22.73, 64%, 7.5GB
512K: 1:44.84, 74%, 7.6GB
1M:   1:16.59, 70%, 7.9GB
2M:   1:21.58, 66%, 8.4GB
4M:   1:17.52, 69%, 9.5GB
8M:   1:10.92, 76%, 12GB
16M:  1:17.09, 78%, 16GB
32M:  2:54.10, 90%, 22GB

질문 : 최고의 성능을 얻기 위해 스파 스 파일을 복사하는 가장 좋은 방법을 찾았는지 확인할 수 있습니까? 더 나은 방법에 대한 제안은 내가 사용하는 방법에 대한 우려와 마찬가지로 환영합니다.


당신의 훌륭한 노력을 감안할 때 내가 시도한 유일한 것은 --sparse 옵션과의 rsync입니다. dd의 다른 블록 크기가 속도 나 팽창을 개선 할 수도 있습니다.
mpez0

타르도 시도해
볼만한

@OlivierDulac 나는 tar를 시도했지만, 나는 그것을 포함하지 않은 공연자가 너무 나빴습니다. 내가해야합니다. 위는 로컬 사본입니다. 10Gbps 네트워크에 대한 네트워크 복사 성능 데이터를 추가하여 동일한 서브넷에 복사합니다. 일단 그것을 얻은 후에는 전체적으로 최고의 성과를내는 실행 가능한 결론을 도출하기에 충분한 데이터가 있다고 생각합니다.
Steve Amerige

rsync는 이러한 스타일의 복사를 수행하기 위해 --sparse도 지원합니다. 시도해 볼 수 있습니다. 또한 로컬 및 네트워크를 통한 복사 모두에서 측정 할 수 있다는 추가 이점이 있습니다.
트래비스 캠벨

@TravisCampbell rsync에 대한 데이터를 추가했습니다. 내가 실행 한 모든 테스트 중 최악의 성능이었습니다.
Steve Amerige 12

답변:


5

위의 벤치마킹에서 64K의 블록 크기로 대상 하드웨어에서 dd를 사용하는 것처럼 보이면 복사 시간과 부풀림을 고려할 때 최상의 전체 결과를 얻을 수 있습니다.

dd if=srcFile of=dstFile iflag=direct oflag=direct bs=64K conv=sparse

2
안녕하세요 Steve, 질문에 답을 나누십시오. 이것은 stackexchange 사이트의 작동 방식입니다.
bummi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.