我正在测试 XenServer 5.6 100-47101p,我安装了四台 VM,两台 FreeBSD 和两台 Windows。
安装完四个 VM 后,我重新编译了包含 FreeBSD 8.2 i386 内核的 VM,以启用/支持 XEN,重新启动后,XenCenter 上的控制台没有显示任何内容(有问题的内核通常无法启动),我尝试强制关闭/强制重新启动 VM,但什么也没发生,在日志中我收到了一条常见消息,提示由于有待处理的任务,无法停止或重新启动。
通过 XenServer 上的 ssh,我尝试了: xe 任务列表 xe 任务取消 force=true uuid=, xe vm-shutdown, 等等但什么都没起作用。停止虚拟机的唯一方法是重新启动XenServer并禁用服务器启动时自动启动 VM 的属性。
重新启动整个 Xenserver 后(所有其他 VM 都关闭了),我再次启动了 FreeBSD 8(有缺陷的 KERNEL)进行调试或在控制台上发现了一些东西,但我没有得到启动过程的至少 BIOS,而是得到了 WINDOWS 操作系统的控制台,如下图所示:
而且我再次无法停止、重新启动或删除虚拟机。
重新启动服务器后,会发生相同的行为,某些 XenServer 没有正确地保存/封装 VM,从而允许或共享有缺陷的实例中另一个 VM 的 VNC,这肯定是一个错误。
但是我想知道,如何防止每次发生这种情况时重新启动 Xenserver,因为我想测试不同的 FreeBSD 内核,但是重新启动影响其他正在工作的 VM 的整个服务器很麻烦,因为目前我无法停止/删除/重新启动测试 VM 实例。
理论上,XenServer 应该能够正确隔离 VM 实例,但正如这里所解释的那样,它并没有正确执行。而且在我看来,它对于测试没有用,因为它就像一台机器,每次冻结时我都必须重新启动它。
那么,有什么办法可以解决这个问题,除了用 VMWARE ESXI 之类的东西替换 XenServer 之外,在这种情况下确实不会发生此问题?
XenServer 是否使用与开源 Xen 项目相同的代码/源代码?使用其中任何一个与该问题相关吗?
仅供记录,我已经成功安装了 FreeBSD 8.2 amd64 和 FreeBSD 9 BETA,并且在内核上启用了 XEN 支持,没有任何问题,但除了操作系统之外,重点是如果其他人想要测试任何内核、LINUX 等,则应该隔离 VM,否则进行此类测试将非常困难和繁琐。
如果有人想复制这个,只需要安装 FreeBSD 8.2 i386(安装源代码)然后使用 XEN 选项(usr/src/sys/i386/conf/XEN)重新编译内核
#cd /usr/src
#make buildkernel=XEN
#make installkernel=XEN
重新启动后,XenServer 内部的某些东西将会崩溃,从而不允许您删除/停止/移除该 VM。
在 XenServer 事件日志中你会看到以下内容: 错误:涉及对象的另一项操作当前正在进行中
对于安装,我使用的是 FreeBSD-8.2-RELEASE-i386-disc1.iso
MD5 (FreeBSD-8.2-RELEASE-i386-disc1.iso) = ac6b2485e0e8a9e3c5f3a51803a5af32