스냅샷을 삭제한 후 남은 스냅샷을 유지하면서 qcow2 파일의 공간을 복구하려면 어떻게 해야 합니까?

스냅샷을 삭제한 후 남은 스냅샷을 유지하면서 qcow2 파일의 공간을 복구하려면 어떻게 해야 합니까?

5개의 스냅샷(1,2,3,4,5)으로 시작된 가상 머신이 있습니다.

나는 사용했다qemu-img스냅샷 1,2,3을 삭제합니다. 스냅샷 4와 5는 여전히 필요하며 삭제되지 않았습니다.

스냅샷 1,2,3에 사용된 공간을 해제하고 스냅샷 4와 5를 유지하려면 어떻게 해야 합니까?

나는 해결책을 찾기 위해 많은 시간을 보냈고, 내가 찾은 해결책은 다음 두 가지 패턴 중 하나에 적합했습니다.

qemu-img 변환 사용(필요한 스냅샷을 삭제했습니다)

qemu-img convert -O qcow2 Linux.qcow2 Linux_s.qcow2

이렇게 하면 Linux.qcow2에서 사용하는 공간이 줄어들지만 스냅샷 4와 5가 삭제됩니다.

VM을 복사하고 virt-sparsify를 사용하십시오.(공간을 복구하지 않습니다)

cp Linux.qcow2 TEST.qcow2

sudo virt-sparsify --in-place TEST.qcow2

삭제되지 않은 두 개의 스냅샷을 유지하지만 원래 스냅샷 1,2,3이 차지했던 공간은 복구되지 않습니다.

스냅샷을 삭제한 후 남은 스냅샷을 유지하면서 qcow2 파일의 공간을 복구하려면 어떻게 해야 합니까?

답변1

qcow2 파일은 스파스 파일입니다. 희소 파일을 지원하는 파일 시스템에서는 파일 크기보다 디스크에서 훨씬 적은 공간을 차지할 수 있습니다.

스냅샷을 삭제해도 보고된 크기는 ls -l변경되지 않지만 보고된 디스크의 여유 공간 크기는 df변경됩니다.

거의 모든 파일 시스템은 스파스 파일을 지원합니다. FAT와 NFSv3은 아마도 그렇지 않은 유일한 공통 파일 시스템일 것입니다.

답변2

스냅샷 1,2,3을 삭제하면 파일이 삭제되지만 실제 삭제가 아니기 때문에 해제된 공간이 표시되지 않습니다. 파일은 표시만 되어 있어 삭제가 빨리 완료됩니다.

삭제된 스냅샷의 공간을 해제하려면 qcow2 파일을 변환할 수 있지만 그 전에 dd 명령을 통해 qcow2 파일을 0으로 실행해야 합니다.

$dd if=/dev/zero of=~/junk
dd: writing to `/home/***/junk': No space left on device
$rm junk

그런 다음 qcow2 파일을 변환하십시오.

qemu-img convert -O qcow2  Linux.qcow2 Linux_s.qcow2

관련 정보