论文部分内容阅读
随着虚拟化技术的高速发展,虚拟机实时迁移技术已经广泛应用于系统维护,负载均衡,数据备份,容错,节能等领域。目前,虚拟机实时迁移主要使用内存的预拷贝算法。在虚拟机中内存写速率较低的情况下,该算法能够很好的实现虚拟机的在线迁移,使得虚拟机的停机时间达到几十毫秒。但是在低的网络带宽和高的内存写速率情况下,预拷贝算法很难提供快速的虚拟机迁移。甚至当虚拟机内存写速率大于网络传输速率时,该算法可能会给虚拟机中对服务暂停时间有严格要求的服务带来灾难性的后果。
本文首先针对虚拟机实时迁移以及KVM(Kernel-based Virtual Machine)虚拟机做简要介绍,然后主要描述了一种基于应用优先级的虚拟机实时迁移机制。该方法假设虚拟机中同时运行了多种应用服务(如桌面虚拟化环境的虚拟机),且不同的服务对虚拟机迁移时服务暂停时间要求不同。我们的方法能够通过将那些对服务暂停时间敏感的应用设置为高优先级,而那些对暂停时间不敏感的应用被设置为低优先级,以此来实现那些高优先级应用的快速迁移,而对于那些低优先级应用,可以选择在源结点继续运行或者暂停执行,随后迁移到目的结点上。针对停机条件的设置提出了一种动态设置停机条件的方法来尽量最小化停机时间,为了使得虚拟机在迁移过程中不影响虚拟机中的网络服务,我们提出了动态限制脏页传输速率的方法。在实现这种基于应用优先级的虚拟机实时迁移的过程中,我们要求不能修改客户操作系统。为此我们实现了一种在虚拟机监控器(Virtual Machine Monitor,VMM)VMM中识别并管理虚拟机中应用程序的方法,该方法巧妙的利用硬件虚拟化的相关机制以及Linux内核的一些固有特性在VMM中获取了虚拟机中所有应用程序的相关信息并划分不同应用的脏页。
我们的实验选择了四种常用的应用运行在虚拟机中,通过对这些应用程序设置不同的优先级,与预拷贝算法相比,对于那些高优先级应用能够减少57%的停机时间和8%左右的总的迁移时间。