论文阅读之Live Migration of Virtual Machine Based on Full System Trace and Replay

Live Migration of Virtual Machine Based on Full System Trace and Replay
作者:刘海坤、金海、廖小飞、胡丽婷、余辰

摘要

之前的虚拟机迁移关注的是虚拟机内存预拷贝的算法,而这种方式对于内存敏感的工作会造成大量的网络消耗以及程序拓机时间。本文提出了一种全新的监测点/还原以及追踪/重返机制的方式的设计与实现。通过在源主机上面反复执行一个同步算法,直到源主机与目的主机达到一致的助攻那台。

介绍

近年来,使用虚拟机迁移进行数据中心管理受到了广泛的关注。不同物理主机之间的虚拟机迁移技术为基于多虚拟机的环境提供了一种新的优势。虚拟机热迁移是集群管理中特别有用的工具在以下几个方面:

  • 负载均衡
    虚拟机可以进行重新排列,从而减轻某些主机的负担。

  • 在线维护与主动容错
    迁移现有虚拟机至备用机器可以对原主机进行升级,这样可以提高系统服务的能力和可用性。

  • 能耗管理
    当虚拟机的任务不是很重时,可以将一部分虚拟机迁移到较少的主机上面,关闭一些主机,这样可以帮助企业减少IT开支,同时对于大自然也有益处。

从这种情形来说,虚拟化与迁移的结合提高了数据中心和集群的可管理性。有许多关于这方面的研究,最有影响力的是VMotion和XenMotion,它们分别被加入到了VMware和XenSource中,作为它们的一部分。它们的实现机制也非常相似,因为它们具有相同的应用方案以及相同的物理内存迁移和网络连接的模式。

在任何一种迁移中,有三种状态需要迁移:

  • 虚拟机的物理内存
  • 网络连接和虚拟设备的状态
  • SCSI存储

最棘手的问题是物理内存的迁移,因为这是影响迁移拓机时间的关键因素。例如在这个时间内,虚拟机上面的服务是不可见的。
VMotion和XenMotion采取了预拷贝策略来解决这个问题。但是当内存中脏页产生的速度大于预拷贝程序速度是,所有的预拷贝工作将是无用的。此时需要立即停止虚拟机,并将内存页进行拷贝。一些内存敏感的工作不会从预拷贝算法中获得益处,而且拓机时间会增加至几秒钟。这种方案的特点决定了这种算法只有在高速局域网中适用。

一些半虚拟化的优化方案例如冻结异常进程以及释放未分配页等在XenMotion中有提到,但是这些会对影响到用户体验,特别是延时敏感的交互式服务。

最后,预拷贝算法不会还原CPU中的缓冲数据,尽管这个不会在目标机器上产生错误,但是由于大量的Cache以及快表中的数据缺失,一旦新的虚拟机替代了服务,会导致性能降低。

本文提出了一种追踪以及重放的方式来进行虚拟机的快速热迁移。在源宿主机上有一个追踪的守护程序,不听记录虚拟机的事件,源主机上的执行追踪文件将会迭代传输至目标宿主机,用于同步被迁移虚拟机的执行状态。

这篇文章的主要贡献如下:

  • 设计和实现了一种迁移方法减少虚拟机迁移的拓机时间和网络开销。
  • 实现了一种使用写时拷贝机制的透明虚拟机检测点。
  • 制定了一种正式的迁移衡量的描述,并对这种算法进行了数学分析。

执行追踪的确定重放

监测点/还原和追踪/重放是在系统状态还原中广泛使用的技术。ReVirt是一种典型的整个系统建立日志并重放的工具,该工具被嵌入衡量的描述,并对这种算法进行了数学分析。

检查点/重返机制是的主要理念是从之前状态的检查点进行往后滚动到想要的状态。
这其中的关键就是记录下系统的自检查点之后的所有事件,大部分事件是确定性事件,还是有少部分是不确定性事件,不确定事件分为两类:

  • 时间
  • 外设输入

执行追踪的确定重放

监测点/还原和追踪/重放是在系统状态还原中广泛使用的技术。ReVirt是一种典型的整个系统建立日志并重放的工具,被嵌入到了UMLinux中,主要用于指令检测。ReVirt一条一条地记录虚拟机的指令,并在重放中再次传递这些信号。但是Revirt添加了合理的时间和空间开销,但是由于不同的工作负载,导致日志大小增长的范围是0.04GB/day~1.2GB/day。

作者采用的方式就是,采用写是拷贝的方式制作一个透明的监测点,然后源虚拟机继续执行的同事,监测点通过网络被推送到目标主机。在内部传输过程中产生的日志文件需要迭代传输至目标主机从而保证两边的一致性。最后,源虚拟机关闭,并且最后的日志文件被拷贝至目标虚拟机,目标虚拟机根据日志文件进行重放,并承担起源虚拟机的服务。

算法设计

设计目标

ZHANGCHI wechat
关注微信号进一步交流