
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