libvirt 的 VM 定义“原始”存储在哪里,以及如何在多个节点之间同步它们?

libvirt 的 VM 定义“原始”存储在哪里,以及如何在多个节点之间同步它们?

从 Xen 迁移到libvirt 控制下的xmXen ,我想知道:xl

libvirt 在哪里存储虚拟机配置的“原始”?

我发现我的 PVM 配置存储在 中/etc/libvirt/libxl/,但在查看此类文件时,我看到一条评论说该文件已自动创建,不应编辑我的文件(“使用 virsh edit ...”)。我还在 中找到了 XML 和 JSON 文件/var/lib/xen,以虚拟机的域 ID 和 UUID 命名。

当我配置 HA 集群时,我希望跨所有集群节点同步虚拟机配置(允许实时迁移)。在过去,同步/etc/xen/vm就足够了,但对于 libvirt 来说,它似乎要复杂得多:有时我必须从 XML 文件中获取virsh defineVM,virsh destroy不仅会破坏正在运行的 VM,还会破坏它看起来的配置,并且virsh undefine还删除了XML 文件/etc/libvirt/libxl/似乎在其中。我不知道如何跨集群节点同步配置。

我看到的主要问题是:在 csync2-ing 将 VM 配置定义到其他集群节点的 XML 文件之后,我看到文件中的更改/etc/libvirt/libxl/,显示“不要编辑;virsh edit改为使用”。

然而,当我使用virsh edit这些文件之一时,我在编辑器中看到的内容并不是我在位于/etc/libvirt/libxl/.

也许将问题重新表述为: 如果我更新 XML 文件/etc/libvirt/libxl/(例如 via csync2),如何确保 libvirt 使用更新的配置?

更新

在我添加了一个与xl block-attach编辑的配置相对应的用于分页的块设备后,这个问题变得更加重要。当VM实时迁移到集群中的另一个节点时,添加的磁盘没有传输到VM,因此VM在尝试访问该磁盘时冻结。显然,当前机器的配置没有用于实时迁移,并且 XML 文件中保存的配置也没有被使用。

答案1

我用“我不再关心”的方式解决了这个问题:

我创建了一个额外的配置副本,我可以在/etc/xen/vm/.当集群 RAVirtualDomain根据给定的配置文件新创建 VM 时,我只需指定该副本,因此我不必再关心libvirt实际 VM 配置的存储位置。

相关内容