一种基于增量快照的时空隔离域快速恢复方法和系统
文献发布时间:2023-06-19 09:43:16
技术领域
本发明涉及信息技术领域,尤其是一种基于增量快照的时空隔离域快速恢复方法和系统。
背景技术
域是资源分配和释放的单位,通过域可以实现应用间的隔离和保护,域也是应用隔离保护的单位,每个域有独立的运行时间和运行空间。当一个应用出现致命错误不会影响到其他域,更不会影响到时空隔离域内核。快照也叫检查点技术是容错计算机系统故障恢复的主要手段之一。检查点常常与卷回恢复结合在一起使用,所以也称为检查点与卷回恢复技术。系统在程序的整个执行过程中,每隔一定时间把整个程序的状态保存到可靠存储介质上。在发生故障之后,程序重新启动并恢复保存的程序状态,从保存点状态继续执行,把计算损失减小到状态保存时刻到故障发生时刻这段时间所作的计算。通过这样的恢复操作使得程序可避免失效后就要从头开始执行,从而使计算损失得以降低,尤其对于运行时间很长的科学计算。但检查点技术只能用于偶然性故障的恢复,对于永久性故障则无能为力,因为后者必须通过维修而不是重新执行来使故障消失,此外能否成功恢复还依赖于稳定存储器的可靠性,即必须保证存储在稳定存储器内的检查点信息不被损坏。
目前,主流的桌面操作系统中实现了快照技术,因为快照技术与操作系统内核紧密相关,因此不同操作系统对快照技术的实现存在较大差异。当前快照技术主要侧重于保存程序的所有数据和状态,导致消耗大量存储。且对程序实行快照时必须暂停程序运行,以便保存确定性的程序数据,快照完成后再恢复程序运行,针对在不同关键等级应用混合运行的系统中,对关键应用实行暂停操作,可能导致不可预期的后果。
因此针对时空隔离域操作系统特点,如何实现时空隔离域快照技术以及提高存储使用率和在不主动暂停程序的情况下实现快照是当前需要解决的问题。
发明内容
本发明所要解决的技术问题是:针对上述存在的问题,提供一种基于增量快照的时空隔离域快速恢复方法。
本发明提供了一种基于增量快照的时空隔离域快速恢复方法,所述方法为,根据时空隔离域操作系统的调度特点,在时空隔离域的时间调度表中预留一个用于快照域运行的时间窗口,然后根据时间调度表的调度运行快照域,并在快照域中执行其它域的域快照生成和域回卷恢复;其中:
所述域快照生成的步骤包括:
S11,获取域的快照相关信息,并根据域快照信息构建快照头信息;
S12,将所述快照头信息基于bsdiff二进制差分算法生成增量差分包;
S13,基于压缩算法压缩所述增量差分包;
所述域回卷恢复的步骤包括:
S21,基于解压算法解压被压缩的所述增量差分包;
S22,基于bspatch算法从所述增量差分包中还原快照头信息;
S23,根据还原的快照头信息恢复域运行。
进一步地,所述域的快照相关信息包括域控制块信息和域内存数据;所述域控制块信息包括域运行时间、域运行状态、域寄存器上下文、域地址空间映射、域使用的内核对象;所述域内存数据包括核心栈和域段数据;所述域段数据包括代码段、数据段和BBS段。
进一步地,所述快照头信息包括校验码、快照魔数、快照总大小、域ID、备份段总个数、备份段基本信息、核心栈、域控制块和域段数据备份;所述备份段基本信息包括备份段大小、段逻辑起始地址和备份空间的段偏移。
进一步地,步骤S11包括如下子步骤:
S111,备份域段数据并记录备份段基本信息;
S112,备份核心栈;
S113,备份域控制块信息;
S114,设置快照魔数、快照总大小、域ID、备份段总个数;
S115,计算校验码并存储快照头首地址。
进一步地,步骤S23包括如下子步骤:
S231,基于快照魔数和校验码检查快照头信息的正确性;
S232,获取备份段基本信息,并拷贝域段数据至目标地址;
S233,恢复核心栈和域寄存器上下文;
S234,恢复域控制块中其他数据;
S235,调用域启动接口启动恢复时空隔离域运行。
进一步地,每次生成的增量差分包都具有一个时间戳。
进一步地,所述压缩算法和解压算法采用bzip2算法实现。
本发明还提供一种基于增量快照的时空隔离域快速恢复系统,包括:快照管理模块,用于在时空隔离域的时间调度表中预留一个用于快照域运行的时间窗口,然后根据时间调度表的调度运行快照域,并在快照域中执行其它域的域快照生成和域回卷恢复;
所述快照管理模块包括:
域快照模块,用于获取域的快照相关信息,并根据域快照信息构建快照头信息;
增量模块,用于基于bsdiff二进制差分算法生成增量差分包,以及基于 bspatch算法从所述增量差分包中还原快照头信息;
数据压缩模块,用于采用压缩算法和解压算法对增量差分包进行压缩或解压;
域回卷恢复模块,用于根据还原的快照头信息恢复域运行。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明利用时空隔离域操作系统的调度特点,可以在不暂停其他域的情况下实现快照并保证了实时性,同时,利用压缩解压算法,以及基于二进制算法实现的增量快照功能,能够更好地使用存储资源。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明中预留了快照域的时间调度表的原理图。
图2a和2b为本发明中快照头信息结构示意图。
图3为本发明中域快照生成的流程框图。
图4为本发明中域回卷恢复的流程框图。
图5为本发明中基于增量快照的时空隔离域快速恢复系统的结构示意图。
具体实施方式
以下结合实施例对本发明的特征和性能作进一步的详细描述。
快照的实现是卷回恢复的基础,快照技术根据实现所在层次以及对用户的透明性可分为用户级非透明快照、用户级透明快照和内核级快照。用户级非透明快照和用户级透明快照具有较好的可移植性,但是用户需要修改应用程序源码,缺乏透明性和通用性,且已有的快照系统都存在一些局限性,只针对部分应用程序有效。内核级快照,即操作系统内核引入快照管理模块,快照机制对用户完全透明,无需用户的任何参与,避免了程序开发过程中繁琐的容错设计。因为时空隔离域内核能够有效地监测时空隔离域的运行状态、内存使用情况、资源使用情况等在用户级很难得到的有效信息,因此,在容错能力上是最强的。
另一方面,时空隔离域操作系统的调度方式通常采用时间调度表方式进行域调度,以保证域运行的时间确定性。多个域共享一个CPU且相互之间不受到影响,时空隔离域操作系统内核采用两级调度:(1)各个域在操作系统内核使用基于时间窗口进行域的全局调度;(2)域内使用基于优先级的任务调度方法,保证域内部任务时间和空间的确定性,同时解决域间时间的一致性和确定性。
多个域共享一个CPU并发执行,需要对每个域的执行时间进行详细描述,每个域只能在规定的时间执行,不能跨越边界执行,以免对其他域的运行造成影响。在此,需要对域的执行序列进行规范:
(1)域有一个固有的执行周期,在一个周期内的最大执行时间(百分比) 可以确定,在一个周期内域可以执行多次,即一个时间调度表中可配置多个时间窗口,但总的时间窗口不能大于时间调度表中最大窗口数,并且所有时间窗口的时间长度不能大于主帧时间长度。时空隔离域操作系统定义了一个最小执行时间,一般相当于通用嵌入式实时系统的系统时钟频率。
(2)域以固定的、轮循机制为调度基础。为了激活轮循,时空隔离域操作系统以固定周期维护一个主时间框架,并通过该框架实现域的定时、反复运行。主时间框架为每一个域分配了一个或多个域窗口时间,并确定了域窗口在主时间框架中的偏移和预定运行时间,这样就可以形成一个明确的调度方法,以上由配置表决定。主框架时间是所有虚拟机时间周期的最小公倍数。
(3)在多核模式下,每个域会根据配置运行在指定的核上,在指定的核上参与对物理核的竞争。每个核可以有多个时间调度表,但内核时刻至多有一个时间表参与此核的调度,时间表依据第一个时间窗口的所设定的域为绑定核。因此保证了多核情况下的时间确定性。
综上所述,本发明提出了一种基于增量快照的时空隔离域快速恢复方法,所述方法为,根据时空隔离域操作系统的调度特点,在时空隔离域的时间调度表中预留一个用于快照域运行的时间窗口,然后根据时间调度表的调度运行快照域,并在快照域中执行其它域的域快照生成和域回卷恢复;
即由独立的快照域负责其他域的域快照生成和域回卷恢复,使其不暂停其他关键域,不影响其它关键域的运行,保证了时空隔离系统的实时性,预留了快照域的时间调度表如图1所示。
以下对域快照生成和域回卷恢复的步骤进行详细说明,要说明的是,以下域即是时空隔离域:
如图3所示,所述域快照生成的步骤包括:
S11,获取域的快照相关信息,并根据域快照信息构建快照头信息;
所述域的快照相关信息包括域控制块信息和域内存数据;所述域控制块信息包括域运行时间、域运行状态、域寄存器上下文、域地址空间映射、域使用的内核对象;所述域内存数据包括核心栈和域段数据;所述域段数据包括代码段、数据段和BBS段。
如图2a所示,所述快照头信息包括校验码、快照魔数、快照总大小、域ID、备份段总个数、备份段基本信息、核心栈、域控制块和域段数据备份;如图2b所示,所述备份段基本信息包括备份段大小、段逻辑起始地址和备份空间的段偏移。
由此,步骤S11包括如下子步骤:
S111,备份域段数据并记录备份段基本信息;
(1)拷贝域段数据(代码段、数据段和BBS段)至快照备份区;
(2)记录当前备份段大小至备份段基本信息中;
(3)记录当前备份段逻辑起始地址至备份段基本信息中;
(4)记录当前备份空间的段偏移至备份段基本信息中;
S112,备份核心栈;
S113,备份域控制块信息,即备份域运行时间、域运行状态、域寄存器上下文、域地址空间映射、域使用的内核对象;
S114,设置快照魔数、快照总大小、域ID、备份段总个数;
S115,计算校验码并存储快照头首地址;
S12,将所述快照头信息基于bsdiff二进制差分算法生成增量差分包;
S13,基于bzip2压缩算法压缩所述增量差分包;
如图4所示,所述域回卷恢复的步骤包括:
S21,基于bzip2解压算法解压被压缩的所述增量差分包;
S22,基于bspatch算法从所述增量差分包中还原快照头信息;
S23,根据还原的快照头信息恢复域运行:
S231,基于快照魔数和校验码检查快照头信息的正确性;
S232,获取备份段基本信息,并拷贝域段数据(代码段、数据段和BBS段) 至目标地址;
S233,恢复核心栈和域寄存器上下文;
S234,恢复域控制块中其他数据,即域运行时间、域运行状态、域地址空间映射、域使用的内核对象;
S235,调用域启动接口启动恢复时空隔离域运行。
上述过程中,采用了bzip2压缩/解压算法,可以减少需要保存的增量差分包,提高存储利用率。同时,增量快照的特点是可以跟踪域的状态变化,本发明实现的增量差分包,是指在快照域第一次运行时,对快照头信息采用全备份的方式进行(生成第一个快照),随后的快照域运行中,通过二进制差分算法,在上依次备份的数据(第一个快照或后续的增量差分包)上进行差分增量操作。即,基于二进制差分算法实现的增量差分包,可以进一步提高存储利用率。
再者,本发明中,每次生成的增量差分包都具有一个时间戳。即第一个快照和后续的增量差分包上都具有时间戳,利用时间戳,在域卷回恢复时可以回滚到任意一个时间戳记录的时间点。
通过上述可知,本发明的一种基于增量快照的时空隔离域快速恢复方法,根据时空隔离域操作系统的调度特点,在时空隔离域的时间调度表中预留一个用于快照域运行的时间窗口,可以在不暂停其他域的情况下实现快照并保证了实时性,同时,利用压缩解压算法,以及基于二进制算法实现的增量快照功能,能够更好地使用存储资源。
如图5所示,本发明还公开了一种实现上述的基于增量快照的时空隔离域快速恢复方法的系统,包括:快照管理模块,用于在时空隔离域的时间调度表中预留一个用于快照域运行的时间窗口,然后根据时间调度表的调度运行快照域,并在快照域中执行其它域的域快照生成和域回卷恢复;
所述快照管理模块包括:
域快照模块,用于获取域的快照相关信息,并根据域快照信息构建快照头信息;
增量模块,用于基于bsdiff二进制差分算法生成增量差分包,以及基于 bspatch算法从所述增量差分包中还原快照头信息;
数据压缩模块,用于采用压缩算法和解压算法对增量差分包进行压缩或解压;
域回卷恢复模块,用于根据还原的快照头信息恢复域运行。
所述域快照生成的步骤包括:
S11,域快照模块获取域的快照相关信息,并根据域快照信息构建快照头信息:
S111,备份域段数据并记录备份段基本信息;
(1)拷贝域段数据(代码段、数据段和BBS段)至快照备份区;
(2)记录当前备份段大小至备份段基本信息中;
(3)记录当前备份段逻辑起始地址至备份段基本信息中;
(4)记录当前备份空间的段偏移至备份段基本信息中;
S112,备份核心栈;
S113,备份域控制块信息,即备份域运行时间、域运行状态、域寄存器上下文、域地址空间映射、域使用的内核对象;
S114,设置快照魔数、快照总大小、域ID、备份段总个数;
S115,计算校验码并存储快照头首地址;
S12,增量模块将所述快照头信息基于bsdiff二进制差分算法生成增量差分包;
S13,数据压缩模块基于bzip2压缩算法压缩所述增量差分包;
所述域回卷恢复的步骤包括:
S21,数据压缩模块基于bzip2解压算法解压被压缩的所述增量差分包;
S22,增量模块基于bspatch算法从所述增量差分包中还原快照头信息;
S23,域回卷恢复模块根据还原的快照头信息恢复域运行:
S231,基于快照魔数和校验码检查快照头信息的正确性;
S232,获取备份段基本信息,并拷贝域段数据(代码段、数据段和BBS段) 至目标地址;
S233,恢复核心栈和域寄存器上下文;
S234,恢复域控制块中其他数据,即域运行时间、域运行状态、域地址空间映射、域使用的内核对象;
S235,调用域启动接口启动恢复时空隔离域运行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
- 一种基于增量快照的时空隔离域快速恢复方法和系统
- 一种基于时空隔离域加载MicroPython的方法