복사하는 동안 두 개의 동일한 비희소 파일 간의 파일 크기를 비교합니다.

복사하는 동안 두 개의 동일한 비희소 파일 간의 파일 크기를 비교합니다.

KVM을 사용하여 VM을 한 호스트에서 다른 호스트로 실시간 마이그레이션하고 있습니다. 나는 이미 그렇게 하기 위해 웹 UI를 작성했습니다. 이제 진행률 표시줄을 구현하고 싶습니다.

내 생각은 마이그레이션하는 동안 소스와 대상의 디스크 파일 크기를 비교하는 것입니다.

서버1:

ls -ls /data/file.raw
858963 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

서버2:

ls -ls /data/file.raw
698543 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

이제 할당된 값을 가져와 백분율로 계산했습니다.

100 / 858963 * 698543 = 81%

괜찮은. 하지만 한 가지 문제가 있습니다.

디스크가 드물지 않습니다. 파일의 전체 크기는 1717926 blocks. 실제로는 858963 blocks할당된 것만 있습니다. 따라서 진행률 표시줄이 이미 100%에 있는 동안 실시간 마이그레이션은 여전히 ​​파일의 빈 부분을 복사하고 있습니다.

du나는 이미 and 를 사용해 보았습니다 stat.

디스크의 전송된 파일 크기만 가져오는 방법은 무엇입니까?

답변1

이미 제안된 대로 virsh migration을 사용하거나 다음에서 rsync의 스파스 파일 지원을 활용하십시오 man rsync.

-S, --sparse Try to handle sparse files efficiently so they take up less space on the destination.

진행 상황과 속도를 보려면 rsync -ahHS추가해 보세요 .-P

관련 정보