![有什么方法可以让虚拟机(例如KVM)使用像overlayfs这样的系统来分别拥有主要文件集和附加组件?](https://linux22.com/image/209210/%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E8%AE%A9%E8%99%9A%E6%8B%9F%E6%9C%BA%EF%BC%88%E4%BE%8B%E5%A6%82KVM%EF%BC%89%E4%BD%BF%E7%94%A8%E5%83%8Foverlayfs%E8%BF%99%E6%A0%B7%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%9D%A5%E5%88%86%E5%88%AB%E6%8B%A5%E6%9C%89%E4%B8%BB%E8%A6%81%E6%96%87%E4%BB%B6%E9%9B%86%E5%92%8C%E9%99%84%E5%8A%A0%E7%BB%84%E4%BB%B6%EF%BC%9F.png)
我在网上搜索过,阅读过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