Shi*_*Yan 5 resize virtual-machine
我的问题是要调整 qcow2 VM 映像的大小。我有一个内置包和应用程序的映像。例如,在创建映像时,大小为 40G,但现在它实际上使用了大约 5G 的磁盘空间。所以我想缩小它。
我的方法如下:
Run Code Online (Sandbox Code Playgroud)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。
要收缩磁盘,您必须在来宾 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:
Run Code Online (Sandbox Code Playgroud)
在 Linux 客户机上,用 0 填充所有可用空间:
dd if=/dev/zero of=~/mytempfile
rm -f ~/mytempfile
Run Code Online (Sandbox Code Playgroud)
在 libvirt 主机上:
mv original_image.qcow2 original_image.qcow2_backup
qemu-img convert -O qcow2 original_image.qcow2_backup original_image.qcow2
Run Code Online (Sandbox Code Playgroud)
要扩容磁盘,都可以在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
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,请检查您的工作。
qemu-img info original_image.qcow2
Run Code Online (Sandbox Code Playgroud)