论文部分内容阅读
云计算集群的规模正日益增大,对可用性要求也越来越高。文献显示对于商业云计算公司而言,每分钟的宕机可能造成数万美元的损失。然而最近的研究表明在大规模云计算环境下,每年约有32%的机器会出现内存错误,更有1.3%的机器会因此导致机器重启或者数据异常。内存错误在大规模集群中,可以被认为是一种常态化的现象,因此提升内存的可用性在今天变得越发重要。传统的内存可用性提升方式可以分为硬件方式和软件方式。硬件方式包括镜像内存与ECC内存,这两类技术都需要特殊的硬件支持。软件方式也可分为两类,一类从应用层对关键数据进行备份,另一类方式使用虚拟化技术对整机进行备份,这些方式性能相对较为低下。本论文希望以软件方式实现镜像内存系统,它将为内存中的原空间创建出相应的备份空间,供备份数据存储。本论文分别在两套独立的层面实现上述功能:一种是基于操作系统层、轻量、高效的备份空间创建,即Memv6;另一种是基于虚拟化技术、对操作系统透明的Memvisor。在Memv6中,通过修改操作系统的内存管理模块,使得在创建原页表时,同步地创建备份页表,从而完成备份空间的建立。此外,为了保证原空间的地址范围与备份空间的地址范围不产生冲突,本论文分析了操作系统中的内存布局,并对原始布局进行了相应修改,保证了系统的正确性。Memvisor使用虚拟化技术完成了类似功能。通过修改直接页表技术中的页表创建流程,或者修改影子页表技术中的页表翻译流程,完成备份空间的创建。虚拟化技术可以屏蔽操作系统对备份空间创建的可见性,增大了应用范围。此外,它也允许在一个物理机上同时运行高可用虚拟机和非高可用虚拟机,相比硬件高可用方案更为灵活。实验显示,所有的原空间都成功创建了相应的备份空间,一个200KB的备份空间创建所需的额外时间少于1毫秒,对于xv6命令的性能影响为5%-8%,对小型Web服务器thttpd性能影响小于5%。相较于其他软件高可用技术,其造成的性能影响仅为它们的5%~10%。