LATAR BELAKANG : Saya menyalin gambar VM qcow2 yang jarang yang berukuran 200GB, tetapi memiliki alokasi blok 16GB. Saya sudah mencoba berbagai metode untuk menyalin file jarang ini dalam server yang sama dan memiliki beberapa hasil awal. Lingkungan adalah RHEL 6.6 atau CentOS 6.6 x64.
ls -lhs srcFile
16G -rw-r--r-- 1 qemu qemu 201G Feb 4 11:50 srcFile
Via cp - kecepatan terbaik
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 - pemain terbaik secara keseluruhan
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)
Melalui 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)
Melalui 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)
Melalui virt-sparsify - ukuran terbaik
virt-sparsify srcFile dstFile
Copied 200GB max/16GB actual VM as 200GB max/16GB actual, bloat: 0
Copy time: 17:37 (mm:ss)
Memvariasikan Ukuran Blok
Saya khawatir tentang 'mengasapi' selama menyalin dd (ukuran file meningkat dari aslinya), jadi saya memvariasikan ukuran blok. Saya menggunakan 'waktu' untuk mendapatkan total waktu dan CPU%. File asli dalam kasus ini adalah file 200GB jarang 7,3GB:
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
PERTANYAAN : Dapatkah Anda memverifikasi bahwa saya telah mengidentifikasi metode terbaik untuk menyalin file jarang untuk mendapatkan kinerja keseluruhan terbaik? Setiap saran tentang cara melakukan ini dengan lebih baik disambut seperti kekhawatiran Anda mungkin dengan metode yang saya gunakan.
sumber
Jawaban:
Dari pembandingan di atas, sepertinya menggunakan dd pada perangkat keras target kami dengan ukuran 64K memberi kami hasil keseluruhan terbaik mengingat waktu salin dan mengasapi:
sumber