簡體   English   中英

如何在不影響應用程序的情況下調整 qcow2 圖像的大小

[英]How to resize the qcow2 image without impact the application

我的問題是要調整 qcow2 VM 映像的大小。 我有一個內置包和應用程序的映像。例如,在創建映像時,大小是 40G,但現在它實際上使用了大約 5G 的磁盤空間。 所以我想縮小它。

我的方法如下:

 qemu-img convert -O raw VM1.qcow2 VM1.raw qemu-img resize VM1.raw -20G qemu-img convert -c -O qcow2 VM1.raw VM1.qcow2

但是在我這樣做之后,雖然大小縮小了很多,但虛擬機無法正常啟動。 我在 KVM/libvirt 上使用 linux。

如果您的來賓操作系統是 Windows,您可以在引導時從來賓內部擴展分區。 首先復制您的原始映像(為了安全)並使用 qemu-img resize 為磁盤映像添加空間:

 cp small_image.qcow2 large_image.qcow2 qemu-img resize large_image.qcow2 +100G

然后在 large_image.qcow2 中啟動 windows VM。 打開“磁盤管理”實用程序。 右鍵單擊 C:,然后選擇“擴展卷”或“縮小卷”

您的 VM 來賓現在可以訪問由 qemu-img 調整大小添加的空間。

要縮小磁盤,您必須在來賓 VM 上做一些工作。

一個很好的描述: http : //www.jamescoyle.net/how-to/323-reclaim-disk-space-from-a-sparse-image-file-qcow2-vmdk 我添加了碎片整理並擴展了磁盤。

來自 Windows 來賓:

用 0 填充所有可用空間。

c:\sdelete.exe -z c:

在 Linux 客戶機中,用 0 填充所有可用空間:

dd if=/dev/zero of=~/mytempfile
rm -f ~/mytempfile

在 libvirt 主機上:

mv original_image.qcow2 original_image.qcow2_backup
qemu-img convert -O qcow2 original_image.qcow2_backup original_image.qcow2

要擴展磁盤,這一切都可以在 libvirt 主機上完成。

mv original_image.qcow2 original_image.qcow2_backup
truncate -s <desired number of Gigabytes>G original_image.qcow2
qemu-img convert -O qcow2 original_image.qcow2_backup original_image.qcow2

在這兩種情況下,請檢查您的工作。

qemu-img info original_image.qcow2

僅從主機端進行操作可能會使來賓文件系統損壞。 因此,在主機進行任何更改之前,您需要使用諸如gparted類的分區工具從來賓內部更改 VM 的存儲分區大小。 使虛擬磁盤的總大小變得小於虛擬存儲的所需大小。 之后,您可以進行轉換和調整大小並從主機轉換回虛擬存儲文件。

1)最簡單的方法:安裝libguestfs-tools 2)運行:virt-sparsify --in-place virtualDisk.qcow2

它在文件中進行,因此您不需要額外的空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM