희소 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. 그러나 이미지를 마운트하면 올바른 크기가 보고되고 예상대로 커집니다.

그런 다음 해당 이미지를 rsync하십시오.

관련 정보