kvm-virtualization – 什么是复制稀疏文件的最快方法?什么方法导致最小的文件?

前端之家收集整理的这篇文章主要介绍了kvm-virtualization – 什么是复制稀疏文件的最快方法?什么方法导致最小的文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景:我正在复制一个200GB大小的稀疏qcow2 VM映像,但是它有16GB的分配块.我已经尝试了各种方法在同一服务器中复制这个稀疏文件,并有一些初步结果.环境是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)

通过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)

改变Blocksize

我担心dd复制期间的’膨胀'(文件大小从原来增加),所以我改变了块大小.我使用’time’来获得总时间和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,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

问题:您能否确认我已经确定了复制稀疏文件以获得最佳整体性能的最佳方法?如果您对我正在使用的方法可能有任何疑虑,欢迎任何关于如何做得更好的建议.

从上面的基准测试中看,在我们的目标硬件上使用dd,块大小为64K,考虑到复制时间和膨胀,我们可以得到最好的整体结果:
dd if=srcFile of=dstFile iflag=direct oflag=direct bs=64K conv=sparse

猜你在找的CentOS相关文章