我的问题是要调整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
但是在我这样做之后,虽然大小缩小了很多,但VM无法正常启动。我正在使用Linux和KVM / libvirt。
答案 0 :(得分:2)
要收缩磁盘,您必须在来宾VM上执行一些操作。
一个很好的描述:http://www.jamescoyle.net/how-to/323-reclaim-disk-space-from-a-sparse-image-file-qcow2-vmdk。我添加了碎片整理,并扩展了磁盘。
来自Windows客人:
对磁盘进行解密,以便将所有文件移动到磁盘的开头。
下载:http://technet.microsoft.com/en-gb/sysinternals/bb897443.aspx
用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
答案 1 :(得分:1)
如果您的客户操作系统是Windows,则可以在启动时从guest虚拟机中扩展分区。首先复制原始图像(为安全起见)并使用qemu-img resize为磁盘映像添加空间:
cp small_image.qcow2 large_image.qcow2
qemu-img resize large_image.qcow2 +100G
&#13;
然后在large_image.qcow2中启动Windows VM。打开&#34;磁盘管理&#34;效用。右键单击C:,然后选择&#34; Extend Volume&#34;或&#34;收缩量&#34;
您的VM guest虚拟机现在可以访问qemu-img resize添加的空间。
答案 2 :(得分:1)
仅从主机端进行操作可能会导致访客文件系统损坏。
因此,在从主机进行任何更改之前,您需要使用gparted
之类的分区工具从来宾内部更改VM的存储分区大小。这样虚拟磁盘的总大小将小于虚拟存储的所需大小。之后,您可以进行转换,调整大小以及从主机转换回虚拟存储文件。
答案 3 :(得分:0)
1)最简单的方法:安装libguestfs-tools 2)运行:virt-sparsify-就地virtualDisk.qcow2
它会存档,因此您不需要额外的空间。