我正在研究 Citrix 的 XenServer,并(与 2 位同事)将它与 VMware ESX 和 Microsoft HyperV 进行比较。
在我们的测试中,Xen 的实时迁移使用的资源似乎比 VMware 的 ESX 少,我想知道为什么会这样。我发现去年的一篇文章引用了 2005 年的一篇论文,解释了实时迁移期间页面/内存的实际情况。
这是那篇关于内存传输的文章的摘录:
推送阶段 - 源 VM 继续运行,同时某些页面通过网络推送到新目标。为确保一致性,在此过程中修改的页面必须重新发送。
停止和复制阶段 停止源 VM,将页面复制到目标 VM,然后启动新 VM。
拉取阶段 新的虚拟机执行,如果它访问一个尚未被复制的页面,这个页面会从源虚拟机通过网络出现故障(“拉取”)。
我想知道内存转移是否仍然以与 4 年前相同的方式发生。
我不是 Xen 迁移方面的专家,我使用的是开源 Xen 服务器。根据我的经验,只要您的存储层速度很快,Xen 服务器的迁移效率就非常高——根据我们的经验,磁盘映像作为 ocfs2 卷上的文件或(上帝保佑)NFS 挂载比 SAN 上的块设备慢得多NFS 挂载上的共享锁定卷。我们没有遇到磁盘损坏的问题,但是为了确保安全,在我们开始在非常活跃的系统上进行迁移之前,我们确实倾向于对事物(LVM2 和 VM 状态)进行快照。
根据 Matthews、Dow 等人的“Running Xen: A Hands On Guide to the Art of Virtualization”,Prentice Hall 2008,第 484 页,
看起来这类似于您上面描述的步骤列表,但添加了迭代。请注意,当前状态为实时迁移的机器可能在两个地方进行 I/O。
与 VMWare 和 HyperV 不同,XenServer 的好处在于,从周日开始,有很多人一直在运行它,并在非常严肃的生产环境中竭尽全力以十种方式破解它。实时迁移对我们来说是新事物,我们还没有在生产环境中这样做,因为我们有冗余问题(由于我们在 ocfs2 卷上拥有共享数据分区,此时扩展到 n 台机器并非易事),但在我们的测试环境,我们一直在到处玩弹跳机器。