YOU*_*YOU 21 hard-drive convert qemu qcow2 kvm-virtualization
有没有办法缩小 qcow2 图像而不将其转换为原始图像?
我无法将其转换为原始图像,因为我没有足够的磁盘空间来存储原始图像。
小智 27
Noop 转换(qcow2-to-qcow2)去除稀疏空间:
qemu-img convert -O qcow2 source.qcow2 shrunk.qcow2
Run Code Online (Sandbox Code Playgroud)
您还可以尝试-c向输出图像添加压缩 ( ):
qemu-img convert -c -O qcow2 source.qcow2 shrunk.qcow2
Run Code Online (Sandbox Code Playgroud)
在运行上述命令之前,请务必关闭 VM。在您对结果感到满意后,您可以将 shrunk.qcow2 重命名为您的 VM 配置想要的原始名称。
dya*_*sny 13
尝试virt-sparsify- 它将对图像中未使用的块进行零填充,然后对零进行去重。
小智 8
我用virt-sparsify:
virt-sparsify /path/to/source.qcow2 --compress /path/to/output.qcow2
Run Code Online (Sandbox Code Playgroud)
小智 6
首先,从虚拟机内部缩小分区和文件系统。Windows 客户机可以通过磁盘管理来执行此操作。Linux 可以使用 resize2fs 和 fdisk 来做到这一点。如果您对此过程不满意,请改用gparted等可启动 ISO 。
完成后,磁盘末尾应该有未使用的空间。例如,在 Windows 中,磁盘末尾看起来有 11MB 的可用空间(在实际示例中,您应该有超过 11MB):

现在我们已将所有数据移至磁盘的前面,我们将砍掉末尾部分。您应该 100% 确定您不会删除真实数据。有些工具以不同的方式计算 GB/GiB,因此您可能应该给自己一些填充(例如将分区缩小 60GB,然后砍掉 50GB)。您始终可以在切碎后重新生长分区。
此命令会将大小调整myhd.qcow2为 200GB,并删除前 200GB 之后的所有数据:
qemu-img resize --shrink myhd.qcow2 200G
Run Code Online (Sandbox Code Playgroud)
小智 5
我已经多次成功地使用这个程序。简而言之,首先在虚拟客户中用零填充所有分区上的所有可用空间:
dd if=/dev/zero of=zerofile bs=1M
Run Code Online (Sandbox Code Playgroud)
完成后,使用 清空磁盘缓存sync,删除零文件并关闭客户机。在主机端转换图像(在本例中将 raw 转换为 qcow2):
qemu-img convert -f raw -O qcow2 guest.img guest-copy.qcow2
Run Code Online (Sandbox Code Playgroud)
这将自动稀疏图像。如果映像文件后缀发生更改,还请记住更新 vm 定义文件。
这种方法的一个好处virt-sparsify是,在这种方法中,客户机可以在写入零的同时启动,因此停机时间更短。如果您可以承受更长的停机时间,请使用virt-sparsify,因为它只需一个命令即可处理整个过程,并在此过程中提供有用的反馈。
| 归档时间: |
|
| 查看次数: |
45412 次 |
| 最近记录: |