CN102521128B - 面向云平台的软件故障容忍方法 - Google Patents

面向云平台的软件故障容忍方法 Download PDF

Info

Publication number
CN102521128B
CN102521128B CN201110405522.6A CN201110405522A CN102521128B CN 102521128 B CN102521128 B CN 102521128B CN 201110405522 A CN201110405522 A CN 201110405522A CN 102521128 B CN102521128 B CN 102521128B
Authority
CN
China
Prior art keywords
rescue
software
fault
virtual machine
rescue point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110405522.6A
Other languages
English (en)
Other versions
CN102521128A (zh
Inventor
金海�
邹德清
陈刚
羌卫中
胡刚
代炜琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201110405522.6A priority Critical patent/CN102521128B/zh
Publication of CN102521128A publication Critical patent/CN102521128A/zh
Application granted granted Critical
Publication of CN102521128B publication Critical patent/CN102521128B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

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

Description

面向云平台的软件故障容忍方法
技术领域
本发明属于软件可靠性技术领域,具体地说,本发明涉及一种面向云平台的软件故障容忍方法。
背景技术
云计算作为一种新兴的IT基础架构,它为互联网用户或者企业内部用户提供方便灵活、按需配置、成本低廉的包含计算、存储、应用等在内的多种类型网络服务。云平台在提供用户多样化的服务时,也面临了保障服务软件的高可用性的挑战。一旦云服务出现故障,若不采取相应的保护措施,则其产生的后果及造成的经济损失是无法估量的。
虽然软件开发过程和方法已经研究了数十年,但是迄今为止,仍然没有一种可靠的方法来保证复杂的软件系统免出故障。实际上,保证软件无故障的方法是不可能得到的,只有通过容错技术来处理不可预知的软硬件故障,其中以微重启技术,错误忽视技术和基于检查点的回滚机制为代表:
1)微重启技术是针对大型分布式应用软件系统发生故障时恢复时间过长问题,通过快速地重启局部来解决局部故障以避免整体宕机,从而提高了应用系统的可用性。
2)错误忽视技术是对内存访问的错误操作提出了方案,插入了内存访问的检查指令,如果不合法,则返回一个杜撰值。而且返回的值会被逻辑检查,从而能将预料外的非法变成预料中的非法。
3)基于检查点的回滚机制是使用检查点来提供错误容忍,目前基于检查点的回滚机制在软件错误容忍技术中应用普遍。当软件出现错误时,可以根据检查点或者日志回滚到一个检查点并对先前出现的错误进行相应处理而不造成软件再次出错。
然而,在复杂的云计算环境下,现有的软件容错技术主要存在以下问题:
1)传统架构下的软件容错技术依然存在诸多不足,或只针对非确定性的错误,或只适用于特定的软件,或只针对内存相关错误,或容错机制开销较大,或需要重新设计软件等。在诸多系统中,基于检查点/回滚机制的ASSURE系统提出了一种实用性的解决方案,提出营救点(Rescue Point)和错误虚拟化(Error Virtualization)概念,以函数为粒度,对可能引发故障的函数实施强制返回(这里的函数点称为营救点),即调用该函数时直接返回该函数处理出错时的返回值,从而绕过会引发故障的代码区域,保障了软件的继续运行。同时在该函数被调用时对软件做一次检查点以实现相同故障发生时的快速恢复。但是若该函数是软件调用较为频繁的函数,这种方式就会因过度对软件本身做检查点导致负载过高,迫使软件无法正常运行。因此,目前针对云平台中部署的多样化软件,依然缺乏一种高效的实用保护机制来保障软件的高可用性;
2)在云计算环境中,许多相同的软件实例可能运行在不同的虚拟机中。例如,公司A部署了Apache HTTPd软件实例和MySQL软件实例,而公司B部署了Apache HTTPd软件实例和Oracle软件实例。针对云平台中可能存在的相同的软件实例,如部署了两个Apache HTTPd软件实例,缺乏一种容错共享机制来实现软件故障的快速修复,从而达到共同防御的目标。
发明内容
本发明的目的在于提出一种面向云平台的软件故障容忍方法,其将加权的思想和动态改变软件执行流程的思想相结合的方式平衡了故障容忍机制的通用性和开销,解决了故障容忍机制的高开销的问题,并针对云计算的特点,采用三级容错共享数据库的方式来实现相同的软件实例之间的故障信息共享,有效地提高软件容错能力,同时降低了容错机制所带来的数据冗余度,同时故障修复日志也方便程序员进行漏洞修复。
本发明是通过以下技术方案实现的:
一种面向云平台的软件故障容忍方法,包括以下步骤:对需要保护的软件进行压力测试,以获取软件的营救点,并根据营救点构建漏洞营救表、营救点数据库、营救点节点级缓存和营救点虚拟机级缓存,周期性地在虚拟机中对软件构建检查点,检测软件是否出现故障,若软件出现故障,则获取软件故障相关信息,根据软件故障相关信息判断故障是否是栈溢出故障,若故障是栈溢出故障,则判断漏洞营救表中是否存在与故障匹配的函数调用栈信息,若漏洞营救表中存在与故障匹配的函数调用栈信息,则提取函数调用栈信息,将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点,增加最佳营救点的权值,更新最佳营救点在营救点虚拟机级缓存、营救点节点级缓存和营救点数据库中的权值信息,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域,节点的管理域将更新后的最佳营救点和软件故障相关信息发送给云平台的管理节点。
本发明的方法还包括步骤:在周期性地在虚拟机中对软件构建检查点的步骤之后,判断虚拟机是否需要迁移,若虚拟机需要迁移,则将营救点节点级缓存和营救点虚拟机级缓存中的软件故障容忍信息随同虚拟机进行迁移,否则进入检测软件是否出现故障的步骤。
将营救点节点级缓存和营救点虚拟机级缓存中的软件故障容忍信息随同虚拟机进行迁移的步骤包括以下子步骤:虚拟机的待迁移节点上的管理域将虚拟机的营救点发送到目标节点的管理域中,目标节点的管理域判断其营救点节点级缓存中是否已存在营救点,若不存在营救点,则将营救点增加到其营救点节点级缓存中,若存在营救点,则将营救点与其营救点节点级缓存中的营救点进行合并,待迁移节点上的管理域判断其它虚拟机上是否部署了软件,如果是则将待迁移节点上软件的营救点设置为上一次更新时营救点数据库中的权值信息,否则删除待迁移节点上软件的营救点。
本发明的方法还包括步骤:若软件没有出现故障,则返回周期性地在虚拟机中对软件构建检查点的步骤,若故障不是栈溢出故障,则分析软件故障相关信息,以获取函数调用栈信息,若漏洞营救表中不存在与故障匹配的函数调用栈信息,则分析软件故障相关信息,以获取函数调用栈信息。
将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点的步骤包括以下子步骤:虚拟机将软件回滚到距离故障最近的检查点,根据函数调用栈信息,在营救点虚拟机级缓存中查找是否存在与函数调用栈信息匹配的营救路径,若未查找到营救路径,则虚拟机提交查找请求到其管理域,管理域在其营救点节点级缓存中查找营救路径,并将查找的结果反馈给虚拟机,虚拟机查看其营救点虚拟机级缓存,以判断是否有剩余空间,如果没有剩余空间,则采用替换算法将结果更新到营救点虚拟机级缓存中,将营救路径上的所有营救点按权值大小进行排序,遍历所有营救点,以查找能够绕过故障的路径的营救点作为最佳营救点,将与栈溢出故障相关的信息记录在漏洞营救表中。
将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点的步骤还包括以下子步骤:若查找到营救路径,则进入将营救路径上的所有营救点按权值大小进行排序的步骤,若有剩余空间,则直接将结果更新到营救点虚拟机级缓存中。
更新最佳营救点在营救点虚拟机级缓存、营救点节点级缓存和营救点数据库中的权值信息,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域的步骤包括以下子步骤:虚拟机在营救点虚拟机级缓存中对最佳营救点的权值进行更新,虚拟机提交更新请求到其节点上的管理域,以对营救点节点级缓存中最佳营救点的权值进行更新,管理域将更新后的权值提交给管理节点,管理节点在营救点数据库中更新营救点的权值,管理节点周期性地将更新后的营救点传送到管理域中,以对管理域的营救点节点级缓存进行更新,管理域周期性地发送更新后的营救点传送到虚拟机,以对虚拟机的营救点虚拟机级缓存进行更新,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域。
本发明具有以下的优点和有益效果:
1)软件容错能力的有效性
现有的软件故障容忍技术存在诸多不足,或只适用于特定的软件,或只针对处理内存相关故障等。本发明是借助改变程序的执行流程来绕过错误的执行路径的方式来使软件从故障中恢复,并采用加权的思想来缩短相同故障的恢复时间,而且也消除了在营救点处采用检查点方式可能导致的高开销问题。本发明提出的技术并不局限于某些特定的漏洞,适用于广泛的软件,具有良好的适用性及有效性;
2)相同软件实例之间的容错共享机制
本发明采用三级容错共享数据库机制来实现相同的软件实例之间的信息共享,将软件的营救点在管理节点中的营救点数据库、物理节点中的营救点节点级缓存和虚拟机中营救点虚拟机级缓存这种三级的营救点结构之间进行管理,权值的变化在三级结构中的更新实现了软件故障处理信息的共享,从而实现软件故障的快速恢复;
3)软件故障信息的丰富性
由于在某个函数发生故障的次数越多,该函数所对应的权值也就越大。通过检查权值就可以知道一个特定的错误在哪儿发生,发生了多少次的信息,而且借助三级的营救点存储架构可以聚集软件故障信息,这有助于程序员发现故障并进行调试修复。
附图说明
图1为本发明面向云平台的软件故障容忍方法的流程示意图。
图2为本发明方法中步骤(3)的细化流程图。
图3为本发明方法中步骤(9)的细化流程图。
图4为本发明方法中步骤(11)的细化流程图。
图5为本发明面向云平台的软件故障容忍方法的应用环境示意图。
具体实施方式
首先对本发明中的技术术语进行解释和定义:
营救点:指软件本身用来处理程序员预期设想的错误的函数位置。
候选营救点:指针对故障所查找到营救路径上的营救点。
漏洞营救表:是一个二元组{time,Ck},time为记录时间,Ck是针对栈溢出故障的函数调用栈信息。
营救点数据库:用来存放所有待保护软件的营救点。
营救点节点级缓存:用来存放运行在节点上所有待保护软件的营救点。
营救点虚拟机级缓存:用来存放运行在虚拟机上待保护软件的部分营救点。
检查点:这里指的是软件级检查点,即对软件的一次快照,保存软件的内存信息、寄存器信息以及文件信息等。
函数调用栈信息:指存放软件正在运行的函数信息的栈。
下面结合附图对本发明进一步作详细的说明。
如图1所示,本发明面向云平台的软件故障容忍方法包括以下步骤:
(1)对需要保护的软件进行压力测试,以获取软件的营救点,并根据营救点构建营救点数据库、营救点节点级缓存、营救点虚拟机级缓存和漏洞营救表,具体而言,营救点数据库是各种待保护软件的营救点的信息的总集合D,D={A1,A2,...,An},n为待保护软件的个数,其中软件Ai(1≤i≤n)是一个三元组{Ni,Vi,Ti},分别表示软件名称,版本号以及营救路径的集合,Ti={ti,1,ti,2,...,ti,m},m为软件Ai所包含的营救路径的总数,ti,j(1≤j≤m)是第j条路径上营救点的集合,ti,j={r1,r2,...,rh},h为路径j上营救点总数目。其中营救点rs(1≤s≤h)是一个五元组{rns,rlws,rws,rrs,rts},rns是指营救点名称,rlws是指营救点上次和管理节点同步后权值,rws是指营救点当前的权值,rrs是指营救点的返回值和rts是指营救点返回值类型,将运行在该节点上所有待保护软件的营救点存放在营救点节点级缓存中,将运行在虚拟机上待保护软件的部分营救点存放在营救点虚拟机级缓存中,漏洞营救表用来存放栈溢出故障相关信息,初始时为空;
(2)周期性地在虚拟机中对软件构建检查点,具体而言,该周期值可以由用户来制定,默认为500ms;
(3)判断虚拟机是否需要迁移,若虚拟机需要迁移,则将营救点节点级缓存和营救点虚拟机级缓存中的软件故障容忍信息随同虚拟机进行迁移,该软件故障容忍信息包括软件的营救点信息及漏洞营救表信息,否则转入步骤(4);
(4)检测软件是否出现故障,如果没检测到故障,则返回步骤(2),否则进入步骤(5);
(5)获取故障相关信息,其包括内核转储信息以及故障发生时的软件所接收到的外部输入信息;
(6)根据软件故障相关信息判断故障是否是栈溢出故障,若故障不是栈溢出故障,则分析软件故障相关信息,以获取函数调用栈信息,否则转入步骤(7);
(7)判断漏洞营救表中是否存在与故障匹配的函数调用栈信息,若存在,则进入步骤(8),否则返回分析软件故障相关信息,以获取函数调用栈信息的步骤;
(8)提取函数调用栈信息;
(9)将软件回滚到距离故障最近的检查点,根据函数调用栈信息获取候选营救点,并按候选营救点的权值大小对候选营救点进行测试,以得到能够容忍故障的最佳营救点;
(10)增加最佳营救点的权值,具体而言,提高最佳营救点rs’的权值rws’,即rws’+Q,其中Q默认为1,也可以由用户来指定;
(11)更新最佳营救点在营救点虚拟机级缓存、营救点节点级缓存和营救点数据库中的权值信息,虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域;
(12)节点的管理域将更新后的最佳营救点和软件故障相关信息发送给云平台的管理节点。
如图2所示,本发明方法的步骤(3)包括以下几个子步骤:
(3-1)虚拟机的待迁移节点上的管理域将虚拟机的营救点发送到目标节点的管理域中;
(3-2)目标节点的管理域判断其营救点节点级缓存中是否已存在软件的营救点,若不存在则转入步骤(3-3),否则转入步骤(3-4);
(3-3)将营救点增加到目标节点的营救点节点级缓存中;
(3-4)将营救点与目标节点的营救点节点级缓存中的营救点进行合并,具体而言,比对本节点营救点节点级缓存中该软件营救点和发送过来的软件营救点,查找出发生变化的部分。若营救路径ti,j上某营救点rs存在变化,则rws=rws+Δrw’s将变化的营救点权值增量Δrw’s加到营救点节点级缓存中对应的营救点权值;
(3-5)待迁移节点上的管理域判断其它虚拟机上是否部署了该软件,如果是则转入步骤(3-6),否则转入步骤(3-7);
(3-6)将待迁移节点上该软件的营救点设置为上一次更新时营救点数据库中的权值信息,具体而言,即rws=rlws
(3-7)删除待迁移节点上该软件的营救点。
如图3所示,本发明方法的步骤(9)包括以下几个子步骤:
(9-1)虚拟机将软件回滚到距离故障最近的检查点;
(9-2)根据函数调用栈信息,在营救点虚拟机级缓存中查找是否存在与函数调用栈信息匹配的营救路径,若未查找到营救路径,则转入步骤(9-3),否则转入步骤(9-7),查找算法可以采用静态查找表算法,动态查找表算法等方法;
(9-3)虚拟机提交查找请求到其管理域。
(9-4)管理域在其营救点节点级缓存中查找营救路径,并将查找的结果反馈给虚拟机;
(9-5)虚拟机查看其营救点虚拟机级缓存,以判断是否有剩余空间,如果没有剩余空间,则转入步骤(9-6),否则转入步骤(9-10);
(9-6)采用替换算法将反馈结果更新到营救点虚拟机级缓存中,具体而言,采用基于总权值的最近最少/最不频繁使用替换算法,具体算法如下:
flag ( t i , j ) init = ( k + 1 ) Σ s = 1 h rw s ,
Figure BDA0000117337130000082
其中k(0≤k≤1)是可以由用户来指定,flag(ti,j)init是营救路径ti,j的初始替换标志位,是由路径ti,j上的所有营救点权值的总和乘上相关系数得到。如果某时刻需要进行替换,则对营救点虚拟机级缓存中所存储的所有营救路径依据替换标志位进行排序,对其中最小的替换标志位的营救路径进行替换更新操作;
(9-7)将营救路径上的所有营救点按权值大小进行排序,具体而言,将营救路径ti,j上的营救点按权值rws大小进行排序;
(9-8)遍历所有营救点,以查找能够绕过故障路径的营救点作为最佳营救点,具体而言,优先选择权值最高的营救点进行测试,在软件回滚到对应的检查点处运行时,强制营救点处的函数直接返回对应的返回值rts,查看该营救点是否可以绕过故障路径,也就是查看故障是否还继续发生。如果故障依然发生,则选择权值第二高的营救点进行测试,并以此类推,直到找到最佳营救点rs’可以绕过故障路径;
(9-9)将与栈溢出故障相关的信息记录在漏洞营救表中;
(9-10)直接将反馈结果更新到营救点虚拟机级缓存中。
如图4所示,本发明方法的步骤(11)包括以下几个子步骤:
(11-1)虚拟机在营救点虚拟机级缓存中对最佳营救点rs’的权值进行更新;
(11-2)虚拟机提交更新请求到其节点上的管理域,以对营救点节点级缓存中最佳营救点rs’的权值进行更新;
(11-3)管理域将更新后的权值提交给管理节点,具体而言,管理域收集营救点节点级缓存中的营救点权值变化信息,其是一个七元组{VMID,Ni,Vi,ti,j,rns,rlws,rws},只记录了权值发生变化的营救点的信息,其中VMID指当前物理节点的系统编号。当时间达到预设周期间隔后,管理域将该信息附上当前系统时间发送给管理节点,该周期可以由用户来指定,默认为10分钟;
(11-4)管理节点在营救点数据库中更新营救点的权值,具体而言,管理节点收集到各管理域发来的权值变化信息后,在营救点数据库中查找营救路径ti,j上权值发生变化的营救点rs所对应的当前权值rw’s以及上个周期同步的权值rlw’s(防止一个周期内某管理域因网络问题而导致未能与管理节点进行同步),更新当前的权值为rws-rlws+rw’s
(11-5)管理节点周期性地将更新后的营救点传送到管理域中,以对管理域的营救点节点级缓存进行更新,该周期可以由云平台管理员来指定,默认为25分钟,
(11-6)管理域周期性地发送更新后的营救点传送到虚拟机,以对虚拟机的营救点虚拟机级缓存进行更新,该周期可以由用户来指定,默认为10分钟,
(11-7)虚拟机将更新后的最佳营救点和软件故障相关信息发送给虚拟机所在节点的管理域。
下面结合图5说明本方法应用环境的配置情况。
在云计算平台中,包含了至少1个管理节点(本图中以1个管理节点为例,其用来根据客户需求分配和调度其管理的节点资源)以及众多的物理节点,每个节点上都部署了虚拟机(本图中只给出了节点1中的部署情况,其它物理节点类似)。
在节点1的虚拟机中部署了本系统容忍软件故障必需的组件,包括了故障检测模块,营救点虚拟机级缓存,检查点/回滚模块,恢复测试模块和虚拟机级管理模块。其中故障检测模块用来检测软件故障;营救点虚拟机级缓存则是存储部分部署在该虚拟机中待保护软件的营救点;检查点/回滚模块则是用来周期性对待保护的软件做检查点以及在发生故障后讲该软件状态回滚到指定的检测点状态;恢复测试模块则是用来测试候选的营救点;虚拟机级管理模块则是用来控制各模块的协调工作,并与管理域的节点级管理模块进行通信。
在节点1的管理域中部署了3个组件,包括报告模块,营救点节点级缓存和节点级管理模块。其中报告模块用来存储虚拟机中发来的故障相关信息,并借助节点级管理模块将收集后的信息发送给管理节点;营救点节点级缓存用来存放在该节点上部署的待保护软件的营救点;节点级管理模块则是用来控制各模块的协调工作,并与节点中虚拟机以及管理节点进行通信。
在管理节点中需要部署相关组件,包括故障报告管理模块,营救点数据库和云平台前端管理模块。其中故障报告管理模块用来存储各虚拟机的故障相关信息;营救点数据库用来存储软件的营救点相关信息;云平台前端管理模块用来控制各模块的协调工作,并与节点级管理模块进行通信。

Claims (5)

1.一种面向云平台的软件故障容忍方法,包括以下步骤:
对需要保护的软件进行压力测试,以获取所述软件的营救点,并根据所述营救点构建漏洞营救表、营救点数据库、营救点节点级缓存和营救点虚拟机级缓存;
周期性地在虚拟机中对所述软件构建检查点;
判断所述虚拟机是否需要迁移,若所述虚拟机需要迁移,则将所述营救点节点级缓存和所述营救点虚拟机级缓存中的软件故障容忍信息随同所述虚拟机进行迁移,否则检测所述软件是否出现故障;
若所述软件没有出现故障,则返回所述周期性地在虚拟机中对所述软件构建检查点的步骤;
若所述软件出现故障,则获取软件故障相关信息;
根据所述软件故障相关信息判断所述故障是否是栈溢出故障;
若所述故障不是栈溢出故障,则分析所述软件故障相关信息,以获取函数调用栈信息;
将所述软件回滚到距离所述故障最近的检查点,根据所述函数调用栈信息获取候选营救点,并按所述候选营救点的权值大小对所述候选营救点进行测试,以得到能够容忍所述故障的最佳营救点;
增加所述最佳营救点的权值;
更新所述最佳营救点在所述营救点虚拟机级缓存、所述营救点节点级缓存和所述营救点数据库中的权值信息,所述虚拟机将更新后的最佳营救点和所述软件故障相关信息发送给所述虚拟机所在节点的管理域;
所述节点的管理域将更新后的最佳营救点和所述软件故障相关信息发送给云平台的管理节点;
若所述故障是栈溢出故障,则判断所述漏洞营救表中是否存在与所述故障匹配的函数调用栈信息;
若所述漏洞营救表中不存在与所述故障匹配的函数调用栈信息,则进入所述分析所述软件故障相关信息,以获取所述函数调用栈信息的步骤;
若所述漏洞营救表中存在与所述故障匹配的函数调用栈信息,则提取所述函数调用栈信息,然后进入所述将所述软件回滚到距离所述故障最近的检查点,根据所述函数调用栈信息获取候选营救点,并按所述候选营救点的权值大小对所述候选营救点进行测试,以得到能够容忍所述故障的最佳营救点的步骤。
2.根据权利要求1所述的软件故障容忍方法,其特征在于,所述将所述营救点节点级缓存和所述营救点虚拟机级缓存中的软件故障容忍信息随同所述虚拟机进行迁移的步骤包括以下子步骤:
所述虚拟机的待迁移节点上的管理域将所述虚拟机的营救点发送到目标节点的管理域中;
所述目标节点的管理域判断其营救点节点级缓存中是否已存在所述营救点,若不存在所述营救点,则将所述营救点增加到其营救点节点级缓存中,若存在所述营救点,则将所述营救点与其营救点节点级缓存中的营救点进行合并;
所述待迁移节点上的管理域判断其它虚拟机上是否部署了所述软件,如果是则将所述待迁移节点上所述软件的营救点设置为上一次更新时营救点数据库中的权值信息,否则删除所述待迁移节点上所述软件的营救点。
3.根据权利要求1所述的软件故障容忍方法,其特征在于,所述将所述软件回滚到距离所述故障最近的检查点,根据所述函数调用栈信息获取候选营救点,并按所述候选营救点的权值大小对所述候选营救点进行测试,以得到能够容忍所述故障的最佳营救点的步骤包括以下子步骤:
所述虚拟机将所述软件回滚到距离所述故障最近的检查点;
根据所述函数调用栈信息,在所述营救点虚拟机级缓存中查找是否存在与所述函数调用栈信息匹配的营救路径,若未查找到所述营救路径,则所述虚拟机提交查找请求到其管理域;
所述管理域在其营救点节点级缓存中查找所述营救路径,并将查找的结果反馈给所述虚拟机;
所述虚拟机查看其营救点虚拟机级缓存,以判断是否有剩余空间,如果没有剩余空间,则采用替换算法将所述结果更新到所述营救点虚拟机级缓存中;
将所述营救路径上的所有营救点按权值大小进行排序;
遍历所述所有营救点,以查找能够绕过所述故障的路径的营救点作为所述最佳营救点;
将与所述栈溢出故障相关的信息记录在所述漏洞营救表中。
4.根据权利要求3所述的软件故障容忍方法,其特征在于,所述将所述软件回滚到距离所述故障最近的检查点,根据所述函数调用栈信息获取候选营救点,并按所述候选营救点的权值大小对所述候选营救点进行测试,以得到能够容忍所述故障的最佳营救点的步骤还包括以下子步骤:
若查找到所述营救路径,则进入所述将所述营救路径上的所有营救点按权值大小进行排序的步骤;
若有剩余空间,则直接将所述结果更新到所述营救点虚拟机级缓存中。
5.根据权利要求1所述的软件故障容忍方法,其特征在于,所述更新所述最佳营救点在所述营救点虚拟机级缓存、所述营救点节点级缓存和所述营救点数据库中的权值信息,所述虚拟机将更新后的最佳营救点和所述软件故障相关信息发送给所述虚拟机所在节点的管理域的步骤包括以下子步骤:
所述虚拟机在所述营救点虚拟机级缓存中对所述最佳营救点的权值进行更新;
所述虚拟机提交更新请求到其节点上的管理域,以对所述营救点节点级缓存中最佳营救点的权值进行更新;
所述管理域将更新后的所述权值提交给所述管理节点;
所述管理节点在所述营救点数据库中更新所述营救点的权值;
所述管理节点周期性地将更新后的营救点传送到所述管理域中,以对所述管理域的所述营救点节点级缓存进行更新;
所述管理域周期性地发送更新后的营救点传送到所述虚拟机,以对所述虚拟机的所述营救点虚拟机级缓存进行更新;
所述虚拟机将更新后的最佳营救点和所述软件故障相关信息发送给所述虚拟机所在节点的管理域。
CN201110405522.6A 2011-12-08 2011-12-08 面向云平台的软件故障容忍方法 Expired - Fee Related CN102521128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110405522.6A CN102521128B (zh) 2011-12-08 2011-12-08 面向云平台的软件故障容忍方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110405522.6A CN102521128B (zh) 2011-12-08 2011-12-08 面向云平台的软件故障容忍方法

Publications (2)

Publication Number Publication Date
CN102521128A CN102521128A (zh) 2012-06-27
CN102521128B true CN102521128B (zh) 2014-03-26

Family

ID=46292059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110405522.6A Expired - Fee Related CN102521128B (zh) 2011-12-08 2011-12-08 面向云平台的软件故障容忍方法

Country Status (1)

Country Link
CN (1) CN102521128B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819465B (zh) * 2012-06-29 2014-09-24 华中科技大学 一种虚拟化环境中故障恢复的方法
CN102779094A (zh) * 2012-08-21 2012-11-14 深圳中兴网信科技有限公司 终端和软件异常测试方法
US9323553B2 (en) * 2013-09-13 2016-04-26 International Business Machines Corporation Reducing virtual machine suspension time in checkpoint system
CN105630663B (zh) * 2014-10-30 2018-08-21 北京临近空间飞行器系统工程研究所 基于任务备份的并行cfd计算容错方法
CN105868097B (zh) * 2015-01-22 2018-09-14 阿里巴巴集团控股有限公司 系统测试方法及其装置
CN105005509B (zh) * 2015-07-07 2018-08-14 北京大学 一种基于运行时模型的云计算容错机制配置方法
CN106559441B (zh) * 2015-09-25 2020-09-04 华为技术有限公司 一种基于云计算服务的虚拟机监控方法、装置及系统
CN108920375A (zh) * 2018-07-11 2018-11-30 郑州云海信息技术有限公司 一种软件压力测试方法、装置、设备及存储介质
CN111369688B (zh) * 2020-03-11 2023-05-09 暗物智能科技(广州)有限公司 一种结构化场景表达的认知导航方法及系统
CN111930563B (zh) * 2020-07-15 2022-01-11 中国人民解放军陆军工程大学 云仿真系统中的容错方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101075206A (zh) * 2007-07-03 2007-11-21 北京控制工程研究所 基于链接表的软件主动容错方法
CN101425036A (zh) * 2008-12-03 2009-05-06 中国人民解放军国防科学技术大学 一种普适计算环境下的构件容错方法
CN102104496A (zh) * 2010-12-23 2011-06-22 北京航空航天大学 一种云计算环境下中间数据的容错性优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9106452B2 (en) * 2008-03-24 2015-08-11 Shoretel, Inc. Cloud VoIP system with bypass for IP media

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101075206A (zh) * 2007-07-03 2007-11-21 北京控制工程研究所 基于链接表的软件主动容错方法
CN101425036A (zh) * 2008-12-03 2009-05-06 中国人民解放军国防科学技术大学 一种普适计算环境下的构件容错方法
CN102104496A (zh) * 2010-12-23 2011-06-22 北京航空航天大学 一种云计算环境下中间数据的容错性优化方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JIN Hai等.Fault-Tolerant Grid Architecture and Practice.《J.Comput.Sci.& Technol.》.2003,第18卷(第4期),第423-433页.
JIN Hai等.Fault-Tolerant Grid Architecture and Practice.《J.Comput.Sci.&amp *
Technol.》.2003,第18卷(第4期),第423-433页. *
石宣化等.通用网格容错框架研究.《华中科技大学学报(自然科学版)》.2006,第34卷(第7期),第42-45页.
通用网格容错框架研究;石宣化等;《华中科技大学学报(自然科学版)》;20060731;第34卷(第7期);第42-45页 *

Also Published As

Publication number Publication date
CN102521128A (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
CN102521128B (zh) 面向云平台的软件故障容忍方法
US11880386B1 (en) Method and system for using before images of replicated changes from a source database with current target database images read from the target database when continuously comparing two databases which are actively being kept synchronized
CN110807064B (zh) Rac分布式数据库集群系统中的数据恢复装置
CN106789306A (zh) 通信设备软件故障检测收集恢复方法和系统
CN102088490B (zh) 数据存储方法、设备和系统
CN102317913B (zh) 一种事务恢复方法和事务恢复装置
CN102567185B (zh) 一种应用服务器的监控方法
US8554727B2 (en) Method and system of tiered quiescing
US10831579B2 (en) Error detecting device and error detecting method for detecting failure of hierarchical system, computer readable recording medium, and computer program product
CN110096437A (zh) 微服务架构的测试方法及相关产品
CN109885456A (zh) 一种基于系统日志聚类的多类型故障事件预测方法及装置
CN106294073A (zh) 服务调用方法及装置
CN110266544B (zh) 一种云平台微服务化服务失败的原因定位的装置及方法
CN113657715A (zh) 一种基于核密度估计调用链的根因定位方法及系统
Padhye et al. Scalable transaction management with snapshot isolation for NoSQL data storage systems
CN105653411A (zh) 支持局部永久故障恢复的多核处理器芯片可重构系统
CN100435106C (zh) 应用服务器的分级再生方法
Kończak et al. Recovery algorithms for paxos-based state machine replication
CN102404139A (zh) 一种提高容错服务器应用层级容错性能的方法
Harrison et al. Incorporating fault tolerance tactics in software architecture patterns
CN103634167A (zh) 云环境中对目标主机进行安全配置检查的方法和系统
Wang et al. Progressive retry for software failure recovery in message-passing applications
CN105302527B (zh) 线程组织方法
CN105988885B (zh) 基于补偿回滚的操作系统故障自恢复方法
Baldoni et al. Characterization of consistent global checkpoints in large-scale distributed systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140326

Termination date: 20201208