繁体   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