一种高效的虚拟机快照管理系统的设计与实现_第1页
一种高效的虚拟机快照管理系统的设计与实现_第2页
一种高效的虚拟机快照管理系统的设计与实现_第3页
一种高效的虚拟机快照管理系统的设计与实现_第4页
一种高效的虚拟机快照管理系统的设计与实现_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国科学院大学软件研究所硕士学位论文内存数据网格事务保障机制的设计与实现摘要

摘要一种高效的虚拟机快照管理系统的设计与实现摘要随着虚拟化技术的快速发展和应用深入,虚拟机逐渐替代物理机成为企业关键业务系统的运行支撑环境,而保障虚拟机的可用性则成为衡量关键业务系统可靠性的重要度量指标之一,因为虚拟机故障或宕机会给企业带来严重的经济和名誉损失。如2010年1月,Ruby-on-Rails应用托管商Heroku在AmazonEC2平台上的22台虚拟机发生故障,影响了站点上44000个应用的正常使用。因此,在虚拟化计算环境中,能否支持高效的虚拟机失效恢复至关重要。快照技术是支持虚拟机失效恢复的一种常用技术手段,快照是虚拟磁盘在某一时间点的状态和数据的副本。当虚拟机因内部或外部因素发生无法修复的故障时,可通过回滚到快照时间点的方式实现虚拟机的快速恢复。目前大多数虚拟化平台都支持虚拟机虚拟磁盘快照功能,然而目前的大多数快照实现都是链式关联磁盘快照,每个快照都仅记录了部分的磁盘数据。快照间的链式关联关系,会引入多余的I/O请求,导致虚拟机性能低效。此外,传统的周期性快照策略由于无差异配置且不能适应负载动态变化,会引入不必要的快照操作,造成资源浪费和操作开销。本文系统的目标就是在虚拟化计算环境中设计和实现一个高效的虚拟机快照管理系统。在降低链式关联虚拟磁盘快照对虚拟机性能影响方面,本文采用了无链式关联虚拟磁盘快照技术,通过集成ZFS和OCFS2文件系统,设计存储对象抽象模型和快照存储组织模型,以及定义快照操作约束限制,给出了快照实现;在改变周期性快照策略方面,本文依据虚拟机应用类型的不同将虚拟机分为应用服务器、数据库以及负载均衡三种类型,根据虚拟机类型以及结合不同类型虚拟机所能承受的数据丢失量和数据丢失率为虚拟机配置差异的快照策略,并设计策略调度过程算法调度执行快照策略;此外,系统基于XML-RPC远程过程调用以及服务器端信息推送技术设计了快照图形化管理界面,展示快照基本信息、策略管理以及预警管理等功能。基于上述研究和设计,论文在VMFabric虚拟化平台中实现了一个高效的虚拟机快照管理系统。实验结果表明,该系统能够有效降低快照对虚拟机性能的影响,并具备良好的可管理性。关键词:虚拟机,虚拟磁盘快照,高效,无链式关联快照,差异策略摘要摘要Abstract

TheDesignandImplementationofanEfficientManagementSystemforVirtualMachineSnapshotsAbstractAlongwiththerapiddevelopmentofvirtualizationtechnologyanditsin-depthapplication,virtualmachinesgraduallyreplacephysicalmachinesandbecometherunningenvironmentforenterprises’keybusinesssystems.Butfailureordowntimeofvirtualmachineswillbringseriouseconomicandreputationlosstotheenterprise,andhowtoensuretheavailabilityofvirtualmachinehasbecomeoneofthemostimportantmeasuresforthereliabilityofkeybusinesssystems.Virtualdisksnapshotisaprevailingtechnologytosupportvirtualmachinefailover.It’susuallyorganizedintolinkedstructure,whichmaycausevirtualmachineperformancedegradationforadditionaldiskI/Ooverhead.Furthermore,thetraditionalperiodicsnapshotstrategycan’tadapttothedynamicload.Andtoconfigurethesameperiodforallvirtualmachineswillintroduceunnecessarysnapshotoperationsaswellasresourceswaste.Inthispaper,wefirstlyanalyzetheefficiencyofdisksnapshottechnologywithnon-linkedstructure.ByintegratingZFSandOCFS2filesystemwhichisbasedonnon-linkedstructure,weimplementanefficientmanagementsystemforvirtualmachinesnapshots.Inordertoimprovetheefficiencyofsnapshotretrieval,wealsoproposeavirtualmachinesnapshotstorageorganizationmodelandoptimizeasnapshotsearchalgorithm.Secondly,wedesignastrategyschedulingalgorithmandimplementadissimilaritysnapshotstrategy.Accordingtothedifferenttypesofvirtualmachine’sapplications,wedividevirtualmachinesintothreetypes:applicationserver,databaseserverandloadbalanceserver.Thenbasedonthetypeofvirtualmachines,andcombinewithdatalossrateandamountofdatalossvirtualmachinescanbear,weconfiguredissimilarsnapshotstrategyforvirtualmachines.Thirdly,basedonXML-RPCtechnologyandserverpushtechnology,wedesignsnapshotsgraphicalmanagementinterfaces.Itcandisplaysnapshots’basicinformation,managesnapshotstrategyandsnapshotalert,etc.Basedonthedesignsandstudiesmentionedabove,weimplementanefficientmanagementsystemforvirtualmachinesnapshots.Experimentalresultsshowthatoursystemcaneffectivelyreducesnapshot’sinfluenceontheperformanceofvirtualmachinesandprovidewellmanageability.Keywords:virtualmachine,virtualdisksnapshot,efficient,disksnapshottechnologywithnon-linkedstructure,dissimilarsnapshotstrategy

目录目录第一章 绪论 11.1 研究背景 11.2 研究现状 21.3 论文工作 41.4 论文组织 5第二章 预备知识及相关概述 72.1 虚拟机技术 72.1.1 虚拟机技术概述 72.1.2 Xen虚拟机技术 82.1.3 虚拟磁盘技术 102.2 虚拟机快照技术 112.2.1 快照技术概述 112.2.2 系统快照技术原理 132.3 本章小结 15第三章 虚拟机快照管理系统关键技术 173.1 存储对象抽象模型 173.1.1 存储对象映射关系 173.1.2 映射关系存储方式 193.2 快照存储组织模型 213.3 操作约束限制规则 233.3.1 快照创建命名规则 233.3.2 VM删除约束限制 233.4 快照快速检索算法 253.5 策略调度过程 273.6 本章小结 29第四章 虚拟机快照管理系统的设计与实现 314.1 系统实现概要 314.2 VMFabric虚拟化平台 314.2.1 VMFabric虚拟化资源池 324.2.2 VMFabric虚拟化平台体系结构 344.3 虚拟机快照管理系统 374.3.1 快照管理系统体系架构 374.3.2 快照功能集成模块 394.3.3 快照API接口模块 424.3.4 快照信息分析模块 444.3.5 快照策略管理模块 464.4 本章小结 49第五章 系统实验与分析 515.1 功能测试 515.1.1 实验配置 515.1.2 实验结果 515.2 性能测试 545.2.1 实验配置 545.2.2 实验结果 54第六章 结束语 576.1 工作总结 576.2 进一步工作 57参考文献 59作者简历 63学术论文与研究成果 65致谢 67

第一章绪论绪论研究背景随着互联网的快速建设和计算机技术的迅猛发展,信息服务在数量和种类上以爆炸式速度增长,企业纷纷把核心业务和数据放到IT系统中运营。与此同时,用户数量不断攀升,用户对信息服务的需求也越来越复杂,越来越多样化。企业和个人都需要更安全可靠、易于管理且成本低廉的信息服务。对信息服务的高要求促使学术界和工业界将关注重点转向虚拟化技术。虚拟化技术[1,2,3]把CPU、内存、网络、存储等物理资源变为逻辑上可管理的资源,打破了运行环境与实体资源之间的独占关系,单一运行环境可使用实体部分资源或多实体资源,不再受物理限制的约束。通过虚拟化技术,企业可动态调度资源,降低运营成本和能源消耗,提高资源利用率,也可为用户提供可配置的使用环境。全球虚拟化市场一直在持续快速增长。IDC预测到2015年,全球主要企业的服务器将有50%实现虚拟化[4]。信息技术研究及咨询公司Gartner则预测从2013年开始到2016年左右,中国政府和企业会将70%的工作负载迁移到虚拟化环境中[5]。虚拟机[6]是虚拟化计算环境中的一个重要组件,每个虚拟机实例都是一个严密隔离的软件容器,像物理主机一样运行自己的操作系统和应用程序,拥有自己的物理资源,如虚拟CPU、内存、虚拟磁盘和网络接口卡等。随着虚拟化技术的快速发展和应用深入,虚拟机逐渐替代物理机成为企业关键业务系统的运行支撑环境,而保障虚拟机的可用性则成为衡量关键业务系统可靠性的重要度量指标之一,因为虚拟机故障或宕机会给企业带来严重的经济和名誉损失。如Amazon虚拟化平台EC2的虚拟机宕机事件。2010年1月,Ruby-on-Rails应用托管商Heroku在AmazonEC2平台上的22台虚拟机发生故障,影响了站点上44000个应用的正常使用[7]。2011年4月,AmazonEBS发生故障,停机长达12小时,5天后故障也没有完全修复[8]。因此,在虚拟化计算环境中,提供某种虚拟机级别的系统保护措施至关重要;支持虚拟机失效恢复逐渐成为学术界研究的热点和产业界关注的重点。虚拟机快照技术是支持虚拟机失效恢复的一种常用技术手段,快照是虚拟磁盘在某一时间点的状态和数据的副本,这里虚拟磁盘是指虚拟机操作系统及其部署应用的逻辑抽象。因此,当虚拟机因内部或外部因素发生无法修复的故障时,可通过回滚到快照时间点的方式实现虚拟机的快速恢复。针对虚拟机占用空间大,全拷贝策略的快照实现技术具有耗时长的不足(时间复杂度与虚拟机占用空间大小的关系是O(N))。Citrix的XenServer[9],Microsoft的Hyper-v[10]等虚拟化产品实现了一种时间复杂度为O(1)的虚拟机快照技术,这种技术通过共享虚拟磁盘,不复制数据本身仅修改磁盘索引来实现快照的瞬时生成。然而此种快照技术生成的每个磁盘快照都仅保留了上一快照时间点之后的修改数据,都只记录了部分的磁盘数据,生成的快照间具有链式关联,导致虚拟机的数据读写请求由无快照状态下的一次读一次写变为多次读一次写。这些多余的I/O请求会严重影响虚拟机性能,导致虚拟机低效,且随着快照链长度增长而愈加明显。此外,传统的虚拟机快照管理系统中,通常采用周期性的快照策略来自动生成快照,简化了快照过程中的人工操作,但由于时间间隔固定,不能适应系统负载的动态变化。如果某一时间间隔内应用对数据块修改非常频繁,该时间间隔内只创建一个快照,那么会增大快照文件的大小,当系统因内部或外部因素发生故障时,将会造成大量历史数据的丢失;但如果某一时间间隔内,应用没有对数据进行修改,那么创建快照将造成系统不必要的操作开销和资源浪费,增加快照链的长度,而快照链过长会影响虚拟机性能。因此,制定合理的快照生成时机和快照生成频率对系统的性能和系统数据的完整性也是至关重要的。针对上述问题,本文首先采用无链式关联虚拟磁盘快照技术,用以打破快照间链式关联,降低快照对虚拟机性能影响;在此基础之上,进一步优化虚拟机快照管理,设计和实现虚拟机快照策略管理,依据不同的虚拟机类型为虚拟机配置不同的快照管理策略,降低由周期性快照策略引入不必要快照创建造成的虚拟机低效;此外,也设计和实现对快照信息的监测分析和预警功能,以帮助用户更好地管理快照。研究现状信息化的推进给信息存储带来了更高的要求,作为数据保护技术的虚拟机快照技术得以蓬勃发展,在工业界和学术界都进行了广泛地研究。如何降低快照引起的虚拟机性能低效问题也逐渐成为工业界和学术界的一个关注重点。现有虚拟化产品中,大多数虚拟化平台都提供了虚拟机快照机制以保证虚拟机的快速失效恢复。例如XenServer基于逻辑卷的快照和基于文件的VHD格式的快照,VMware基于文件的VMDK格式的快照,Hyper-V[12]基于文件的VHD格式的快照以及KVM[13]提供的基于文件的QCOW2格式的快照[38]等。这些虚拟化平台实现的快照都是增量式快照,快照间以“链式”结构连接。以XenServer虚拟化平台的快照为例。基于不同的存储类型,XenServer[11]提供了三种不同的快照机制:Volume-based快照、File-based快照以及StorageLink快照。无论何种快照实现,创建XenServer虚拟磁盘快照时都会新建两个VDI(VirtualDiskImage,虚拟磁盘标识),以VDIA表示创建快照前磁盘VDI,以VDIB及VDIC分别表示新建VDI;创建虚拟磁盘快照后,原始磁盘VDIA将成为父节点,成为BASECOPY,并分配新的UUID(UniversallyUniqueIdentifier,通用唯一辨别码),创建快照之后的写操作不再写入到VDIA中;VDIA原始的UUID被分配给VDIB,以在VDIA和VDIB之间建立重映射(VDIRemapping),虚拟机仍然沿用原始的UUID,创建快照之后的写操作全存储在VDIB中;VDIC也是VDIA的孩子节点,指向VDIA,为对应时间点的快照,也可用来支持对快照潜在的读写操作。后续快照的创建也重复以上过程。快照创建过程如REF_Ref385886636\h图1-1XenServer虚拟机快照技术原理所示。从中可以看出快照间是一种特殊的“链式”结构,准备来讲应该是“树式”结构。每创建一次快照,就会增加快照链长度。根据微软、VMware等虚拟化厂商研究,快照链过长会严重影响虚拟磁盘I/O性能,进而影响虚拟机性能,因此VMware建议快照链的长度不超过2~3个快照,每个快照的保留时间不超过24~72小时[14]。此外,各虚拟化平台也提供了一系列的管理工具以方便用户更好地管理虚拟机快照,像XenServer的XenCenter、CLI,Vmware的vSphereWebClient、vCenterOperationsManager以及第三方的PowerShell、RVTools等。通过这些管理工具,用户可以列出虚拟机快照、创建快照、回滚快照、删除快照以及接收快照预警信息并进行相应的调整工作。图1-SEQ图1_-\*ARABIC1XenServer虚拟机快照技术原理学术界主要从降低请求响应时间、缩短快照链长度、改变快照策略等方面降低快照对虚拟机性能影响。PCOW[15]为快照写请求加入写缓存,减少了写操作的等待时间,降低了写请求的响应时间;LVHPsnap[16]通过构建混合快照链表和压缩快照索引实现了高频度快照生成时系统能保持较高的性能和存储空间利用率;HCSIM[17]提出了结合数据分布特征和检索模式的分层次二维索引结构,显著提高了快照索引的存储效率和快照检索效率;Skippy[18]利用内存快照HotData的特性,提出分层次的索引结构,提高了快照的检索效率;文献19则通过在已有虚拟化平台上配置持续的快照收集和合并策略,缩短快照链长度,减少不必要的快照创建操作,降低了快照对虚拟机性能的影响并保证了虚拟机的高可用性。无论是工业界在管理上的努力还是学术界在实现上的优化,这些方法都只在一定程度上降低了快照对虚拟机性能的影响,没有打破快照间的链式关联关系,快照间的链式结构依然是影响虚拟机性能的主要因素。论文工作本文主要研究虚拟化环境下虚拟机快照性能和策略管理问题,以设计一个高效可用的虚拟机快照管理系统为目标。系统具体实现是虚拟化平台VMFabric的一个组成部分,主要从打破快照间链式结构和改进虚拟机快照策略两方面来降低虚拟磁盘快照对虚拟机性能的影响。本文的主要工作如下:(1)无链式关联虚拟磁盘快照技术磁盘快照间的链式结构是影响虚拟机性能的主要因素。如能改进快照间的“链式”结构,让每个快照都是相应时间点的一个完整磁盘状态,消除快照的链式关联,将极大地降低虚拟机快照对虚拟机性能的影响。本文首先分析和研究了无链式关联虚拟磁盘快照技术,这种快照实现记录了所有磁盘数据的索引,所生成快照都是对应时间点的一个完整状态,打破了快照间链式关联;然后基于ZFS文件系统和OCFS2文件系统,设计和实现了快照存储组织模型和快照适配功能,给出了无链式关联虚拟磁盘快照技术的实现。(2)差异增量虚拟磁盘快照策略传统的周期性快照策略由于时间间隔固定,不能适应负载动态变化,在无数据修改情况下,执行虚拟机快照创建将造成虚拟机不必要的操作开销和资源浪费,引起虚拟机性能低效。此外,保留过多快照会占用大量存储空间,且使快照检索变得困难。针对快照策略导致虚拟机性能低效问题,本文将依据虚拟机类型,并结合不同类型虚拟机所能容忍的数据丢失量和数据丢失率,为用户推荐最优的快照生成时间间隔、快照增量文件阈值以及快照保留个数;用户可根据偏好为不同虚拟机配置相异的快照策略,以“固定时间间隔”或“增量文件阈值”作为快照生成操作的标准,减少不必要的快照操作,最优化对整个系统性能和数据完整性的影响。系统也将依据快照策略里设置的快照保留个数,及时清除较旧的虚拟磁盘快照。(3)虚拟机快照信息监测分析为帮助用户更好地管理虚拟机快照,本文也提供了虚拟机快照信息监测分析功能。虚拟磁盘快照个数、占用存储空间以及由快照导致的虚拟机间的关联关系等快照基本信息都将以图表形式显示给用户。与此同时,也提供快照信息预警功能,用户可设置快照信息阈值,如快照所占用磁盘空间阈值;系统实时监测虚拟机快照信息,依据超出阈值多少给用户以不同级别的警示信息。论文组织本文全文共分为6个章节,内容组织如下:第1章为绪论。本章首先阐述了课题的研究背景,介绍了虚拟化计算环境中虚拟机失效恢复的重要性,以及支持虚拟机失效恢复的虚拟磁盘快照技术所带来的虚拟机性能问题;接下来分别介绍了工业界和学术界针对快照链影响虚拟机性能问题所进行的研究工作和研究现状;最后,简要介绍了论文的主要工作和论文的组织结构。第2章为虚拟机快照技术综述。本章首先介绍了虚拟化计算环境中的虚拟机技术以及虚拟磁盘技术;然后详细介绍了虚拟机磁盘快照技术,包括虚拟机快照分类、快照的实现技术写时复制技术COW(CopyOnWrite)以及重定位写技术ROW(RedirectOnWrite),最后介绍了系统技术原理,分析了链式关联虚拟磁盘快照技术和无链式关联虚拟磁盘快照技术。第3章为系统实现中所采用的关键技术。本章首先介绍了为实现无链式关联虚拟磁盘快照技术所设计的虚拟机快照存储组织模型、快照命名规则、虚拟机删除操作约束限制以及快照快速检索算法;然后介绍了虚拟机快照信息监测所采用的信息拉取技术;最后介绍了虚拟机快照策略管理中,依据为虚拟机配置的差异性周期或数据增量快照策略以及快照的保留个数,设计的快照策略调度过程以及快照策略调度算法。第4章为系统设计与实现。基于前面的关键技术,本章详细介绍了虚拟机快照管理系统的设计与实现,包括底层无链式虚拟磁盘快照技术的设计与实现,上层快照创建、删除等常规功能设计与实现,自适应快照策略管理的设计与实现以及快照信息监测分析功能的设计与实现。第5章为性能评估与实验数据分析。设计实验方法以及测试环境,利用一系列标准化测试工具通过在不同快照实现的虚拟化平台上的对比实验,验证了本文系统所实现的虚拟磁盘快照技术在降低快照对虚拟机性能方面的有效性;对于虚拟机快照管理系统所实现的各功能,也通过单元测试与整体测试,验证了本文功能的可用性。第6章为结语。本章主要对整篇论文进行了总结,列举了本文的主要工作与贡献,并对进一步的研究工作进行了介绍和展望。

第二章预备知识及相关概述预备知识及相关概述随着越来越多的关键业务被部署到虚拟化平台中,对数据安全性也就提出了越来越高的要求,传统的数据保护技术已不能满足当前的数据保护需求;与传统的数据保护技术相比,快照技术简洁高效,它是关于指定数据集合的一个完全可用拷贝。本文所说的虚拟机快照主要是指虚拟磁盘快照,是支持虚拟机失效恢复的一种常用技术手段。前文已简要回顾了本文的项目背景、研究现状等内容,下面将概括说明本文所涉及到的基础理论知识,以便能更好地铺垫后文。虚拟机技术虚拟机技术概述虚拟机[26]是指可以像真实机器一样运行程序的计算机的软件实现。虚拟机技术是通过在软、硬件之间增加虚拟中间层,由虚拟中间层截获上层软件对底层接口的调用,并对该调用重新作出解释和处理,以实现异构环境中资源的可共享、可管理和可协同,并支持应用大规模部署、迁移和运行维护[20,21]。通过虚拟机,可实现硬件资源共享和应用软件运行隔离。虚拟机技术的发展可追溯到上世纪60年代,IBM剑桥研究中心发明了一种虚拟机技术VM/370,允许多个用户共享同一计算机系统,可为不同用户和应用软件提供独立、共享的运行环境;打破了软件运行对硬件平台具有的独占性和排他性,使共享硬件资源成为可能。虚拟机技术开始主要应用于大型主机中。由于门槛较高且应用有限,虚拟机技术的发展曾一度停滞不前。到上世纪90年代,随着对软件重用和可移植性需求的不断提高,虚拟机技术逐渐受到重视并不断发展,出现了进程级虚拟机。如1980年出现的Smalltalk-80语言利用虚拟机“翻译”由编译器生成的“中间码”,虚拟机会将“中间码”翻译成所对应的硬件平台能够执行的代码,实现了应用跨平台。后来SUN公司的JAVA语言也通过借鉴虚拟机技术实现了“一次编译到处运行”。为支持遗留软件的跨平台,Connectix公司在1997年发布了VirtualPC[22],支持已有应用无需修改即可在虚拟机上运行。而之后VMware公司推出的VMwareESXserver和VMwareworkstation虚拟机的巨大成功,更是推动了虚拟机技术的发展,虚拟机的软件隔离和硬件共享能力在企业界获得了广泛地应用。剑桥大学教授Ian开发的虚拟机监控器(virtualmachinemonitor,简称VMM)XEN得益于其优越的性能和开源性,被业界认为是未来最有前途的一款虚拟机管理软件,本文中虚拟机功能实现就是基于XEN虚拟机。XEN虚拟机的LiveMigration技术可支持虚拟机在线迁移,屏蔽硬件资源的动态变化对软件的影响,实现资源动态负载均衡。为满足不同的应用需求,工业界和学术界给出了多种不同的虚拟机实现,可以按多种标准给虚拟机分类[23]。根据虚拟机运用及与直接机器的相关性的不同,可将虚拟机分为系统虚拟机和进程虚拟机;系统虚拟机提供了一个可以运行完整操作系统的完整系统平台,运行开销较大;相反,进程虚拟机为单个系统进程提供虚拟运行环境,运行开销较小;系统虚拟机如XEN、VMware、VirtualBox等,进程虚拟机如JAVA、Smalltalk等高级语言的虚拟机。根据虚拟机所在中间层位置的不同,可将虚拟机划分为硬件(HW)虚拟机、操作系统(OS)虚拟机和应用程序虚拟机;根据是否需要修改客户机操作系统(Guest系统,虚拟机配置的操作系统),可将虚拟机分为半虚拟化虚拟机和全虚拟化虚拟机;全虚拟化虚拟机的Guest系统对硬件的每次操作请求,都将由Hypervisor(系统管理程序)接管,并转换成Hypervisor的代码,由Hypervisor负责对最终硬件进行操作;好处是Guest系统每一次对于物理硬件的请求都会变为对Hypervisor管理的虚拟硬件的请求,很好的隔离了Guest系统与物理系统,当物理系统进行升级或者硬件更换时,无需修改Guest系统,坏处则是每一指令转化会使得资源消耗过多;半虚拟化虚拟机共享当前系统的硬件驱动,只负责Guest系统请求的资源调度;好处是避免了对硬件请求的指令重写,提高了系统性能,有效的利用资源,坏处是每一次硬件系统升级要对Guest系统改写。虚拟机还有多种其他分类标准,如宿主环境、宿主机和客户机指令的异同等,这里就不再一一赘述。Xen虚拟机技术Xen[24]是开放源代码的虚拟机监视器VMM,遵循GNU许可,运行在x86体系结构上,支持多个计算机系统运行在同一计算机硬件上。其性能接近单机操作系统(NativeOperatingSystem)的性能,已获得多家业界主要供应商的支持。Xen在设计之初为了追求卓越的性能,采用了半虚拟化(Para-Virtualization)技术,需修改Guest操作系统;通过重新规划操作系统内核地址空间,避免一些特权CPU指令的调用,以及调用VMM提供的API支持控制操作的完成,实现了Guest操作系统内核与VMM的协同工作。从Xen3.0[25]开始通过引入Intel和AMD的VT-x及SVM硬件虚拟化技术后,Xen能够实现全虚拟化,可支持WindowsXP等非开源的操作系统在其上运行。Xen体系结构如REF_Ref385886742\h图2-1所示。图2-SEQ图2_-\*ARABIC1Xen虚拟机体系架构XenHypervisor直接运行于硬件裸机上,为其上运行的操作系统内核提供虚拟化的硬件环境,控制和管理虚拟硬件资源,并负责在各虚拟机之间进行CPU调度、内存分配等共享资源的控制访问,具有最高特权级ring0;XenHypervisor由控制接口、硬件安全访问接口、事件通道、虚拟处理器、虚拟内存管理单元组成。在XenHypervisor之上运行有多个虚拟机,每个运行的虚拟机实例都称为Domain(域)或者Guest。其中Domain0域是一个修改过的LinuxKernel,运行在ring1,是一个具有特殊地位的虚拟机,是唯一直接运行在XenHypervisor之上的虚拟机,又称为Xen0,其他虚拟机称为DomainU。Domain0用来辅助Xen管理其他Domain,负责与系统上运行的其他虚拟机进行交互,提供相应的虚拟资源服务,特别是其他Domain对I/O设备的访问。Xen向Domain提供了一个抽象层(包含管理和虚拟硬件API)。其中,Domian0拥有真实设备驱动,即NativeDeviceDriver原生设备驱动,能够直接访问物理硬件,与Xen提供的管理API进行交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境,启动或停止其他Domain,并通过控制接口(ControlInterface)控制其他Domain的CPU调度、内存分配以及设备访问,如物理磁盘存储和网络接口等。同其他虚拟机系统一样,在Domain中运行的操作系统也称为客户操作系统。特别地,Xen采用混合模式,在Xen提供半虚拟化的时候,运行在Hypervisor上的虚拟机称为“DomainUPVGuests”,其上运行着修改过内核的操作系统,如Linux、Solaris、FreeBSD等;在Xen支持的全虚拟化的时候,运行在Hypervisor上的虚拟机称为“DomainUHVMGuests”,其上运行着不需要修改内核的操作系统,如Windows系列系统。在Xen系统中,Xen实现了CPU虚拟化、内存虚拟化以及I/O虚拟化,向Domain提供了基本的虚拟硬件(VCPU、虚拟MMU)和基本机制(事件通道),且提供了相应的硬件接口,以保证设备访问的安全进行[27]。在x86架构下,CPU提供4个特权级(0环至3环)。操作系统位于最高特权级0环,用户应用程序则位于最低特权级3环。在Xen系统中,Xen位于GuestOS和硬件之间,具有比GuestOS更高的运行特权级,GuestOS被迫迁移到相对较低的特权级中,GuestOS不能直接对物理CPU进行调度。为此,XEN建立vCPU结构,为每一个Domain提供一个或者多个vCPU结构。在Domain内部,GuestOS对vCPU进行调度,而在XEN中,vCPU分时复用物理CPU,任意时刻一个物理CPU只能被一个vCPU使用。所以XEN必须对vCPU合理地分配时间片并维护所有vCPU的状态,保证vCPU的正确执行,并对vCPU使用物理CPU进行调度。简单最小时限调度算法和基于额度的调度算法是Xen系统中主要支持的两种调度算法。内存虚拟化是虚拟化技术中的一个难题,每个操作系统维护自己一套完整的内存访问和管理机制。在虚拟机系统中,需完全隔离各个虚拟机之间的内存访问。Xen统一管理机器实际的物理地址,各个VM需要实现各自虚拟地址到物理内存地址间的转换,由VMM统一管理机器地址和物理地址的转换需要。Xen通过直接方式(DirectMode)和影子模式(ShadowMode)两种方式实现内存的管理和虚拟。一个机器只有一套I/O地址和设备,设备管理和访问同样是虚拟机实现的一个难题。在半虚拟化下,Xen采用了分离设备驱动模型,通过共享内存页(SharedMemoryPage)和步缓冲描述符环完成了I/O设备虚拟化;在全虚拟化下,Xen通过事件通道(EventChannel)发送和接受异步通知,通过共享内存页实现了数据交换,通过移动QEMU的设备模型(DM:DeviceModel)进行设备管理和访问。虚拟磁盘技术虚拟机存储管理是虚拟化技术一个很重要的研究领域。虚拟机存储广义来讲属于存储虚拟化的一部分。存储虚拟化是近年来虚拟化技术中的一个研究热点,是指新存储实体对原存储实体和存储资源以及存储管理进行变化和转换的过程。存储资源主要包括存储的连接方式、读写方式以及存储的规格或结构等内容,存储管理一般是指资源的统一管理、分散管理或性能动态调整管理等。本文中存储虚拟化特指虚拟机中的虚拟存储设备。虚拟机操作虚拟存储设备,不关注真正的物理设备。虚拟机对虚拟存储设备的访问通常是虚拟机将I/O请求发送给虚拟机监视器VMM,由VMM映射到实际物理存储设备上。例如上文中提到的Xen虚拟机,其GuestOS对虚拟存储设备的I/O请求,是由其内的前端驱动传递给Domain0中的后端驱动,后端驱动解析收到的I/O请求并映射到实际物理设备,最后由设备驱动程序控制硬件完成I/O请求。GuestOS和Domain0之间的通信和数据传递一直在VMM的控制下进行。虚拟存储设备的实现主要有以下几种方式[28]。1)通过物理硬盘或硬盘分区支持虚拟磁盘,例如iSCSI磁盘或GNBD卷。这种实现方式简单有效,可以直接将虚拟机的虚拟磁盘设置为某个硬盘或分区,不需要再在硬盘分区上另行组织。但这种实现方式不够灵活,不能够随着虚拟机的需要动态地改变存储空间容量大小,也不能够满足大规模系统中设备共享的要求,仅适合单机环境。2)通过网络存储协议支持虚拟磁盘,包括NFS等网络或并行文件系统。这种实现方式适合使用NFS等的网络存储设备,由于数据需通过网络传输且与具体网络存储设备有关,这种实现方式性能和稳定性不高,不具备通用性,不适合分布式的存储架构。3)基于逻辑卷LVM支持虚拟磁盘,这种实现方式可以动态地增减容量的大小,支持snapshot、条带化提高I/O并行性能等属性,也可以很方便地进行copy-on-write等操作。4)基于文件的虚拟存储设备,也称为虚拟磁盘镜像(VirtualDiskImage)。这种方式的优点是配置灵活,而且要启动一个虚拟机必须要有一定形式的虚拟磁盘镜像文件。在Xen3.0.3以前就可以由loopback驱动配置.img镜像文件作为虚拟机的块设备,3.0.3之后加入了blktap驱动模块,加强了对这方面的支持,目前正积极地进行着对.qcow镜像格式(QEMU中实现的一种镜像文件格式,支持copy-on-write等操作)的支持。其它的镜像文件格式有VMware实现的.vmdk格式,微软在其VirtualPC和VirtualServer中使用的.vhd格式(支持虚拟镜像文件大小的动态伸缩)等。虚拟机快照技术快照技术概述SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像[29]。从根本上说,快照创建了数据在某一时间点的数据副本。虚拟机快照就是指保留了虚拟机在某一时间点的状态和数据的快照。虚拟机的状态包括虚拟机的电源状态(开机、关机、挂起等);虚拟机的数据包括所有构成虚拟机的文件:虚拟磁盘、内存及其他设施。本文中的快照特指虚拟磁盘快照。虚拟磁盘是虚拟机操作系统及其部署应用的逻辑抽象,虚拟磁盘快照可支持虚拟机快速失效恢复。从虚拟磁盘快照实现主体的不同,虚拟磁盘快照可分为基于块的快照、基于逻辑卷的快照以及基于文件的快照,这些快照实现在存储系统的不同层次之上。基于数据块的快照在存储系统的块设备驱动层上实现,快照处理的数据单元为数据块,每次快照记录设备上的所有数据,文件系统无需对快照进行管理,具有良好的通用性和移植能力,但是无法感知文件系统的结构,灵活性较差,是一种“粗粒度”的快照;基于逻辑卷的快照实现在逻辑卷管理层上,对逻辑卷而言其存储空间可能来自于单个或者多个不同的物理块设备;基于文件的快照在文件系统层实现,快照处理的数据单位为文件,可以保留文件多个时刻的版本,是一种“细粒度”的快照,可在任意时刻对任意文件执行快照,增加了灵活性,却降低了通用性。从虚拟机快照所包含虚拟磁盘状态的完整性角度,虚拟机快照技术可分为全量式快照和增量式快照两类。全量式快照,因每次快照需要保存完整的磁盘状态,快照创建需进行磁盘数据拷贝,代价较高,且保存快照需要占用大量的磁盘空间。因此,目前大多数虚拟机支持的快照都是增量式快照,每次快照只保留被修改的磁盘块,可极大地节省快照占用的磁盘空间。增量式快照通常有两种实现模式:写时拷贝模式(Copy-on-Write,简称COW)和写时重定向模式(Redirect-on-Write,简称ROW)[30,31]。写时拷贝模式使用预先分配的快照空间进行快照创建,在快照时间点时,不进行物理数据复制,仅仅复制原始数据物理位置的元数据。因此,快照创建非常快,可以瞬时完成。快照副本跟踪原始磁盘的数据变化,一旦原始磁盘数据块需进行首次数据更新,则先将原始磁盘数据块内容读出并写入快照卷,然后用新数据块覆盖原始磁盘。写时拷贝模式一次数据块更新涉及3次磁盘I/O操作。写时重定向模式与写时复制模式非常相似,区别在于对于原始磁盘的首次写操作将被重定向到预留的快照空间,直接将新数据写入快照中。快照维持指向所有源数据的指针和拷贝数据。写重定向模式提高了快照I/O性能,只需要一次写操作。很多虚拟机快照都采用这种快照模式。增量式磁盘快照通过共享虚拟磁盘,不复制数据本身仅修改磁盘索引实现了快照的瞬时生成,数据共享也极大地节省了磁盘空间。但是这种快照技术生成的每个磁盘快照都仅保留了上一快照时间点之后的修改数据,快照间具有链式关联,导致虚拟机数据读写请求由无快照状态下的一次读一次写变为多次读一次写。这些多余的I/O请求会严重影响虚拟机性能,导致虚拟机低效,且随着快照链长度增长而愈加明显。为解决此问题,本文分析和研究了支持高效虚拟机快照实现的无链式关联磁盘快照技术,其也是增量式磁盘快照,同样共享虚拟磁盘,不复制数据本身仅修改磁盘索引;但是其生成的每个快照都记录了所有磁盘数据,快照间无链式关联。有关其技术原理,将在下一小节详细阐述。系统快照技术原理链式关联虚拟磁盘快照技术是目前大多数虚拟化平台都广泛实现的一种虚拟机快照技术。它提供了一种通用的快照实现,不考虑底层文件系统的具体实现,通过在磁盘文件之上封装,虚拟化平台按照既定文件格式重新组织了文件,如XenServer的VHD格式、VMware的VMDK格式等。但是由于封装,不能感知具体哪些数据块进行了修改,每个快照都仅保留被修改数据,都只记录了部分磁盘数据索引,磁盘某些数据或磁盘完整状态的获取需要读取之前一个甚至多个连续快照,快照间具有链式关联。这将无快照状态下数据读写请求由一次读一次写变为多次读一次写,引入大量多余的磁盘I/O,会严重影响虚拟机I/O性能。随着链式增长,对虚拟机性能影响会越来越明显,进而导致虚拟机低效。为降低链式结构虚拟磁盘快照引起的虚拟机性能低效问题,本文分析和研究了无链式关联虚拟磁盘快照技术。这是一种细粒度的快照实现,依赖于底层文件系统暴露的接口,可感知具体数据块修改,通过将源数据块索引替换为修改数据块索引,未修改数据块索引不变,可保证每个快照都记录了其对应时间点所有数据块索引,都对应一个完整的磁盘状态;任意数据都可通过索引直接获取,与其他快照无关,数据的读写请求依然是一次读一次写。这种快照实现打破链式关联结构,避免了多余I/O请求,对虚拟机I/O性能影响较小。但是快照功能实现与具体文件系统相关。无链式关联虚拟磁盘快照技术的技术原理示意如下。REF_Ref385886828\h图2-2所示为虚拟机随时间所进行的磁盘数据修改。时间点0为初始状态,磁盘数据由A、B、C、D组成;在时间点0创建磁盘第一个快照,快照通过引用A、B、C、D数据块来保留时间点0的磁盘状态。从时间点0到时间点1,虚拟机修改数据块B为B’,删除数据块C以及写入新数据E,时间点1磁盘数据由B’、D、A、E组成;之后再次创建磁盘快照,快照2也通过引用新数据B’、E及旧数据D、A保留时间点1的磁盘状态。快照2之后虚拟机修改数据块D以及写入新数据F,那么时间点2磁盘状态包含B’、A、E、D’、F。图2-SEQ图2_-\*ARABIC2数据变化过程图链式关联快照技术由于屏蔽了底层文件系统的异构性,不能感知具体哪些数据块进行了修改,每个快照中只记录了前一个快照时间点之后新写入的数据的索引,未发生更改的旧数据索引需读取之前多个连续快照才能获取,导致快照间具有链式关联。如REF_Ref385886879\h图2-3链式关联快照技术中所示,对应于时间点1的快照2的完整状态应包括数据A、D、B’、E,但是由于快照2中只记录新写入的数据B’、E,读取旧数据A、D就需要在读取快照2发现未命中后读取快照1来获取数据A、D。数据请求也就由一次读一次写变为多次读一次写,引入多余I/O请求。同样地,当前状态需要两次读请求才能获取数据B’、E,而三次读请求获取数据A。这些由于快照链式关联所带来的多余I/O,将会严重影响虚拟机的性能,且性能影响会随着快照链的增长而愈加明显。图2-SEQ图2_-\*ARABIC3快照链式关联结构针对链式关联快照技术性能问题,无链式关联快照技术通过收集数据块修改请求,将被修改数据块索引替换为新数据索引,不更改未修改数据块索引,每个快照都记录了对应时间点的所有数据块索引,都是对应时间点的完整状态。如REF_Ref385886944\h图2-4快照无链式关联结构所示,快照2将旧数据B索引替换为新数据B’索引,新增数据块E索引,且数据块A、D索引不变;快照2记录了时间点1所有数据索引。无论是旧数据A、D还是新数据B’、E都仅需要一次读请求即可,避免了链式结构造成的多余I/O请求,对虚拟机I/O性能影响较小。图2-SEQ图2_-\*ARABIC4快照无链式关联结构OCFS2[32,33]及ZFS[34]文件系统都支持无链式关联磁盘快照技术,它们的区别是:ZFS不支持集群,OCFS2支持集群。以ZFS文件系统为例[35,36,37],系统以包含诸多叶子节点的树形结构组织磁盘数据。当发生数据更改请求时,系统不覆盖磁盘上的原始数据,而是通过将新数据写入磁盘新位置并修改旧数据块父节点索引,父节点的数据更改也同样写入新位置并引起其上节点数据更改,持续以上过程直到到达树根节点来实现数据更新。所生成快照为对应时间点的全快照,通过快照根节点即可访问快照时间点任一数据。因此快照间不存在相关关联,不会引入多余I/O请求,不影响虚拟机性能。本章小结本章介绍了虚拟机快照所涉及的相关技术的基础理论知识以及本文系统的技术原理。首先详细介绍了虚拟机技术以及Xen虚拟机的整体架构,分析了Xen虚拟机CPU、内存等重要方面的实现机制;然后给出了虚拟存储管理的概念,分析了虚拟磁盘实现技术;最后给出了虚拟机快照技术的基础知识以及详细分析了本文系统所采用的虚拟机快照技术。

第三章虚拟机快照管理系统关键技术虚拟机快照管理系统关键技术本章将给出实现高效的虚拟机快照管理系统所用到的若干关键技术。首先给出存储对象间的映射关系模型,以及对象间映射关系的存储方式;然后设计基于树结构的快照存储组织模型,作为之后优化工作的基础;接下来介绍为保证系统中所有对象的正常运行,为各快照操作定义的约束限制,包括快照创建的命名规则以及虚拟机删除约束限制等;并给出基于快照存储组织模型和快照命名规则设计的虚拟机快照快速检索算法。最后,介绍为实现虚拟机差异快照策略,系统设计和实现的快照策略调度过程,其分析数据增量与增量阈值或时间间隔与周期阈值以及快照个数与个数阈值之间的偏差,并依据偏差值采取相应的措施。存储对象抽象模型存储对象映射关系本小节介绍物理存储硬件到虚拟机(VirtualMachine,VM)的映射关系,以及各存储对象间映射关系的存储方式。虚拟化资源池系统中存在多种存储对象:存储库(StorageRepository,SR)、虚拟机(VM)、虚拟块设备(VirtualBlockDevice,VBD)、虚拟磁盘映像(VirtualDiskImage,VDI)、物理块设备(PhysicalBlockDevice,PBD)以及主机(Host)。存储对象间的映射关系如REF_Ref385887035\h图3-1所示,各存储对象都用UUID来唯一标识。图3-SEQ图3_-\*ARABIC1存储对象映射关系系统定义的存储库SR对象是一个用来描述存储虚拟磁盘映像VDI的特定存储目标容器,是一个永久性的磁盘数据结构。存储库SR命令提供了用于创建、销毁、克隆、连接、检测VDI以及调整VDI大小的功能。在虚拟化资源池系统中,可支持多种SR类型,每台主机可以同时使用多个SR和不同的SR类型,且可以在不同主机之间共享特定SR,也可以将SR专用于某个主机。大多数SR类型都支持VDI,SR和VDI抽象允许VDI快照、快照克隆等高级存储功能。虚拟磁盘映像VDI是显示给代表物理磁盘的虚拟机VM的存储抽象,是包含虚拟磁盘内容的磁盘抽象,是虚拟化存储的基本单元。其中,虚拟磁盘内容主要是指虚拟机操作系统及其上部署的应用。虚拟磁盘映像VDI是独立于主机Host存在的永久性磁盘对象,可以关联到具体的虚拟机磁盘文件,操作系统镜像ISO或者分区等。物理块设备PBD是个连接器对象,是物理服务器与其连接的存储库SR之间的接口,允许指定的SR映射到物理主机Host。PBD存储了一些设备配置信息,用于与指定的存储目标进行连接和交互。例如,NFS设备配置包括了NFS服务器的IP地址以及host主机装载的关联路径。PBD对象管理指定SR与指定host主机之间的运行时连接。虚拟块设备VBD也是一个连接器对象,用于映射VDI和VM之间的关系。除了用于将VDI连接到VM外,VBD还可用于调整指定VDI的Qos(服务质量),统计数据和可引导性等相关参数。通用唯一标识码(UniversallyUniqueIdentifier,简称UUID)是一种软件构建的标准。使用UUID的目的是让分散式系统中的所有元素,都能有唯一的辨识信息,不需要通过中央控制端来做辨识信息的指定。如此一来,可以为不同对象创建不与其他对象冲突的UUID,不需要考虑对象命名冲突问题。一组UUID由一串128位的16进位数字构成,经由一定的算法机器生成。为保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。UUID的生成算法主要包括基于时间的UUID、DCE安全的UUID、基于名字空间MD5散列值的UUID以及基于随机或伪随机数的UUID。从REF_Ref385887473\h图3-1存储对象映射关系中可以看出,一个虚拟机VM可以关联多个VDI,例如VDI关联一个img磁盘文件或是一个iso光盘镜像;同样一个主机Host也可以关联多个SR和不同的SR类型,主机间可共享特定SR,SR也可以用于特定主机。虚拟块设备VBD用于在虚拟磁盘映像VDI和虚拟机VM之间进行映射,而物理块设备PBD用于映射主机Host和存储库SR之间的关系。UUID用以唯一命名一个存储对象。映射关系存储方式为支持虚拟机所在存储类型分析功能以及获取虚拟机存储路径功能,需记录存储对象间的映射关系。本文采用XML文件记录了存储对象间的映射关系,每一个XML文件描述一个存储对象。XML文件的优势在于其强大的可扩展性,以及松散耦合,可将内容和结构完全分离。可扩展标志语言XML(ExtensibleMarkupLanguage)是一种元标记语言,将文档分成许多部件并对这些部件加以标识,其目的在于描述信息的内容和结构。XML衍生自SGML,是SGML的一个子集合,因此文件都是以一个个标签(Tag)组合而成。由于XML允许使用者自行定义标签,XML能够以灵活有效的方式定义和管理信息结构。XML格式由W3C(WorldWideWebConsortium)制定,符合国际标准,且易于进行数据交流和系统交互,因而受到了广大软件开发商的支持。在XML文件中,标签之间的数据是信息的内容,而标签的相互包含关系则表示信息的结构。XML的格式通常由以下几个部分组成:(1)文档以XML头文件开始<?xmlversion=”1.0”?>,同时还能声明该文件的编码方式。(2)描述其他内容的根元素,每个XML文件只能有一个根元素。(3)根元素下可以有子元素,子元素可以有子子元素,以此类推。(4)元素以<\元素名>标记结束。(5)元素和元素之间不能交叉嵌套。(6)标记和属性符合命名规范。XML具有跨平台、结构严谨且简单、开放、可扩展性强等优点,各领域纷纷以XML作为其垂直或水平传递文件的标准。且主流的高级编程语言也都很好的实现了对XML文件的支持,这对于一个拥有不同平台的计算机系统而言,无疑是开发和平台间交流很好的途径。所以本文选择XML技术作为存储各存储对象间映射关系的方式。为持久化存储对象间映射关系以支持系统功能,系统以物理主机为单位,用XML文件记录了主机与存储库SR以及主机上虚拟机VM与虚拟磁盘镜像VDI之间的关系。每一类存储对象对应一个XML描述文件,XML文件记录了对象本身配置信息,如存储库对象SR会记录SR的UUID、类型、大小等配置信息,以及与此对象有映射关系的对象的信息,如存储库对象SR会记录相关物理块设备PBD以及虚拟存储镜像VDI的相关信息。每类存储对象的XML文件记录的映射关联对象如REF_Ref385932876\h表3-1所示:表3-SEQ表3_-\*ARABIC1存储对象映射关系存储对象关联对象1关联对象2HostPBDPBDHostSRSRVDIPBDVDISRVBDVBDVDIVMVMVBDXML允许使用者自定义标签,系统定义了许多具有命名意义的标签,用来描述存储对象间的映射关系。以存储库SR的XML描述文件为例,系统定义了srs和sr标签表示主机连接的所有存储库及各存储库对象,定义了VDIs、PBDs标签表示与存储库SR关联的虚拟磁盘镜像及物理块设备信息,定义了存储库总容量physical_size、使用量physical_utilization、存储库类型type及UUID等存储库基本信息,以及存储库其他一些配置信息。存储库SR的XML描述文件内容如REF_Ref385887556\h图3-2所示:图3-SEQ图3_-\*ARABIC2SR存储对象映射关系快照存储组织模型每个存储库SR中都存储了大量虚拟机VM的虚拟磁盘文件,每个虚拟机对应有虚拟磁盘Disk和磁盘快照。虚拟机资源池中存储库节点与虚拟机节点、虚拟机节点与磁盘快照间采用“一对多”映射模式,且虚拟机快照若统一集中式存储,会由于快照数量众多而不易检索。为满足映射模式现状且提高快照检索效率,本文拟采用树形结构组织系统中的虚拟机快照,不使用单独后备存储,而是直接占用虚拟机所在存储库(SR)中的磁盘空间。树形结构具有刻画分层及描述分层实体间关系的能力,且依据存储对象间映射关系,还具有可以快速定位到具体快照的能力,能很好地满足虚拟机快照管理系统高效的需求。快照的树结构存储组织模型SnapTreeModel如REF_Ref385887692\h图3-3所示。图3-SEQ图3_-\*ARABIC3快照存储组织模型快照树形存储组织模型依据虚拟机和存储库之间相互关系,将虚拟机所有磁盘快照都存储到其在存储库所在位置。从图中可以看出,SnapTreeModel由四个组成要素构成,即存储库SR、虚拟机VM、虚拟磁盘镜像Disk以及快照Snapshot,可以刻画成SnapTreeModel={SR,VM,Disk,Snapshots}。(1)SR:SR存储库是一个抽象概念,是硬盘、RAID等存储介质的抽象对象,SR具有对本地连接的IDE,SATA,SCSI和SAS驱动器和远程连接的ISCSI,NFS,SAS和光纤通道的支持。一个SR中可以存储多个虚拟机对象。(2)VM:VM本质是由软件实现的计算机,但能具有和真实的物理机一样的能力,其中ID是VM的唯一标识,本文用UUID(UUID是虚拟化技术用于识别VM的唯一标识)来表示。(3)Disk:disk是虚拟机的虚拟磁盘镜像,是虚拟机操作系统和部署在系统上的应用的集合体,disk和一些配置文件共同构成了虚拟机实例。每一个虚拟磁盘镜像由存储抽象VDI代表,用UUID来唯一标识。(4)Snapshot:snapshot是虚拟磁盘数据在某个时间点(拷贝开始的时间点)的映像,是虚拟磁盘数据的一个完全可用副本,也可以称为虚拟磁盘数据的一个复制品。可以在不同的时间点为虚拟机创建多个快照,虚拟机快照依据树形存储模型SnapTreeModel存储在虚拟机在存储库中的位置,即虚拟机的虚拟磁盘所在位置。依赖于存储对象的映射关系,通过存储对象间关系配置文件,可以快速定位到所检索快照在存储库中位置,获取虚拟机快照的各种信息以及管理虚拟机快照各种操作。操作约束限制规则快照创建命名规则无规矩不成方圆,快照命名的随意性易产生混淆,难于管理,而一个好的命名可以清晰地反映快照文件所承载的内容。更进一步,系统可利用快照的命名规律,优化系统中某些快照功能,例如优化快照检索速度。为便于快照管理和提高快照检索速度,系统为快照定义了如下命名规则:(1)从系统使用者角度,定义快照命名规则如下:用户自定义快照名只能包括字母、数字和下划线,必须以字母开头,建议字母全部小写,且以明确有意义名字给快照命名,如snapshot_1;(2)从系统实现角度,为支持特殊功能实现,系统会在用户命名的快照名加上特殊标签,如为支持快照按时间点排序功能,系统为所有快照打上时间标签,规则为快照名加时间标签<Y,M,D,T,H:M:S>,如snapshot_1_20150219T02:52:44。依据快照策略系统自动生成的快照,会以autosave加时间标签<Y,M,D,T,H:M:S>命名,如autosave_20150219T02:52:44。虚拟机快照可用来进行虚拟机克隆,对于用于克隆虚拟机的快照,系统仅以时间标签<Y,M,D,T,H:M:S>命名,如20150107T02:42:47,且此种类型快照不对系统使用者显示,为系统隐藏快照。VM删除约束限制本文系统支持虚拟机克隆操作,通过虚拟机快照可以由此虚拟机克隆(clone())出来新的虚拟机。如REF_Ref385887761\h图3-4虚拟机间关联关系图所示,由虚拟机VM1的快照snap1和snapN分别克隆出虚拟机VM2和VM3。由此虚拟机VM1与VM2及VM3之间因快照克隆建立起树结构关联关系。由虚拟机的一个快照或多个快照可以克隆出多个处于相同时间点或处于不同时间点的虚拟机副本,新克隆出来虚拟机的快照同样也可以用于克隆其他虚拟机,以上导致虚拟机间具有树结构连接关系。图3-SEQ图3_-\*ARABIC4虚拟机间关联关系图在虚拟机生命周期管理中,由于虚拟机之间的这种依赖关系,删除被依赖虚拟机或快照,会引起共享数据被删除,导致依赖虚拟机不可用。为保证系统中所有虚拟机对象都能正常运行,需设计管理机制来合理地释放被依赖虚拟机。为维护系统中所有虚拟机对象的正常运转,适时地回收被删除虚拟机所占用的磁盘空间,系统需维护数据结构VM_Dead_List、标记值isDeleted以及在VM的Record里记录其因快照依赖的父节点Parent和克隆出来的孩子节点Children。系统采用引用计数机制,用标记值Parent和Children分别记录虚拟机引用对象和引用虚拟机的对象。虚拟机每通过快照克隆出一台虚拟机,其孩子节点Children增加一项,而每成功删除一个克隆副本,其孩子节点值减少一项;而虚拟机本身被删除时,若其父节点Parent不为空,其也为父节点的克隆副本,那么找到其父节点并减少父节点的Children值。当删除一个虚拟机时,算法执行过程如下:系统首先断开虚拟机连接,为被删除虚拟机打标签,将标记值isDeleted标记true;然后查看孩子节点Children是否为空,来判断此虚拟机是否能被删除;如果孩子节点不为空,那么虚拟机不能被释放,将虚拟机加入VM_Dead_List;如果孩子节点为空,那么真正删除虚拟机并查看其父节点,如父节点Parent不为空,找到其父节点并减少父节点的Children值。只有当虚拟机标签isDeleted为true且引用计数Children的值为null时,才真正删除虚拟机对象。算法代码如算法1所示:算法算法1:删除虚拟机主要算法#addchildofavdidefadd_vdi_children(self,image_uuid,value):ifimage_uuidinself.images:vdi=self.images[image_uuid]vdi_struct=vdi.get_record()vdi_struct['children'].append(value)self.images[image_uuid]=XendGpfsVDI(vdi_struct)#deletechildfromavdidefdel_vdi_children(self,image_uuid,value):ifimage_uuidinself.images:vdi=self.images[image_uuid]vdi_struct=vdi.get_record()ifvalueinvdi_struct['children']:vdi_struct['children'].remove(value)defdestroy_vdi(self,vdi_uuid,del_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论