Citrix 服务器虚拟化之九 Xenserver虚拟机的XenMotion
XenMotion 是 XenServer 的一项功能,能够将正在运行的虚拟机从一台 XenServer 主机上迁移到另外一台主机,而不会有停机的危险。XenMotion 的主要目的是在某台服务器进行计划维修时,使终端用户觉察不到应用程序出现过极短暂的中断,令整个服务过程正常顺畅。XenMotion并不仅仅在服务器 出现故障或无法正常工作的情况下才进行迁移。XenMotion结合Xen Workload Balancing,当服务器超负荷的时候,就会将上面一部分的虚拟机,包括正在运行的应用程序原封不动地迁移到候补服务器上。因此,XenMotion能够合理地分配资源池中XenServer的工作量,大大提高了资源利用率和工作效率。XenMotion与资源池协同工作。资源池的功能是收集在一组资源中相互连接的多个相似XenServerEnterprise服务器,使与之相连接的虚拟机共享远程存储和网络资源。对于同一个资源池来说,它允许其中的虚拟机进行实时迁移。当资源池与共享存储器共同工作时,只要XenServer主机的容量足够大,那么就虚拟机就可以在这些主机中任意启动。这就为XenMotion创造了一定的条件。虽然没有进行明确的规定,但是每一个资源池一般最多可以支持16台XenServer主机。其实XenMotion迁移并无法做到百分之百的零停机,其确切的停机时间一般为100~150毫秒。但是,由于这个时间间隔很短,所以在服务器上运行的虚拟机无法觉察,就不会出现中断,而这极其短暂的停机时间大部分是花费在将网络交换设备转移到一个新的端口上。
XenMotion的系统要求:
1. XenServer中的处理器必须具有相同的类型。尽管XenMotion允许每个系统的,存储控制器和网络控制器可以不相同,但是其处理器却必须具有相同的类型。除了类型有硬性的规定之外,它还允许其存在一些细微的差异(比如的运转速度)。举个例子,对同一个资源池中的服务器来说,必须使用同一系列处理器。
2. 资源池中至少要有两台XenServer Enterprise服务器处于运转状态。
3. 虚拟机的存储器类型虚拟机必须存储在远程共享的存储器中。比如与基于网络文件系统NFS(NetworkFile System)或者iSCSI(通过iSCSI启动软件)的存储器相连接。此外,假如资源池中有某台XenServer主机被移除,那么原本在上面运行的虚拟机并没有随之被删除,而是依然存在于数据库中,不会导致数据丢失,并且对于其他的XenServer主机成员是可见的。但是这些虚拟机是处于停用状态,只有它们的虚拟磁盘被连接到共享服务器时,才可以被资源池中的其他XenServer共享。因此,为了提高资源的利用率,最好在共享存储器创建完成的时候,就把本地磁盘添加到共享存储器中。 (此处不包含无共享存储的迁移)
4. 网络的带宽要求:推荐使用千兆位的以太网。
XenMotion的运行原理:(预复制迁移)
1. 系统验证目标服务器的存储器和网络设置是否正确,并保留目标服务器虚拟机的资源。
2.当虚拟机还在源服务器上运转时,将镜像复制到目标服务器上。在这个过程中,XenServer依然会监视内存的任何变化。
3.检查镜像复制到目标服务器这个阶段中,内存较复制前是否发生了变化。
4.假如发生了变化,那么XenServer会将发生变化的内存重新复制到目标服务器中,并覆盖掉先前的内存。在这个阶段,Xen依然会继续监视内存的变化情况。
5.XenServer会持续这样的内存复制操作。随着复制次数的增加,所需要复制的数据就会明显减少,而复制所耗费的时间就会逐渐变短,那么内存就有可能没有足够的时间发生变化。最后,当源服务器与目标服务器之间的差异可以忽略不计时,内存复制操作才会结束。
6.内存复制完毕之后,将机器的工作状态复制到目标服务器之后,源服务器就停止工作。然后,将存储从源系统上解锁,并锁定在目标系统上。启动目标服务器,并与存储资源和网络资源相连接,同时清除源服务器的上的资源。
XenMotion的几种类型:(Xenserver 6.1版本以上)
1、 StorageXenMotion(SXM)是现有的VM XenMotion实时迁移功能的一种,即存储的迁移。它只把虚拟机的磁盘文件迁移到主机可以访问的另外一个存储上可以是资源池内或跨资源池的,而不影响虚拟机运行。它为客户提供一个分层的存储解决方案,使运营商向客户收取不同的费率不同类别的存储硬件的使用,然后让客户升级或降级存储,却没有VM的停机时间。 SXM还支持多个存储库类型,包括本地分机,本地LVM,NFS,iSCSI的,和光纤通道,这意味着它是不同类型的存储库之间移动虚拟机的磁盘。它甚至有可能厚置备的磁盘转换成精简置备的磁盘迁移到一个自动精简配置的存储库。存储的XenMotion执行传统的XenMotion迁移前,每个虚拟机的磁盘进行快照,从点的快照起,所有磁盘的写入同步镜像到目标存储库。在后台,创建快照的磁盘复制到目标位置。快照一旦完成复制后,要迁移的下一个磁盘快照/镜像。重复此操作,直到所有VM的磁盘的过程中被同步镜像。如果虚拟机被迁移到不同的资源池,创建一个新的虚拟机对象在目标池的数据库中,并迁移虚拟机的元数据被复制到这个新的对象。这个新的虚拟机的元数据,然后重新映射,以便它引用新磁盘已在目标存储库中创建,使虚拟机的虚拟网卡(VIFS)点到正确的目标上网络。此网络映射是由用户指定的。迁移虚拟机的存储池的XenMotion,而不是创建一个新的虚拟机对象的情况下,被重新映射元数据的地方。一旦虚拟机元数据重新映射完成后,虚拟机随时将其迁移。在这一点上,在迁移过程遵循相同的为正常的XenMotion操作。源池已成功迁移后的虚拟机,虚拟机元数据对象被删除,剩下的虚拟磁盘,已被安全地复制到新位置,从源存储库中被删除。
2、 Share NothingXenMotion无共享存储的迁移。即是虚拟机在多台Xenserver主机上迁移而不用依靠共享存储,且迁移过程不影响虚拟机的正常运行,但是目标主机上必须要有足够的磁盘空间、资源、相同系列的CPU。迁移过程会拷贝虚拟机的磁盘文件、资源文件、内存文件。这样提高了存储利用率,简化了备份及维护操作,并且在云基础设施上实现了真正意义上的虚拟机灵活性。(用于计划内的停机)
3、 共享存储下的XenMotion,也就是传统的迁移方法,迁移的主机之间必须要有共享存储、相同系列的CPU、足够的资源。迁移过程不影响虚拟机的正常运行,只移动虚拟机内存文件、资源文件。XenMotion要结合HA高可用性功能才可以实现虚拟机自动迁移重启,否则只能进行手动迁移虚拟机实现计划内的故障停机
说明:
环境基于实验八
1、在客户端使用XenCenter连接两台Xenserver主机
2、对Winoddws 8虚拟机进行在线存储迁移(Storage XenMotion),把虚拟机的磁盘文件从本地存储迁移到Virtual-Machine共享存储库上。观察虚拟机在迁移过程是否有宕机(迁移前要先删除虚拟机之前创建的快照,迁移过程基本没有宕机)
3、对Test1虚拟机进行无共享存储迁移(ShareNothing XenMotion),把Test1虚拟机从Xen1主机迁移到Xen2主机,观察虚拟机在迁移过程是否有宕机(迁移过程基本没有宕机)
4、对Windows 8虚拟机进行共享存储迁移(XenMotioin),把Windows 8虚拟机从Xen1主机迁移到Xen2主机,观察虚拟机在迁移过程是否有宕机,比较无共享存储迁移时的速度。(由于Windows 8虚拟机的文件保存在Virtual-Machine共享存储库上,且对于Xen1主机和Xen2主机同时可见,那么迁移过程只拷贝虚拟机内存文件和资源文件)基本没有宕机.迁移过程比较快
视频分享: