面向云平台的软件故障容忍方法技术

技术编号:7466873 阅读:290 留言:0更新日期:2012-06-29 08:03
本发明专利技术公开了一种面向云平台的软件故障容忍方法,包括:对需要保护的软件进行压力测试,以获取软件的营救点,周期性地在虚拟机中对软件构建检查点,检测软件是否出现故障,若出现故障,则获取软件故障相关信息,根据软件故障相关信息判断故障是否是栈溢出故障,若故障是栈溢出故障,则判断漏洞营救表中是否存在与故障匹配的函数调用栈信息,若漏洞营救表中存在与故障匹配的函数调用栈信息,则提取函数调用栈信息,将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点,本发明专利技术有效地提高软件容错能力,同时降低了容错机制所带来的数据冗余度。

【技术实现步骤摘要】

本专利技术属于软件可靠性
,具体地说,本专利技术涉及一种。
技术介绍
云计算作为一种新兴的IT基础架构,它为互联网用户或者企业内部用户提供方便灵活、按需配置、成本低廉的包含计算、存储、应用等在内的多种类型网络服务。云平台在提供用户多样化的服务时,也面临了保障服务软件的高可用性的挑战。一旦云服务出现故障,若不采取相应的保护措施,则其产生的后果及造成的经济损失是无法估量的。虽然软件开发过程和方法已经研究了数十年,但是迄今为止,仍然没有一种可靠的方法来保证复杂的软件系统免出故障。实际上,保证软件无故障的方法是不可能得到的, 只有通过容错技术来处理不可预知的软硬件故障,其中以微重启技术,错误忽视技术和基于检查点的回滚机制为代表1)微重启技术是针对大型分布式应用软件系统发生故障时恢复时间过长问题,通过快速地重启局部来解决局部故障以避免整体宕机,从而提高了应用系统的可用性。2)错误忽视技术是对内存访问的错误操作提出了方案,插入了内存访问的检查指令,如果不合法,则返回一个杜撰值。而且返回的值会被逻辑检查,从而能将预料外的非法变成预料中的非法。3)基于检查点的回滚机制是使用检查点来提供错误容忍,目前基于检查点的回滚机制在软件错误容忍技术中应用普遍。当软件出现错误时,可以根据检查点或者日志回滚到一个检查点并对先前出现的错误进行相应处理而不造成软件再次出错。然而,在复杂的云计算环境下,现有的软件容错技术主要存在以下问题1)传统架构下的软件容错技术依然存在诸多不足,或只针对非确定性的错误,或只适用于特定的软件,或只针对内存相关错误,或容错机制开销较大,或需要重新设计软件等。在诸多系统中,基于检查点/回滚机制的ASSURE系统提出了一种实用性的解决方案, 提出营救点(Rescue Point)和错误虚拟化(Error Visualization)概念,以函数为粒度, 对可能引发故障的函数实施强制返回(这里的函数点称为营救点),即调用该函数时直接返回该函数处理出错时的返回值,从而绕过会引发故障的代码区域,保障了软件的继续运行。同时在该函数被调用时对软件做一次检查点以实现相同故障发生时的快速恢复。但是若该函数是软件调用较为频繁的函数,这种方式就会因过度对软件本身做检查点导致负载过高,迫使软件无法正常运行。因此,目前针对云平台中部署的多样化软件,依然缺乏一种高效的实用保护机制来保障软件的高可用性;2)在云计算环境中,许多相同的软件实例可能运行在不同的虚拟机中。例如,公司 A部署了 Apache HTTPd软件实例和MySQL软件实例,而公司B部署了 Apache HTTPd软件实例和Oracle软件实例。针对云平台中可能存在的相同的软件实例,如部署了两个Apache HTTPd软件实例,缺乏一种容错共享机制来实现软件故障的快速修复,从而达到共同防御的目标。
技术实现思路
本专利技术的目的在于提出一种,其将加权的思想和动态改变软件执行流程的思想相结合的方式平衡了故障容忍机制的通用性和开销,解决了故障容忍机制的高开销的问题,并针对云计算的特点,采用三级容错共享数据库的方式来实现相同的软件实例之间的故障信息共享,有效地提高软件容错能力,同时降低了容错机制所带来的数据冗余度,同时故障修复日志也方便程序员进行漏洞修复。本专利技术是通过以下技术方案实现的一种,包括以下步骤对需要保护的软件进行压力测试,以获取软件的营救点,并根据营救点构建漏洞营救表、营救点数据库、营救点节点级缓存和营救点虚拟机级缓存,周期性地在虚拟机中对软件构建检查点,检测软件是否出现故障,若软件出现故障,则获取软件故障相关信息,根据软件故障相关信息判断故障是否是栈溢出故障,若故障是栈溢出故障,则判断漏洞营救表中是否存在与故障匹配的函数调用栈信息,若漏洞营救表中存在与故障匹配的函数调用栈信息,则提取函数调用栈信息,将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点,增加最佳营救点的权值,更新最佳营救点在营救点虚拟机级缓存、营救点节点级缓存和营救点数据库中的权值信息,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域,节点的管理域将更新后的最佳营救点和软件故障相关信息发送给云平台的管理节点ο本专利技术的方法还包括步骤在周期性地在虚拟机中对软件构建检查点的步骤之后,判断虚拟机是否需要迁移,若虚拟机需要迁移,则将营救点节点级缓存和营救点虚拟机级缓存中的软件故障容忍信息随同虚拟机进行迁移,否则进入检测软件是否出现故障的步马聚ο将营救点节点级缓存和营救点虚拟机级缓存中的软件故障容忍信息随同虚拟机进行迁移的步骤包括以下子步骤虚拟机的待迁移节点上的管理域将虚拟机的营救点发送到目标节点的管理域中,目标节点的管理域判断其营救点节点级缓存中是否已存在营救点,若不存在营救点,则将营救点增加到其营救点节点级缓存中,若存在营救点,则将营救点与其营救点节点级缓存中的营救点进行合并,待迁移节点上的管理域判断其它虚拟机上是否部署了软件,如果是则将待迁移节点上软件的营救点设置为上一次更新时营救点数据库中的权值信息,否则删除待迁移节点上软件的营救点。本专利技术的方法还包括步骤若软件没有出现故障,则返回周期性地在虚拟机中对软件构建检查点的步骤,若故障不是栈溢出故障,则分析软件故障相关信息,以获取函数调用栈信息,若漏洞营救表中不存在与故障匹配的函数调用栈信息,则分析软件故障相关信息,以获取函数调用栈信息。将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点的步骤包括以下子步骤虚拟机将软件回滚到距离故障最近的检查点,根据函数调用栈信息,在营救点虚拟机级缓存中查找是否存在与函数调用栈信息匹配的营救路径,若未查找到营救路径,则虚拟机提交查找请求到其管理域,管理域在其营救点节点级缓存中查找营救路径, 并将查找的结果反馈给虚拟机,虚拟机查看其营救点虚拟机级缓存,以判断是否有剩余空间,如果没有剩余空间,则采用替换算法将结果更新到营救点虚拟机级缓存中,将营救路径上的所有营救点按权值大小进行排序,遍历所有营救点,以查找能够绕过故障的路径的营救点作为最佳营救点,将与栈溢出故障相关的信息记录在漏洞营救表中。将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点的步骤还包括以下子步骤若查找到营救路径,则进入将营救路径上的所有营救点按权值大小进行排序的步骤,若有剩余空间,则直接将结果更新到营救点虚拟机级缓存中。更新最佳营救点在营救点虚拟机级缓存、营救点节点级缓存和营救点数据库中的权值信息,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域的步骤包括以下子步骤虚拟机在营救点虚拟机级缓存中对最佳营救点的权值进行更新,虚拟机提交更新请求到其节点上的管理域,以对营救点节点级缓存中最佳营救点的权值进行更新,管理域将更新后的权值提交给管理节点,管理节点在营救点数据库中更新营救点的权值,管理节点周期性地将更新后的营救点传送到管理域中,以对管理域本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:金海邹德清陈刚羌卫中胡刚代炜琦
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术