有什么方法可以让虚拟机(例如KVM)使用像overlayfs这样的系统来分别拥有主要文件集和附加组件?

有什么方法可以让虚拟机(例如KVM)使用像overlayfs这样的系统来分别拥有主要文件集和附加组件?

我在网上搜索过,阅读过KVM虚拟机管理程序在哪里存储VM文件?并认为我的想法无法通过标准方式实现,但也许仍然可行,或者有人可以建议一些技巧/解决方法吗?

我想要在 KVM 中安装 Windows 的主虚拟机文件(或者其他虚拟机,如果您知道如何执行下面的其他操作,但不是 KVM),将其存储为“较低”/“主要”文件集,并且能够通过将文件系统中的所有添加/更改存储在“upper”中的单独位置(如 Linux overlayfs)来向其中添加程序。 TIA

这将允许以更紧凑的方式存储许多相似但不同的客户端系统安装。

答案1

您可以使用写时复制磁盘映像来获得您想要的东西。

假设我们有一个磁盘映像windows-base.img。我们希望使用它作为“较低”映像,并从中创建多个“较高”克隆,以便我们可以创建多个以相同基本配置启动的虚拟机。

如果您在 Linux 下使用libvirt,您可以执行以下操作:

virt-install --disk pool=default,size=40,backing_store=windows-base.img,backing_format=raw ...

backing_store选项创建指定映像的新的写时复制克隆。最初,这将具有相同的内容,windows-base.img并且实际上消耗的空间为零,但随着虚拟机修改磁盘块,它会随着时间的推移而增长。

本文更详细地探讨了该过程。


如果你是不是使用libvirt(例如,如果您直接运行),您可以使用;qemu手动执行相同的操作qemu-img看起来像:

qemu-img create -F raw -b windows-base.img -f qcow2 windows-1.qcow2 40g

相关内容