TŁO : Kopiuję rzadki obraz maszyny wirtualnej qcow2, który ma rozmiar 200 GB, ale ma 16 GB przydzielonych bloków. Próbowałem różnych metod, aby skopiować ten rzadki plik na tym samym serwerze i uzyskać wstępne wyniki. Środowisko to RHEL 6.6 lub CentOS 6.6 x64.
ls -lhs srcFile
16G -rw-r--r-- 1 qemu qemu 201G Feb 4 11:50 srcFile
Via cp - najlepsza prędkość
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 - najlepszy wynik ogólny
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 - najlepszy rozmiar
virt-sparsify srcFile dstFile
Copied 200GB max/16GB actual VM as 200GB max/16GB actual, bloat: 0
Copy time: 17:37 (mm:ss)
Różny rozmiar bloku
Byłem zaniepokojony „wzdęciem” podczas kopiowania dd (zwiększenie rozmiaru pliku w stosunku do oryginału), więc zmieniłem rozmiar bloku. Użyłem „czasu”, aby uzyskać całkowity czas i% procesora. Oryginalny plik w tym przypadku to rzadki plik o pojemności 200 GB o pojemności 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
PYTANIE : Czy możesz zweryfikować, że zidentyfikowałem najlepsze metody kopiowania rzadkiego pliku, aby uzyskać najlepszą ogólną wydajność? Wszelkie sugestie, jak to zrobić lepiej, są mile widziane, podobnie jak wszelkie obawy dotyczące metod, których używam.
źródło
Odpowiedzi:
Z powyższego testu porównawczego wynika, że użycie dd na naszym docelowym sprzęcie o wielkości bloku 64K daje nam najlepszy ogólny wynik, biorąc pod uwagę czas kopiowania i wzdęcia:
źródło