我有一个池中的三个XenServer 6.1服务器。 通常使用HA,但目前closures此操作。
最近,我不得不通过这些指令强制closures虚拟机: http : //support.citrix.com/article/CTX131421
除了我的命令行似乎没有destroy_domain命令。 另一篇文章指出了/ opt / xensource / debug / xenops中的完整pathdestroy_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.
VM现在暂停。 尝试恢复它(仍在原始服务器上,因为它不能移动)在服务器事件日志中产生以下错误:没有服务器可用于完成指定的操作。
另外,XenCenter会popup一个对话框,显示“错误启动虚拟机”,池中的每个服务器发生错误,说明“对象已被删除.VDI:OpaqueRef:NULL”,服务器将不会恢复。
如果我强制closures虚拟机,我可能会重新启动虚拟机。 不幸的是,虚拟机仍然不能迁移,并产生以上相同的错误。
我在其中一台生产VM服务器上发现了这个问题,但是这些testing正在一个不计其数的Windows 7 Enterprise VM上执行。 生产虚拟机是CentOS,所以我不认为我正在经历任何操作系统特定。 这看起来像上面发布的destroy_domain命令的问题。
其他未使用destroy_domainclosures的虚拟机可以自由地移入或移出此服务器。
我不是XenServer的老手,所以任何帮助,更正或要求澄清非常感谢。 非常感谢您提前帮助!
从https://github.com/xapi-project/xen-api/blob/fe28d3e3254b1c9928dfb99d75e94e949504dcf7/ocaml/xapi/xapi_xenops.ml ,看起来是v6.1 E017的源码,有行#1739:
(* XXX: if the guest crashed or shutdown immediately then it may be offline now *) assert (Db.VM.get_power_state ~__context ~self = (if paused then `Paused else `Running))
我不做OCAML,也不是我的XenServer专家,但是这个断言看起来像一个名为start的方法,看起来像是通过检查内部数据库中的电源状态来确保VM启动。 我猜想,因为你已经迫使虚拟机关机,它没有正确更新数据库。
也许第二个链接的命令会清理数据库:
xe vm-reset-powerstate uuid=<UUID of VM> force=true
否则,你将不得不拖动日志来查找哪个操作在这个之前失败了,也许在/var/log/xensource.log ?