我在一个池中有三台 XenServer 6.1 服务器。通常使用 HA,但目前已为此操作关闭。
最近,我不得不通过以下说明破坏域来强制关闭 VM:http: //support.citrix.com/article/CTX131421
除了我的命令行似乎没有 destroy_domain 命令之外。另一篇文章向我指出了 /opt/xensource/debug/xenops destroy_domain -domid x 的完整路径(http://gimpland.org/now/2013/01/citrix-xenserver-how-to-force-shutdown-virtual -机器/)
它起作用了,我能够毫无问题地启动虚拟机。尽管我发现尝试将 VM 迁移到池中的任何其他服务器。尝试通过 XenCenter 将 VM 迁移到池中的另一台主机会在大约 30-40 秒后产生以下错误:
Migrating VM 'Cleanup 7' from XenBlade5 to XenBlade 6:
Error: Internal error: file "xapi_xenops.ml", line 1740, characters 3-9: Assertion Failed.
虚拟机现在已暂停。尝试恢复它(仍然在原始服务器上,因为它无法移动)在服务器事件日志中产生以下错误:没有可用的服务器来完成指定的操作。
此外,XenCenter 会弹出一个对话框,提示“启动 VM 时出错”,池中的每个服务器都会出现错误,提示“对象已被删除。VDI:OpaqueRef:NULL。服务器将不会恢复。
如果我强制关闭虚拟机,我可能会重新启动它。不幸的是,VM 仍然无法迁移并产生上述相同的错误。
我在我们的一台生产 VM 服务器上发现了这个问题,但这些测试是在一次性的 Windows 7 Enterprise VM 上执行的。生产虚拟机是 CentOS,所以我认为我没有遇到任何特定于操作系统的问题。我上面发出的 destroy_domain 命令看起来像一个问题。
未使用 destroy_domain 关闭的其他 VM 可以自由地进出此服务器。
我不是 XenServer 的老手,因此非常感谢任何帮助、更正或澄清请求。非常感谢您的帮助!
来自https://github.com/xapi-project/xen-api/blob/fe28d3e3254b1c9928dfb99d75e94e949504dcf7/ocaml/xapi/xapi_xenops.ml,它看起来是 v6.1 E017 的来源,有第 1739 行:
我不做 OCAML,也不是 XenServer 专家,但这个断言似乎在一个名为的方法中
start
,并且看起来它通过检查内部数据库中的电源状态来确保 VM 已启动。我猜想,因为您已强制关闭 VM,它没有正确更新数据库。也许您的第二个链接中的命令将清理数据库:
否则,您将不得不搜索日志以查找在此之前失败的操作,也许在
/var/log/xensource.log
?