CN105988885A - 基于补偿回滚的操作系统故障自恢复方法 - Google Patents
基于补偿回滚的操作系统故障自恢复方法 Download PDFInfo
- Publication number
- CN105988885A CN105988885A CN201510154388.5A CN201510154388A CN105988885A CN 105988885 A CN105988885 A CN 105988885A CN 201510154388 A CN201510154388 A CN 201510154388A CN 105988885 A CN105988885 A CN 105988885A
- Authority
- CN
- China
- Prior art keywords
- kernel
- fault
- data
- compensation
- stack
- 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.)
- Granted
Links
Landscapes
- Retry When Errors Occur (AREA)
Abstract
操作系统故障根据传播范围可分为process-local(进程局部)和kernel-global(内核全局)两类,分别造成进程局部数据和内核全局状态的错误,本发明公开了一种基于补偿回滚的操作系统故障自恢复技术,可使系统从错误状态恢复正常。该技术方案包括进程备份重启和内核补偿两种机制,其中进程备份机制通过周期性备份进程执行状态,当进程出现故障崩溃时,通过重新载入备份的执行镜像完成快速重启;内核补偿机制通过监测内核全局方法调用,通过内核栈结构存储进程执行的修改内核全局状态的操作,在进程故障后利用补偿操作消除内核的不一致状态,控制故障的传播效应,减小单点故障造成的影响。在恢复进程局部数据前提下,有效控制了本进程故障整体系统的影响,提高了故障恢复率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于补偿回滚的操作系统故障自恢复方法。
背景技术
作为系统软件的最低层,操作系统管理软硬件资源,为系统软硬件交互提供接口,充当TCB(Trusting Computing Base可信计算基础)的角色。当前操作系统在出现严重内部错误时大都采取fail-stop(故障即失效)的行为模式,因此故障的出现等价于系统的失效。操作系统设计一般采用模块化或层级结构,某个模块或进程中出现的故障会通过程序调用、参数传递等方式进行传播,导致故障影响范围的扩大。操作系统故障根据其传播范围分为process-local(进程局部故障)和kernel-global(内核全局故障)两类。其中process-local类型故障的影响范围仅限于故障进程上下文,而kernel-global类型故障则会影响到其他进程的执行上下文和全局数据结构。由于kernel-global类型故障不仅会带来进程数据的丢失,还会引起系统其他模块甚至整体的失效,故其故障危害要大于process-local故障。操作系统本身存在很多防范机制,包括对指针数据结构的检查,在发现数据不一致时终止故障进程的执行。该类机制虽然可以缩小错误传播的范围,控制故障的传播,但进程功能的失效也是不可接受的。基于以上分析,故障恢复策略应该在完成进程执行状态的恢复的同时,保证共享数据的一致性,消除故障传播的影响。
障恢复方法的设计一般涉及两个问题,一是如何清除系统的错误状态,二是如何恢复系统失效前的执行状态,且需要满足以下几点要求:1)抢占性,可以在程序执行过程中的任意一点执行数据备份操作;2)透明性,对于已有的程序不需要对原有的代码进行修改就能支持备份重启机制;3)低负载,不能造成显著的系统负载;4)易于移植,不需要对操作系统代码或结构进行修改,能够较为便利地集成到现有操作系统中;5)安全性,机制避免系统程序的优先级和权限被恶意提升。针对操作系统故障,除重新启动外,其他方法都无法将系统从故障状态完全恢复。但对于安全关键应用,重新启动带来的损失是无法接受的。因此,本发明中设计的策略均基于不重新启动整个系统的前提。
对于传播范围仅限于错误进程空间,传播途径主要是参数调用和函数返回的故障,通过终止错误进程对内核进行恢复是一种有效的手段。对于会造成内核共用数据的污染的故障,如导致内核中负责管理堆栈的红黑树数据结构污染,则需要对全局的数据操作进行跟踪记录相关信息来实现故障修复。当前操作系统通过冗余设计或重启的方法实现故障自恢复。冗余设计方案通过软硬件冗余来实现故障屏蔽,典型代表为三余度系统、N-Version(多版本)软件系统等,通过表决的方法保证结果的正确性。对故障系统、组件或操作进行重启是简单有效的恢复策略,如微重启、Transactional Recovery(基于事务的恢复策略)等,但未考虑kernel-global类型故障带来的全局数据状态错误。
现有技术通过重启系统或重新执行进程来恢复故障,而未考虑故障传播效应,针对以上问题,本发明提出了一种基于补偿回滚的故障自恢复技术。该方法对内核全局数据或方法进行监测,在进程局部数据被正确恢复的前提下,通过控制故障的传播效应,保证了全局数据状态的一致性,兼顾了对两类故障的恢复效果。
发明内容
本发明的目的为提供一种在不重新启动整个系统的前提下恢复操作系统故障的方法。该基于补偿回滚的故障恢复方法不仅可恢复故障进程执行状态,而且可消除该故障进程对内核全局状态的影响,从而消除故障对其他进程的影响,提高故障恢复率。
为达到上述目的,本发明提供包括进程备份重启和内核补偿两机制的技术方案,可描述如下:
进程备份重启机制实现process-local类型故障的恢复,对进程相关的文件句柄、内存数据、寄存器数据周期性保存到文件中,此外还需记录进程执行的内核系统调用。操作系统中,进程对内核全局数据的操作通过特定的系统调用实现,因此对全局数据修改的记录可转化为对系统调用序列的记录。
内核补偿机制用于恢复kernel-global类型故障,其工作流程分为如下几个阶段,内核系统调用监测阶段、补偿操作映射阶段、补偿栈数据维护阶段和故障补偿修复阶段。工作原理为通过执行内核系统调用对应的补偿调用来消除对内核全局状态的影响,如打开文件和关闭文件系统调用即为调用与补偿调用的关系。
以上两机制执行步骤可描述如下:
[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。
[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:
(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。
(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内存存储内核方法调用监测阶段采集的数据,并将该信息传输到栈数据维护阶段。
(c)栈数据维护阶段,对内核调用信息及其对应的补偿操作信息进行维护,为故障恢复阶段提供数据支持,若无故障,则执行完栈数据操作后返回内核调用追踪阶段,若收到故障监测器故障报警,则进入故障补偿恢复阶段。
[3]故障补偿恢复阶段,通过补偿栈中的数据生成补偿操作序列,恢复内核全局数据一致性。具体包括以下步骤:
(a)在对故障进程进行修复时,首先将检查内核补偿栈。若栈中信息不为空,执行(b)步骤,否则执行(c)步骤。
(b)此时当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。
(c)首先需要载入故障进程执行镜像文件,载入内存,恢复当前进程的执行状态,包括寄存器数据、内存数据已经文件句柄,完成故障恢复恢复。
通过本发明中涉及的补偿回滚故障恢复方法,在进程故障后利用补偿操作消除内核的不一致状态,控制故障的传播效应,减小单点故障造成的影响。在恢复进程局部数据前提下,有效控制了本进程故障整体系统的影响,提高了故障恢复率。
附图说明
下面结合附图对本发明进一步说明:
图1为进程备份重启机制示意图;
图2为内核补偿栈工作流程示意图;
图3为进程备份重启机制流程图;
图4为补偿栈操作流程图;
图5故障修复流程图;
具体实施方式
在每个备份周期内,进程备份重启机制主要包括进程信息备份和内核调用追踪两个阶段。
进程信息备份阶段,图1中t0到t1时间段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器等信息保存到非易失存储器中。在每个Checkpoint周期结束时,需要更新进程备份镜像。
内核调用追踪阶段,图1中t1到t2时间段,利用中断捕捉本进程的内核全局方法调用,将能够导致全局数据修改的操作及其参数等信息存储到内核补偿栈结构中,该结构常驻于系统内存中,实现快速地增加删除内核系统调用信息。
图2中描述了内核补偿栈的工作流程,ci为ai对应的补偿操作,补偿操作映射模块可以根据ai查找出其对应的ci。若某一执行的进程中包含a1 a2 a3...ak-1 ak关键方法调用,在该进程顺次执行该操作序列时,补偿映射模块根据补偿操作映射获得其补偿操作,同时将补偿操作信息加入补偿栈中保存。若在当前备份周期内操作流执行完后无故障正常退出,则在监测到补偿调用时,会依次出栈相应的补偿操作信息,补偿栈应为空。若执行过程中出现故障,则需依次出栈当前补偿栈中与该操作流相关的补偿操作,生成补偿操作序列并依次执行,完成对系统全局不一致状态的修复。
进程备份重启机制执行流程如图3所示。在计时器累加后会判断当前是否处于新的备份周期,若处于新的周期,则对原有的进程镜像进行更新。若处于旧的的周期,则会监测内核关键方法的调用,在内核补偿栈中记录关键方法、补偿方法调用信息。用户可以在不需要恢复模块时将其卸载。在每个备份周期完成调用信息记录或进程镜像更新操作后,会检查该加载的自恢复模块是否有效,若无效则会退出整个备份重启机制;否则执行计时器进行累加,进入后续信息记录更新过程。
图4中描述了补偿栈的执行流程,提供入栈、出栈、栈数据查询等基本操作接口。数据以链表的形式进行存储。入栈操作通过在头结点后插入节点实现,出栈操作通过反向遍历链表删除头结点实现。补偿栈数据为全局数据,且对其访问操作较短,且不能被中断或抢占,故设置了自旋锁保证其数据一致性。每次进行栈数据操作时需要首先获取相应的自旋锁。
故障修复流程如图5所示,主要包括内核补偿和进程状态恢复两个基本阶段,具体执行操作如前所述:首先将检查内核补偿栈。若栈中信息不为空,说明当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。若补偿栈为空,则直接进入进程状态恢复阶段。其次需要载入故障进程执行镜像文件,调用进程备份重启机制提供的重启接口,完成故障恢复恢复。
Claims (1)
1.基于补偿回滚的操作系统故障自恢复方法,其特征在于包括下述步骤:
[1]进程信息备份阶段,将与该进程相关的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据值以文件形式保存到非易失存储器中。
[2]内核调用追踪阶段,建立内核栈及系统调用逆调用映射机制,在内核中通过动态内存分配的方法建立动态栈,并为需要监测的系统调用及其逆调用设置标识号。此阶段链接进程备份重启机制与内核补偿机制,其可分为如下基本步骤:
(a)内核方法调用监测阶段,利用中断捕捉监测进程执行的内核系统调用,对内核执行流中关键方法调用进行监测,将采集到的全局寄存器、内存指针、进程局部寄存器、占用内存段中的数据传输至补偿操作映射阶段,当监测到补偿调用时则直接修改补偿栈数据。
(b)补偿操作映射阶段,根据监测到的内核调用信息,映射出可以消除该调用导致的全局数据变化的补偿调用,动态分配内存存储内核方法调用监测阶段采集的数据,并将该信息传输到栈数据维护阶段。
(c)栈数据维护阶段,对内核调用信息及其对应的补偿操作信息进行维护,为故障恢复阶段提供数据支持,若无故障,则执行完栈数据操作后返回内核调用追踪阶段,若收到故障监测器故障报警,则进入故障补偿恢复阶段。
[3]故障补偿恢复阶段,通过补偿栈中的数据生成补偿操作序列,恢复内核全局数据一致性。
具体包括以下步骤:
(a)在对故障进程进行修复时,首先将检查内核补偿栈。若栈中信息不为空,执行(b)步骤,否则执行(c)步骤。
(b)此时当前进程在出错退出时对全局数据造成的影响未被消除,则从补偿栈中依次出栈补偿操作,根据其操作标识调用补偿方法,使内核状态恢复到一致状态。
(c)首先需要载入故障进程执行镜像文件,载入内存,恢复当前进程的执行状态,包括寄存器数据、内存数据已经文件句柄,完成故障恢复恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510154388.5A CN105988885B (zh) | 2015-03-26 | 2015-03-26 | 基于补偿回滚的操作系统故障自恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510154388.5A CN105988885B (zh) | 2015-03-26 | 2015-03-26 | 基于补偿回滚的操作系统故障自恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988885A true CN105988885A (zh) | 2016-10-05 |
CN105988885B CN105988885B (zh) | 2019-01-29 |
Family
ID=57040379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510154388.5A Expired - Fee Related CN105988885B (zh) | 2015-03-26 | 2015-03-26 | 基于补偿回滚的操作系统故障自恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105988885B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491836A (zh) * | 2018-10-30 | 2019-03-19 | 京信通信系统(中国)有限公司 | 数据恢复方法、装置及基站 |
CN110874279A (zh) * | 2018-08-29 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 故障定位方法、装置和系统 |
CN112559253A (zh) * | 2020-12-24 | 2021-03-26 | 科东(广州)软件科技有限公司 | 一种计算机系统数据备份与还原的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102325342A (zh) * | 2011-10-31 | 2012-01-18 | 北京邮电大学 | 一种son系统自治愈功能中小区中断检测判决方法及其装置 |
CN102364448A (zh) * | 2011-09-19 | 2012-02-29 | 浪潮电子信息产业股份有限公司 | 一种计算机故障管理系统的容错方法 |
CN102508742A (zh) * | 2011-11-03 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 面向硬件不可恢复内存故障的内核代码软容错方法 |
CN103049381A (zh) * | 2012-12-21 | 2013-04-17 | 清华大学 | 基于访问规则控制的内核扩展模块错误检测方法及装置 |
US8694637B1 (en) * | 2001-02-16 | 2014-04-08 | Parallels IP Holdings GmbH | Virtual private server with CPU time scheduler and isolation of system components |
CN104050093A (zh) * | 2013-03-14 | 2014-09-17 | 辉达公司 | 用于追踪统一虚拟存储器系统中的页面故障的故障缓冲区 |
-
2015
- 2015-03-26 CN CN201510154388.5A patent/CN105988885B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694637B1 (en) * | 2001-02-16 | 2014-04-08 | Parallels IP Holdings GmbH | Virtual private server with CPU time scheduler and isolation of system components |
CN102364448A (zh) * | 2011-09-19 | 2012-02-29 | 浪潮电子信息产业股份有限公司 | 一种计算机故障管理系统的容错方法 |
CN102325342A (zh) * | 2011-10-31 | 2012-01-18 | 北京邮电大学 | 一种son系统自治愈功能中小区中断检测判决方法及其装置 |
CN102508742A (zh) * | 2011-11-03 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 面向硬件不可恢复内存故障的内核代码软容错方法 |
CN103049381A (zh) * | 2012-12-21 | 2013-04-17 | 清华大学 | 基于访问规则控制的内核扩展模块错误检测方法及装置 |
CN104050093A (zh) * | 2013-03-14 | 2014-09-17 | 辉达公司 | 用于追踪统一虚拟存储器系统中的页面故障的故障缓冲区 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874279A (zh) * | 2018-08-29 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 故障定位方法、装置和系统 |
CN110874279B (zh) * | 2018-08-29 | 2023-05-30 | 阿里巴巴集团控股有限公司 | 故障定位方法、装置和系统 |
CN109491836A (zh) * | 2018-10-30 | 2019-03-19 | 京信通信系统(中国)有限公司 | 数据恢复方法、装置及基站 |
CN109491836B (zh) * | 2018-10-30 | 2021-04-27 | 京信通信系统(中国)有限公司 | 数据恢复方法、装置及基站 |
CN112559253A (zh) * | 2020-12-24 | 2021-03-26 | 科东(广州)软件科技有限公司 | 一种计算机系统数据备份与还原的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105988885B (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159818B (zh) | 内存数据管理中日志恢复方法及其仿真系统 | |
CN101377750B (zh) | 一种用于机群容错的系统和方法 | |
US7779298B2 (en) | Distributed job manager recovery | |
US8132043B2 (en) | Multistage system recovery framework | |
US20050283504A1 (en) | Disaster recovery system suitable for database system | |
US20070220059A1 (en) | Data processing node | |
US20110082832A1 (en) | Parallelized backup and restore process and system | |
GB2515501A (en) | Replication for on-line hot-standby database | |
WO2010144913A2 (en) | Memory change track logging | |
US11221927B2 (en) | Method for the implementation of a high performance, high resiliency and high availability dual controller storage system | |
US8380660B2 (en) | Database system, database update method, database, and database update program | |
CN105550056B (zh) | 一种基于系统重构的故障自愈系统及其实现方法 | |
Lee et al. | Design and evaluation of a fault-tolerant multiprocessor using hardware recovery blocks | |
CN115145697B (zh) | 数据库事务的处理方法、装置及电子设备 | |
US20140250326A1 (en) | Method and system for load balancing a distributed database providing object-level management and recovery | |
CN105988885A (zh) | 基于补偿回滚的操作系统故障自恢复方法 | |
CN107194247B (zh) | 一种针对虚拟机回滚的软件补偿方法及系统 | |
US11226875B2 (en) | System halt event recovery | |
CN106383995B (zh) | 一种基于节点失效关联性的检查点放置方法 | |
US9110850B2 (en) | Method for accelerating start up of a computerized system | |
Meyer et al. | RADIC: A faulttolerant middleware with automatic management of spare nodes | |
US7890798B1 (en) | Computer cluster with second-node instance of application having access to state snapshot of first-node instance of application | |
CN103279367A (zh) | 一种内核驱动隔离系统 | |
CN118466862B (zh) | 一种数据存储方法、产品、装置以及介质 | |
US20230092343A1 (en) | Lockstep processor recovery for vehicle applications |
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: 20190129 Termination date: 20200326 |