kvm / qemu의 qcow2-image 파일에서 사용되지 않은 공간 확보


23

가상 머신에 kcow / qemu를 qcow2-images와 함께 사용하고 있습니다.

qcow2는 이미지 파일이 가상 머신에 의해 실제로 필요한 공간만을 할당하는 멋진 기능을 가지고 있습니다. 그러나 가상 머신의 할당 된 공간이 작아지면 어떻게 이미지 파일을 축소합니까?

예:

1.) qcow2 형식, 100GB 크기의 새 이미지를 만듭니다.

2.) 나는이 이미지를 사용하여 우분투를 설치합니다. 설치에는 약 10GB가 필요하고 이미지 파일은 약 10GB까지 커집니다. 지금까지 예기치 않은 것은 없습니다.

3.) 약 40GB의 추가 데이터로 이미지를 채 웁니다. 이미지 파일은 최대 50GB까지 커집니다. 나는 그것으로 괜찮습니다 :-)

4) 이것은 이상한 곳입니다. 이미지의 모든 40GB 데이터를 삭제하지만 이미지 크기는 여전히 50GB를 차지합니다.

질문 : 40GB의 데이터를 비우고 이미지를 필요한 10GB로 축소하는 방법은 무엇입니까?

미리 감사합니다, 베르니

답변:


26

파일을 삭제할 때 실제로 데이터를 삭제하지 않기 때문에 이미지가 자동으로 축소되지 않습니다 (삭제 취소가 작동하는 이유). Qemu에는 qcow2 이미지를 축소 할 수있는 기능이 있지만 유틸리티가하는 일은 디스크에서 0을 중복 제거하여 다른 모든 정보를 그대로 유지하는 것입니다. 따라서 아이디어는 다음과 같습니다.

  1. 드라이브 제로 채우기 ( dd if=/dev/zero of=/some/file공간이 부족해질 때까지)
  2. / some / file 삭제
  3. VM을 종료
  4. VM의 이미지가 유지되고 실행되는 위치로 cd qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. 새로운 deduplicated_image.qcow2를 사용하도록 VM 설정을 변경하고 VM이 작동하는지 테스트 한 후 이전 이미지를 제거하십시오.

이것은 afaik, qcow2 이미지에서만 작동하며 다른 형식은 테스트하지 않았습니다.


3
Windows 게스트가있는 경우 SDelete -z를 실행 하여 모든 여유 공간을 0으로 설정하십시오 (위의 1,2 단계)
ndemou

17

virt-sparsify는 사용자가 번거 로움없이이 모든 것을 할 수 있습니다 : http://libguestfs.org/virt-sparsify.1.html


아니 그렇게 확신은 2011 년에 있었다
dyasny

2
@dyasny 기존 질문에 대한 기존 답변이 시간이 지남에 따라 더 이상 사용되지 않으면 새로운 답변을 쓸 가치가 있습니다. 그러나이 새로운 답변은이 사이트의 표준에 맞지 않을 수 있습니다.
kasperd

4
@dyasny 누군가가 새로운 품질의 답변을 작성하기 위해 노력하고 싶다면, 오래된 답변이 쓸모 없을 때마다 그렇게해야합니다. 오래된 답변을 처리하는 방법에 대한보다 철저한 논의는 메타에 더 적합합니다.
kasperd

1

virt-sparsify fileA fileB모든 작업을 수행하지만 실제로 이미지 크기를 줄이지는 않습니다. 이를 위해을 추가해야합니다 --compress.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.