Kvm-Virtualization
釋放 kvm/qemu 上 qcow2-image-file 上未使用的空間
我們正在為我們的虛擬機使用帶有 qcow2-images 的 kvm/qemu。
qcow2 有一個很好的特性,鏡像文件只分配虛擬機實際需要的空間。但是,如果虛擬機的分配空間變小,我如何縮小圖像文件?
例子:
1.) 我創建一個 qcow2 格式的新圖像,大小 100GB
2.)我使用這個圖像來安裝 ubuntu。安裝需要大約 10 GB,圖像文件增長到大約 10 GB。到目前為止沒有什麼意外。
3.) 我用大約 40 GB 的附加數據填充圖像。圖像文件增長到 50GB。我同意:-)
4.)這就是奇怪的地方:我刪除了圖像上所有的 40GB 數據,但圖像大小仍然佔用了 50GB。
問題:我如何釋放 40GB 的數據並將圖像縮小到僅需要的 10GB?
在此先感謝,伯尼
virt-sparsify 可以輕鬆完成所有這些工作:http: //libguestfs.org/virt-sparsify.1.html
圖像不會自動縮小,因為當您刪除文件時,您實際上並沒有刪除數據(這就是取消刪除有效的原因)。Qemu 有一個工具可以將 qcow2 映像壓縮回去,但該實用程序所做的實際上是從磁碟中刪除重複的零,而保留所有其他資訊不變。所以這個想法是:
- 零填充驅動器(
dd if=/dev/zero of=/some/file
直到空間不足)- 刪除/一些/文件
- 關閉虛擬機
- cd 到保存和執行 VM 映像的位置
qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
- 更改 VM 設置以使用新的 deduplicated_image.qcow2,測試 VM 是否正常工作,並刪除舊映像
這,afaik,只適用於 qcow2 圖像,我沒有測試其他格式。