복사할 때 두 개의 동일한 비희소 파일 간의 파일 크기 비교

복사할 때 두 개의 동일한 비희소 파일 간의 파일 크기 비교

저는 KVM을 사용하여 한 호스트에서 다른 호스트로 가상 머신을 실시간 마이그레이션하고 있습니다. 이를 위해 웹 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및 을 사용해 보았습니다 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

관련 정보