QCOW2 虚拟尺寸降低

QCOW2 虚拟尺寸降低

我正在尝试减小容器的虚拟大小,qcow2以便它可以适合具有 10GB 磁盘的 openstack 风格。

root@node-10:~# qemu-img info zztop.qcow 
image: zztop.qcow
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 2.6G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false

我遵循指南这里并在磁盘末尾填充零,然后运行qemu-img convert -O qcow2。但是,生成的 qcow2 保留了相同的磁盘大小和虚拟大小。

如何降低 qcow2 的虚拟大小,以便它可以适合小于 80GB 的 openstack 风格?

答案1

如果你想缩小虚拟尺寸,你需要使用virt-resize

答案2

  1. 您需要将 qcow2 图像转换为 raw
    qemu-img convert -O raw guest.img guest.raw
  2. 然后调整原始文件的大小
    qemu-img resize guest.raw 3G
  3. 然后将其转换回 qcow2
    qemu-img convert -O qcow2 -o compat=0.10 guest.raw guest.img
  4. 然后运行客户机并调整文件系统大小

答案3

改进了@user370956 的答案

我能够成功将图像的实际尺寸从 5.9G 缩小到 3.5G,并且垂直尺寸也是如此。

  1. 备份你的图片 cp guest.img quest.backup
  2. 您需要将 qcow2 图像转换为 raw
    qemu-img convert -O raw guest.img guest.raw
  3. 启动一些挂载为的 live iso-cdrom并将其guest.raw挂载为-drive qemu-system-x86_64 -machine type=pc,accel=kvm -boot order=d -drive file=guest.raw,format=raw -cdrom ~/Downloads/debian-live-9.6.0-amd64-lxde.iso -m 2G
  4. 使用 gparted(gui 工具)从客户机内部缩小分区。保留一些可用空间以便系统仍能启动(100 MB 就足够了)。保留剩余空间未分配。检查文件系统。 fsck -a
  5. 然后调整原始文件的大小
    qemu-img resize guest.raw 3G
  6. 然后将其转换回 qcow2
    qemu-img convert -O qcow2 guest.raw guest.img
  7. 此时,您可以调整 qcow2 虚拟映像的大小以添加一些空间,这不会影响映像文件大小。这可能是确保虚拟机稳定性所必需的。 qemu-img resize guest.img +1G
  8. 如果您已完成步骤 6,请重复步骤 2、3 来为客户根分区分配更多空间。

答案4

1 - 禁用 fstab 中的交换文件(如果有)

2 - 将 gparted 安装到你的虚拟机 cd-rom

3 - 启动虚拟机,启动 gparted 并将分区大小调整为较小的大小

4 - 删除交换分区并重新创建,或确保所有分区在磁盘开头彼此对齐。缩小分区后,我遇到了交换分区位于磁盘末尾的问题,所以这是解决办法。

5-关闭虚拟机

6 - 找到 qcow2 文件并在同一目录中运行“qemu-img create -f qcow2 -o preallocation=metadata new-disk.qcow2 80G”(其中 80G 是新磁盘大小)

7 - 使用 virt-resize -'virt-resize old-disk.qcow2 new-disk.qcow2'

8 - 将新磁盘复制到 VM 的更正文件名,启动 VM 并重新启用交换,即:'swapon /dev/sda5'

9 - 编辑 fstab 以添加交换,即:'/dev/sda5 swap swap defaults 0 0'

完毕。

相关内容