论文部分内容阅读
虚拟机热迁移是指在服务不中断的前提下,将服务所在的虚拟机从一台宿主机迁移到另一台宿主机的功能。传统云平台所提供的虚拟机热迁移通常由虚拟机监控器(Hypervisor)实现,具有以下几个问题:迁移策略通常由宿主机确定,客户虚拟机无法灵活控制;迁移进程直接运行在宿主机,一旦产生安全问题会影响整个物理机;迁移过程本身所占用的CPU和网络等系统资源很难审计,可能导致不公平的资源分配;语义鸿沟问题导致传输效率下降,虚拟机内的无效数据也会通过网络传输。针对以上问题,本文提出了一种虚拟机自迁移方案,将绝大部分迁移机制由客户虚拟机实现,Hypervisor仅需提供很少的支撑功能。利用虚拟机自迁移,客户虚拟机可自定义不同的迁移策略,指定内存有效性以降低无效内存传输,云平台则简化了对迁移所占用计算资源的审计过程,同时也可将由于迁移导致的安全问题隔离在虚拟机内部。虚拟机自迁移面临一系列技术挑战。首先,虚拟机既是迁移的执行者,又是被迁移的对象,因此一方面在执行过程中其内存数据会被修改,另一方面又需要保持稳定不变的状态以方便迁移;其次,传统迁移通常会要求虚拟机暂停执行,但在虚拟机自迁移中,虚拟机自身不能被暂停,否则运行在虚拟机内部的自迁移程序也会被暂停。本文提出了基于自快照功能的虚拟机自迁移方案。该方案充分利用了Intel处理器的VMFUNC允许客户虚拟机直接切换自身的扩展页表的特点,为虚拟机创建额外的内存映射空间以保存完整的内存状态,将虚拟机工作内存与快照内存相隔离,从而使虚拟机在不暂停运行的情况下,能访问某一时刻内存状态,并保证内存数据的一致性。具体来说,客户系统调用自快照功能时,会生成与将当前EPT(Extended Page Table,扩展页表)映射完全相同的工作EPT,以备份映射的方式备份全部客户物理页,并对原EPT采用写时拷贝机制。自迁移过程中,在保证内存数据一致性且不暂停虚拟机的前提下,当拷贝迁移最后迭代的内存状态时,虚拟机可暂停所有用户进程,将此时内存状态存为快照,并继续在工作EPT中运行迁移程序。最后在目标宿主机上恢复的虚拟机状态,即为源虚拟机最后迭代快照中的状态。本文的贡献由以下部分组成:1.分析以及归纳宿主机迁移的四个不足之处,提出利用自迁移技术改善。2.提出基于自快照功能的虚拟机自迁移方案,在Hypervisor提供很少支撑功能的条件下相比宿主机迁移有更好的灵活性,更准确的资源审计,更小的可信计算基(TCB),且支持定制化。3.基于KVM实现了自迁移机制,分别测试了自快照与自迁移的性能。实验数据表明,在内存大小为4GB的虚拟机中,自快照创建速度不到1毫秒;在自快照中运行程序因物理页写时拷贝产生的性能影响可忽略;自迁移系统中完成迁移的总迭代次数和停机时间接近在相同情况下的宿主机迁移,首轮迭代页拷贝量与总迁移时长略有减少。