kvm / qemu의 qcow2-image 파일에서 사용되지 않은 공간 확보 사용하여 우분투를 설치합니다.

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

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

예:

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

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

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

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

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

미리 감사합니다, 베르니



답변

파일을 삭제할 때 실제로 데이터를 삭제하지 않기 때문에 이미지가 자동으로 축소되지 않습니다 (삭제 취소가 작동하는 이유). 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 이미지에서만 작동하며 다른 형식은 테스트하지 않았습니다.


답변

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


답변

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