如何减小 KVM 虚拟机磁盘映像的大小?

如何减小 KVM 虚拟机磁盘映像的大小?

如何减少或缩小 KVM 虚拟机磁盘的大小?

我分配了一个 500GB 的虚拟磁盘(存储在 /var/lib/libvirt/images/vm1.img),但我发现这有点过头了,所以现在我想释放一些空间供其他虚拟机使用。似乎有很多答案如何增加图像存储,而不是减少它。我发现虚拟调整大小工具,但它似乎只适用于原始磁盘分区,而不适用于磁盘映像。

编辑:我正在使用带有 Ext4 格式分区的 LVM。

编辑:GParted 屏幕截图显示了我的 LVM 分区布局。我需要做的远不止调整文件系统的大小。我不知道有什么安全的方法来调整 LVM 的大小。请不要告诉我使用pvresize。尽管它的名字是,但它不支持调整 LVM 的大小。

GParted 屏幕截图

我确实尝试过sudo pvresize /dev/vda5,但它只是说physical volume "/dev/vda5" changed但实际上并没有减小尺寸。

我尝试开始parted手动设置分区大小(非常危险),但这样做print all只会给我错误“/dev/sr0 无法识别的磁盘标签”。

编辑:通过关注这些说明,我能够成功缩小我的逻辑卷和物理卷(尽管我必须记住在执行某些命令之前和之后激活和停用 lvm,但说明中省略了这些命令)。

现在 GParted 显示有 250G 未分配的可用空间。如何从 KVM 磁盘映像中删除这些空间并将其返回给底层虚拟机管理程序?

答案1

感谢那些发帖的人,但你们的回答太模糊,无法提供任何帮助。

经过几个小时的谷歌搜索,我终于找到了一本指南(链接已删除) 提供了有关如何缩小文件系统、逻辑卷和物理卷的分步说明。大多数指南都忽略了一个技巧,即需要实际删除物理分区,然后以正确的大小重新创建它们,因为 parted 无法调整 lvm 分区的大小。

然后我发现本文档在 qemu-img 上,解释了如何通过运行以下命令来缩小原始格式的虚拟磁盘映像:

sudo qemu-img resize /var/lib/libvirt/images/myvm.img 255G

答案2

你需要做什么,

  • 进行备份
  • 缩小文件系统*不要在实时系统上执行此操作,我建议使用实时 CD。
  • 创建所需大小的新磁盘映像。
  • 运行实时操作系统,将新旧映像作为(虚拟)硬盘(未安装)连接
  • 创建与旧磁盘上调整大小的分区大小相同的新分区
  • 使用 dd 将数据镜像到新分区。
  • 您可能需要清除/重新生成 grub(2) 才能成功启动。

这可以通过 GUI 和 CLI 来实现

资源

工具

  • gparted(由于垃圾邮件,链接被省略,声誉不足)

答案3

这对我来说确实很有效。它压缩并缩小了磁盘映像中的 0 块。随着映像再次被覆盖,它会随着时间的推移而扩大。

qemu-img convert -c -O qcow2 vmdisk.qcow2 vmdisk-comp.qcow2

答案4

@daxroc 的解决方案对我来说很管用,由于我无法点赞,下面对其进行了扩展。在我的示例中,我的主机是 Unraid (Linux),我的客户机是 ArchLinux (官方基本虚拟机)。他们的图像设置为 40GB,这对于我的用例来说太多了。我使用以下步骤成功将图像调整大小 (缩小) 到 8GB。

在主机上:

  1. 备份现有图像cp vdisk1.img vdiskbak.img
  2. 创建尺寸缩小的新目标图像qemu-img create -f raw vdisknew.img 8G
  3. 分区Live CD,启动 VM,并使用 LIVE CD 上的 GParted 缩小文件系统(在我的示例中,我仅使用了 1.2GB 的根分区,而我的映像为 40GB)
  4. 关闭虚拟机并挂载克隆兹拉Live CD,启动 VM(附加新旧图像,即 vdisk1.img 和 vdisknew.img)
  5. disk to disk镜像磁盘使用专业级并启用该-icds选项(保留所有默认值 - 每次第一次选择时都可以按 Enter 键)-备份

相关内容