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

Cer*_*rin 13 linux virtual-machines kvm-virtualization

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

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

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

编辑:显示我的 LVM 分区布局的 GParted 屏幕截图。我需要做更多的事情,然后只是调整文件系统的大小。我知道没有安全的方法来调整 LVM 的大小。并且请不要告诉我使用pvresize. 尽管它的名字,它不支持调整 LVM 的大小。

GParted 截图

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

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

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

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

Cer*_*rin 12

感谢那些发帖的人,但你的回答太模糊了,没有任何帮助。

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

然后我在 qemu-img 上找到了这个文档,它解释了如何通过运行来缩小原始格式的虚拟磁盘映像:

sudo qemu-img resize /var/lib/libvirt/images/myvm.img 255G
Run Code Online (Sandbox Code Playgroud)


小智 -5

我建议在执行任何操作之前,您按原样获取磁盘映像的完整副本,然后当它全部损坏时,您只需将其复制回来即可重新开始。

您需要做 3 件事:

1) 增大磁盘映像。在你的主机中:

qemu-img 调整 foo.qcow2 +32G 大小

现在,您的来宾可以看到更大的磁盘,但仍然具有旧的分区和文件系统。

2) 增大磁盘映像内的分区。为此,您需要在来宾中启动 LiveCD,因为您将无法弄乱已安装的分区。这是相当复杂的部分,而且可能是最危险的部分。这里要复制的内容相当多,所以我暂时只提供链接。你想做这样的事情:

http://www.howtoforge.com/linux_resizing_ext3_partitions_p2

或者 2b) 如果您只需要更多存储空间,创建新分区会更简单(也更安全)。使用 fdisk 或 cfdisk,或者任何你觉得舒服的东西 - 你现在应该在你的来宾磁盘上看到一大堆未分配的空间。

3)最后,如果您调整了现有分区的大小,请使新的更大分区内的文件系统更大(这实际上在上面链接的指南中)。在您的客人内部:

  • 他试图让图像变小,而不是变大。 (7认同)