희박한 qemu 이미지의 rsync로 인해 디스크 크기가 증가합니다.

희박한 qemu 이미지의 rsync로 인해 디스크 크기가 증가합니다.

다른 서버로 전송하려는 희박한 원시 qemu 이미지가 있습니다. qemu-img info나에게주세요:

image: sparse.img
file format: raw
virtual size: 50G
disk size: 16G

다음을 사용하여 전송했습니다.

rsync -azhP --sparse origin:/path/to/img/sparse.img .

이제 대상 서버에는 다음이 있습니다.

image: sparse.img
file format: raw
virtual size: 50G
disk size: 40G

그러나 virt-sparsify복사된 이미지를 다시 실행하면 다음과 같은 결과가 나타납니다.

image: sparse.img
file format: raw
virtual size: 50G
disk size: 16G

두 서버 모두 XFS 파일 시스템에서 CentOS 7.2를 실행하고 있습니다. 그래서 무슨 일이 일어났나요?

고쳐 쓰다:

더 많은 조사 끝에 rsync가 희소 파일을 잘 처리하지 못하며 다른 도구를 사용하는 것이 더 낫다는 여러 기사를 발견했습니다.타르, 희소 파일을 전송합니다.

tar전송 과정을 따라가면 다음을 rsync --inplace사용하여 파일이 오류 없이 전송되었는지 확인할 수 있습니다 .여기.

다른해결책rsync --inplace타겟에 동일한 크기의 빈 스파스 파일을 생성한 후 이를 사용하여 실제 데이터를 전송하는 것이 좋습니다 .

나는 이것이 왜 일어나는지 실제로 설명하지 않기 때문에 해결책으로 이것을 쓰지 않았습니다 rsync --sparse.

답변1

나는 이것이 소스와 대상 간의 FS 차이 때문이라고 확신합니다.

예를 들어 자세히 설명하겠습니다. 스파스 파일은 디스크에 빈 블록이 할당되지 않은(즉, 모두 0인) 파일입니다. FS의 블록 크기가 작을수록 해당 블록을 찾을 가능성이 높아집니다. 따라서 문제는 대상의 블록 크기가 소스의 블록 크기보다 크기 때문에 발생할 수 있습니다.

내가 모르는 다른 XFS 매개변수가 있을 수 있습니다.

당신은 또한 볼 수 있습니다ServerFault에 대한 이 질문

답변2

나에게 가장 잘 맞는 솔루션은 먼저 실행하는 것이었습니다.

virt-sparsify imagename

시간이 좀 필요해요. 이렇게 하면 ls -h및 에 du -h보고된 동일한 치수 로 더 작은 크기의 이미지가 생성됩니다 du -h --apparent-size. 그러나 이미지를 탑재하면 올바른 크기가 보고되고 예상대로 커집니다.

그런 다음 이미지를 다시 동기화하십시오.

관련 정보