CONTEXTE : je copie une image VM qcow2 clairsemée de 200 Go, mais avec 16 Go de blocs alloués. J'ai essayé différentes méthodes pour copier ce fichier clairsemé sur le même serveur et obtenir des résultats préliminaires. L'environnement est RHEL 6.6 ou CentOS 6.6 x64.
ls -lhs srcFile
16G -rw-r--r-- 1 qemu qemu 201G Feb 4 11:50 srcFile
Via cp - meilleure vitesse
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 - meilleure performance globale
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)
Via 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)
Via 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)
Via virt-sparsify - meilleure taille
virt-sparsify srcFile dstFile
Copied 200GB max/16GB actual VM as 200GB max/16GB actual, bloat: 0
Copy time: 17:37 (mm:ss)
Varier la taille des blocs
J'étais préoccupé par le 'ballonnement' lors de la copie dd (augmentation de la taille du fichier par rapport à l'original), j'ai donc varié la taille du bloc. J'ai utilisé le «temps» pour obtenir également le temps total et le% CPU. Dans ce cas, le fichier d'origine est un fichier clairsemé de 7,3 Go: 200 Go:
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
QUESTION : Pouvez-vous vérifier que j'ai identifié les meilleures méthodes de copie d'un fichier fragmenté pour obtenir les meilleures performances globales? Toutes les suggestions sur la façon de mieux le faire sont les bienvenues, tout comme les préoccupations que vous pourriez avoir avec les méthodes que j'utilise.