从 Xen 迁移到libvirt 控制下的xm
Xen ,我想知道:xl
libvirt 在哪里存储虚拟机配置的“原始”?
我发现我的 PVM 配置存储在 中/etc/libvirt/libxl/
,但在查看此类文件时,我看到一条评论说该文件已自动创建,不应编辑我的文件(“使用 virsh edit ...”)。我还在 中找到了 XML 和 JSON 文件/var/lib/xen
,以虚拟机的域 ID 和 UUID 命名。
当我配置 HA 集群时,我希望跨所有集群节点同步虚拟机配置(允许实时迁移)。在过去,同步/etc/xen/vm
就足够了,但对于 libvirt 来说,它似乎要复杂得多:有时我必须从 XML 文件中获取virsh define
VM,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 配置的存储位置。