论文部分内容阅读
有这么一种常见的虚拟化应用:同一虚拟化平台上运行着多个虚拟机,并且这些虚拟机上都运行着相同的操作系统,运行着可能相同或者不同的应用程序。针对这种虚拟机运行背景的相似性来实现内存以及外存的资源共享,提高虚拟化性能,已经成为虚拟化领域的一个有意义的研究方向。相似虚拟机的快速启动,目的是使得物理机器上能够快速启动并较顺畅地运行尽可能多个虚拟机。一个操作系统已经在第一台虚拟机上运行了,那么当同样的操作系统在第二台虚拟机上启动时,没有必要再从其外存映像中重复读取相同的代码和数据。虚拟环境下的磁盘I/O是一项耗时工作,如果载入这些代码或者数据的过程能够被避免,则启动时间能够被大大缩短。这使得在某虚拟机上已经运行的系统或者进程,在其他虚拟机上启动时,其启动过程被加速。
本文针对多台相似虚拟机特殊性,对虚拟化平台进行改进,使得资源能够得到最大限度的利用。其原理主要分为三方面:首先是建立外存共享机制,每个虚拟机没有必要保存一份完全独立的虚拟镜像,每个可写快照镜像只保存相异内存,其他相同内容都保存在主镜像中:第二是内存共享,当虚拟机的系统启动读取外存内容时,如果发现它读取的内容来自于主镜像,则向KVM中维护的“外存-内存hash表”查询这些数据是否已经被某个虚拟机读入到内存中,如果是,那么利用内存映射米代替外存读取这样的耗时工作;如果没有,则通过原模拟DMA的方式从外存镜像读入,并且把新信息加入到“外存-内存hash表”中以待将来的共享。第三是对共享信息的侦听,新信息被加入“外存-内存hash表”中的同时,也加入到“侦听hash表”中,当发现有写页面操作时,先查“侦听hash表”该页面是否属于“外存-内存hash表”,如果是则删除两表中的相应信息。本文基于KVM虚拟化平台,实现一个具有快速启动技术的原型系统。实验结果表明,本文提出的快速启动确实能够提供比较明显的加速效果,由于能够在一定程度上节省内存资源,增加了虚拟化平台能同时支持的虚拟机数量。