Cách nhanh nhất để sao chép một tập tin thưa thớt là gì? Phương pháp nào dẫn đến tập tin nhỏ nhất?


10

ĐẶT VẤN ĐỀ : Tôi đang sao chép một hình ảnh VM qcow2 thưa thớt có kích thước 200 GB, nhưng có 16 GB khối được phân bổ. Tôi đã thử nhiều phương pháp khác nhau để sao chép tệp thưa thớt này trong cùng một máy chủ và có một số kết quả sơ bộ. Môi trường là RHEL 6.6 hoặc CentOS 6.6 x64.

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

Qua cp - tốc độ tốt nhất

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) 

Qua dd - trình diễn tổng thể tốt nhất

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)

Qua 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)

Qua 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)

Qua virt-sparsify - kích thước tốt nhất

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

Thay đổi khối kích thước

Tôi đã lo lắng về 'sự phình to' trong khi sao chép dd (tăng kích thước tệp so với bản gốc), vì vậy tôi đã thay đổi kích thước khối. Tôi đã sử dụng 'thời gian' để lấy tổng thời gian và% CPU. Tệp gốc trong trường hợp này là tệp 200 GB thưa thớt 7,3 GB:

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

HỎI : Bạn có thể xác minh rằng tôi đã xác định các phương pháp tốt nhất để sao chép một tệp thưa thớt để có hiệu suất tổng thể tốt nhất không? Bất kỳ đề xuất nào về cách làm điều này tốt hơn đều được hoan nghênh vì đó là bất kỳ mối quan tâm nào của bạn với các phương pháp tôi đang sử dụng.


Người khác duy nhất tôi thử, với những nỗ lực đáng khen ngợi của bạn, là rsync với tùy chọn - thưa. Cũng có thể kích thước khối khác nhau trong dd sẽ cải thiện tốc độ hoặc phình to của nó.
mpez0

tar cũng là một thứ tốt để thử
Olivier Dulac

@OlivierDulac Tôi đã thử tar, nhưng trình diễn này quá tệ đến nỗi tôi thậm chí không bao gồm nó. Tôi cần phải có. Trên đây là các bản sao địa phương. Tôi sẽ thêm dữ liệu hiệu suất sao chép mạng cho mạng 10Gbps, sao chép trong cùng một mạng con. Khi tôi đã có được điều đó, tôi nghĩ rằng tôi sẽ có đủ dữ liệu để đưa ra một kết luận khả thi, đó là hiệu suất tổng thể tốt nhất.
Steve Amerige 6/2/2015

rsync cũng hỗ trợ - thưa thớt khi thực hiện kiểu sao chép này. Bạn có thể muốn thử điều đó. Cũng có thêm lợi ích của việc có thể đo lường được trên cả sao chép cục bộ và qua mạng.
Travis Campbell

@TravisCampbell Tôi đã thêm dữ liệu cho rsync. Đó là màn trình diễn tệ nhất trong tất cả các bài kiểm tra tôi đã chạy.
Steve Amerige

Câu trả lời:


5

Từ điểm chuẩn ở trên, có vẻ như việc sử dụng dd trên phần cứng mục tiêu của chúng tôi với kích thước khối là 64K mang lại cho chúng tôi kết quả tổng thể tốt nhất khi xem xét thời gian sao chép và phình to:

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

2
Xin chào Steve, xin vui lòng chia thành câu hỏi một câu trả lời, đây là cách các trang web stackexchange hoạt động.
bummi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.