如何减少或缩小 KVM 虚拟机磁盘的大小?
我分配了一个 500GB 的虚拟磁盘(存储在 /var/lib/libvirt/images/vm1.img),但我发现这有点过头了,所以现在我想释放一些空间供其他虚拟机使用。似乎有很多答案如何增加图像存储,而不是减少它。我发现虚拟调整大小工具,但它似乎只适用于原始磁盘分区,而不适用于磁盘映像。
编辑:我正在使用带有 Ext4 格式分区的 LVM。
编辑:GParted 屏幕截图显示了我的 LVM 分区布局。我需要做的远不止调整文件系统的大小。我不知道有什么安全的方法来调整 LVM 的大小。请不要告诉我使用pvresize
。尽管它的名字是,但它不支持调整 LVM 的大小。
我确实尝试过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 来实现
资源
- fdisk 分区 - http://linux.die.net/HOWTO/Partition/fdisk_partitioning.html
- dd 手册页 -http://linux.die.net/man/1/dd
工具
- gparted(由于垃圾邮件,链接被省略,声誉不足)
答案3
这对我来说确实很有效。它压缩并缩小了磁盘映像中的 0 块。随着映像再次被覆盖,它会随着时间的推移而扩大。
qemu-img convert -c -O qcow2 vmdisk.qcow2 vmdisk-comp.qcow2
答案4
@daxroc 的解决方案对我来说很管用,由于我无法点赞,下面对其进行了扩展。在我的示例中,我的主机是 Unraid (Linux),我的客户机是 ArchLinux (官方基本虚拟机)。他们的图像设置为 40GB,这对于我的用例来说太多了。我使用以下步骤成功将图像调整大小 (缩小) 到 8GB。
在主机上: