专利名称:基于嵌入式装置Linux的多状态备份和快速恢复方法
技术领域:
本发明属于计算机技术领域,具体涉及一种基于嵌入式装置Linux的多状态备份和快速恢复方法。
背景技术:
嵌入式设备主要是由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的器件。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通信协议、数据库系统和应用软件等。嵌入式Linux作为一种主要的开源免费、功能强大的操作系统被广泛地应用于众多的嵌入式设备中。从软件角度来看,嵌入式设备具有不可修改性、配置较低、系统专业性和实时性较强等特点。因此,对于各种专用的嵌入式设备,实现通用的多状态备份和快速恢复功能对于缩短工作中断时间、适应复杂工作环境、改善用户体验,都是很有意义的。
嵌入式Linux具有源码开放、安全可靠、内核可定制等特点,是众多嵌入式设备系统平台的首选。但是由于Linux基于文件的体系结构,系统启动时间过长的问题难以根本改善,再计入各应用程序的加载时间,一般要花费几十秒。
发明内容
为克服上述缺陷,本发明提供了一种基于嵌入式装置Linux的多状态备份和快速恢复方法,大大缩短了嵌入式Linux设备从上电至期望工作状态的时间,一般可在5秒之内,而且缩短了设备工作中断时间,对于复杂环境下的嵌入式设备很有裨益,解决了系统启动时间过长的问题,具有恢复时间短、易用性好和资源占用少的特点。为实现上述目的,本发明提供一种基于嵌入式装置Linux的多状态备份和快速恢复方法,包括状态备份过程和快速恢复过程,其特征在于,所述状态备份过程包括步骤(101).保存应用环境下相关的工作状态,转化为应用信息快照和应用功能快照,压缩写入Flash中的对应配置选项区块;(102).在退出应用环境后,保存设备驱动层的工作状态,转化为驱动快照,压缩写A Flash ;(103).保存CPU的状态信息和Linux的运行环境,即形成内核快照,将内核快照压缩写入Flash ;其中,Flash包括Flash分区O、Flash分区I、Flash分区2和Flash分区3。所述快速恢复过程包括步骤(201).拷贝 Flash 中的 FastRecover BIOS 至内存中执行;(202).解压、解析Flash中的内核快照和驱动快照,初始化相应的CPU寄存器、内存和外设;(203).确定需要加载的配置选项号,解压并解析Flash中对应的应用信息快照和应用功能快照至指定内存;
(204).嵌入式装置的控制权交由Linux,获取对应的应用信息脚本、应用功能脚本,由其进行顺序地初始化。本发明提供的优选技术方案中,所述步骤101包括如下步骤(101-1).利用脚本程序检测设备的当前应用状态,获取内核模块信息、进程运行信息、磁盘挂载信息和应用配置信息,并将它们整合为应用信息脚本;(101-2).将应用信息脚本转化为应用信息快照格式;(101-3).分析主功能器件的当前寄存器表,及该器件相关接口部分的配置寄存器值,形成应用功能脚本;(101-4).将应用功能脚本转化为应用功能快照格式;(101-5).将应用信息快照和应用功能快照压缩填入Flash分区3的配置选项N块 区,N的选择根据多状态选择策略的规则确定,至此就把应用的某种状态完整保存进行N区块中。本发明提供的第二优选技术方案中,在所述步骤101-3中,主功能器件就是设备中的多状态保存对象,所述多状态保存对象包括工业交换机的交换芯片和无源光网络终端的PON芯片。本发明提供的第三优选技术方案中,所述步骤101中的使用Perl脚本语言探测应用环境下的进程运行、模块加载、磁盘挂载和应用配置获取应用信息,记录状态信息,并拷贝配置文件。本发明提供的第四优选技术方案中,所述步骤102包括如下步骤(102-1).杀掉运行的应用进程、卸载掉已挂载的盘符、并卸载掉已加载的内核模块;(102-2).保存各外设驱动模块的寄存器值及相关接口的寄存器值,形成驱动寄存器表;(102-3).将驱动寄存器表转化为驱动快照;(102-4).将驱动快照压缩,并填入Flash分区2中。本发明提供的第五优选技术方案中,所述步骤103包括如下步骤(103-1).保存当前CPU的各寄存器状态值,获取内存中Linux运行相关的数据结构转化为内存表;(103-2).将所述寄存器值和内存表统一转化为内核快照;(103-3).将内核快照压缩填入Flash分区I中。本发明提供的第六优选技术方案中,所述步骤201包括如下步骤(201-1).系统上电或者重启时,首先加载bootloader,在bootloader中选择是否进入FastRecover模式;(201-2).拷贝Flash分区O中的FastRecoer BIOS至内存并执行;其中,FastRecoer BIOS具有解压缩、恢复快照的功能。本发明提供的第七优选技术方案中,所述步骤202包括如下步骤(202-1).解压并解析Flash分区I中的内核快照,恢复相应的CPU寄存器、内存中的Linux相关数据结构;(202-2).解压并解析Flash分区2中的驱动快照,恢复外设寄存器、相关接口寄存器,并对外设进行初始化。本发明提供的第八优选技术方案中,所述步骤203包括如下步骤(203-1).根据面向应用的多状态选择策略确定需要加载的配置选项N值;(203-2).解压并解析Flash分区3中配置选项块N中的应用信息快照和应用功能快照至指定内存区域;其中,各个N值对应不同的应用状态;多状态划分根据具体应用确定,包括与具体应用策略对应的多种状态,即每种状态适应一种应用策略;区分装置的全速或低速运行的状态;和区分装置的省电模式或是正常模式的状态。本发明提供的第九优选技术方案中,所述步骤204包括如下步骤(204-1).嵌入式装置的控制权交给Linux内核主程序,并在内存指定位置获取应 用信息脚本和应用功能脚本;(204-2).按照应用信息脚本挂载磁盘、加载模块、执行进程和配置参数;(204-3).按照应用功能脚本初始化相应的主功能器件。与现有技术比,本发明提供的一种基于嵌入式装置Linux的多状态备份和快速恢复方法,可以大大缩嵌入式Linux设备从上电至期望工作状态的时间,一般可在5秒之内,缩短了设备工作中断时间,对于复杂环境下的嵌入式设备很有裨益;而且,可以事先面向多种应用状态保存多个状态配置选项,恢复时根据具体情况还原至期望状态,灵活适应多种现场使用情况;还有,对嵌入式Linux改动较小,大部分是对嵌入式Linux的模型抽象,独立编程,仅需做少部分的Linux代码补丁,便于该方法在多种专用嵌入式Linux设备上应用;再者,采用压缩格式保存各种快照映像,大大地减少Flash的资源需求,对CPU和内存也无特殊要求。
图I为基于嵌入式装置Linux的多状态备份和快速恢复方法的概括流程图。图2为方法执行的总体层次图。图3为状态备份过程的流程图。图4为快速恢复过程的流程图。
具体实施例方式如图1、2所示的一种基于嵌入式装置Linux的多状态备份和快速恢复方法,包括状态备份过程和快速恢复过程,所述状态备份过程包括步骤步骤101 :保存应用环境下相关的工作状态,转化为应用信息快照和应用功能快照,压缩写入Flash中的对应配置选项区块。步骤102 :在退出应用环境后,保存设备驱动层的工作状态,转化为驱动快照,压缩写入Flash。步骤103 :保存CPU的状态信息和Linux的运行环境,即形成内核快照,将内核快照压缩写入Flash。所述快速恢复过程包括步骤步骤201 :拷贝Flash中的FastRecover BIOS至内存中执行,由该程序来主导后续的恢复过程。步骤202 :解压、解析Flash中的内核快照和驱动快照,初始化相应的CPU寄存器、内存、外设。步骤203 :确定需要加载的配置选项号,解压、解析Flash中对应的应用信息快照和应用功能快照至指定内存。步骤204 :控制权交由Linux,获取对应的应用信息脚本、应用功能脚本,由其进行顺序地初始化。所述步骤101中的应用信息的获取是使用Perl脚本语言探测应用环境下的进程运行、模块加载、磁盘挂载、应用配置等状况,记录状态信息,拷贝配置文件。所述步骤101中的应用功能快照是针对主功能器件的状态保存,即设备多状态保存的主要对象,主功能器件的选择根据具体情况来定,例如交换机中即可选择设备中的交换芯片进行状态保存和恢复,从而实现多种交换配置状态的备份,当然也可以针对多个功 能器件的组合状态保存。具体实现是使用Perl脚本查看功能寄存器的状态,运用预先设计的规则,将其转化为相应的配置脚本,此部分内容需要根据应用进行定制设计。所述步骤102中退出应用环境才进行后续的状态保存工作,即杀掉应用进程、卸载磁盘、卸载模块后,这样后续只需要备份一个最小的Linux系统,从而简化了对设备驱动层和内核层的状态保存,同时使权利要求3中的配置选项保存完全面向应用层,便于实现多状态选择策略。所述状态备份步骤中多处使用快照功能和压缩保存功能。这些功能都用C语言开发,在Iinux环境下直接运行的,其中快照功能根据对象不同有脚本快照、寄存器快照、内存快照三种,分别用不同类型的数据结构和算法来实现。压缩保存功能用即是常用的GZIP格式完成的。所述步骤201中FastRecover BIOS是用C语言开发的,是一个独立运行的程序,在Linux启动之前承担了恢复快照的工作,具有解压、解析快照等功能,是权利要求5所述功能的逆操作。其中,各个N值对应不同的应用状态;多状态划分根据具体应用确定,包括与具体应用策略对应的多种状态,即每种状态适应一种应用策略;区分装置的全速或低速运行的状态;和区分装置的省电模式或是正常模式的状态。通过下面的实施例对状态备份过程作进一步解释。如图3所示,所述状态备份过程包括步骤如下I.利用脚本程序检测设备的当前应用状态,获取内核模块信息、进程运行信息、磁盘挂载信息、应用配置信息,并将它们整合为应用信息脚本。2.将应用信息脚本转化为应用信息快照格式。3.分析主功能器件的当前寄存器表,及其相关接口的寄存器值,形成应用功能脚本。此处的主功能器件就是设备中的多状态保存的主要对象。4.将应用功能脚本转化为应用功能快照格式。5.将应用信息快照和应用功能快照压缩填入Flash分区3的配置选项N块区,N的选择根据多状态选择策略的规则确定,至此就把应用的某种状态完整保存进行N区块中。6.杀掉运行的应用进程、卸载掉已挂载的盘符、卸载掉已加载的内核模块。
7.保存此状态下各外设驱动模块的寄存器值及相关接口的I寄存器值,形成驱动寄存器表。8.将驱动寄存器表转化为驱动快照。9.将驱动快照压缩,并填入Flash分区2中。10.保存当前CPU的各寄存器状态值,获取内存中Linux运行相关的数据结构转化为内存表。11.将上述寄存器值和内存表统一转化为内核快照。12.将内核快照压缩填入Flash分区I中。13.至此,状态备份过程完成,可以重启或者关机。
通过下面的实施例对快速恢复过程作进一步解释。如图4所示,所述快速恢复过程包括步骤I.系统上电或者重启时,首先加载bootloader,在bootloader中选择是否进入FastRecover 模式。2.拷贝Flash分区O中的FastRecoer BIOS至内存,在内存中执行FastRecoerBI0S,该程序具有解压缩、恢复快照等功能。3.解压、解析Flash分区I中的内核快照恢复相应的CPU寄存器、内存中的Linux相关数据结构。4.解压、解析Flash分区2中的驱动快照恢复外设寄存器、相关接口寄存器,以及进行一些必要外设初始化。5.根据状态选择策略确定需要加载的配置选项N值。6.解压、解析Flash分区3中配置选项块N中的应用信息快照和应用功能快照至指定内存区域。7.控制权交给Linux内核主程序Main,并在内存指定位置获取应用信息脚本、应用功能脚本8.按照应用信息脚本挂载磁盘、加载模块、执行进程、配置参数。9.按照应用功能脚本初始化相应的主功能器件至指定工作状态。10.此时设备即完全恢复至期望的工作状态。需要声明的是,本发明内容及具体实施方式
意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理启发下,可作各种修改、等同替换、或改进。但这些变更或修改均在申请待批的保护范围内。
权利要求
1.一种基于嵌入式装置Linux的多状态备份和快速恢复方法,包括状态备份过程和快速恢复过程,其特征在于,所述状态备份过程包括步骤 (101).保存应用环境下相关的工作状态,转化为应用信息快照和应用功能快照,压缩写入Flash中的对应配置选项区块; (102).在退出应用环境后,保存设备驱动层的工作状态,转化为驱动快照,压缩写入Flash ; (103).保存CPU的状态信息和Linux的运行环境,即形成内核快照,将内核快照压缩写A Flash ; 其中,Flash包括Flash分区O、Flash分区I、Flash分区2和Flash分区3。
所述快速恢复过程包括步骤 (201).拷贝Flash中的FastRecoverBIOS至内存中执行; (202).解压、解析Flash中的内核快照和驱动快照,初始化相应的CPU寄存器、内存和外设; (203).确定需要加载的配置选项号,解压并解析Flash中对应的应用信息快照和应用功能快照至指定内存; (204).嵌入式装置的控制权交由Linux,获取对应的应用信息脚本、应用功能脚本,由其进行顺序地初始化。
2.根据权利要求I所述的方法,其特征在于,所述步骤101包括如下步骤 (101-1).利用脚本程序检测设备的当前应用状态,获取内核模块信息、进程运行信息、磁盘挂载信息和应用配置信息,并将它们整合为应用信息脚本; (101-2).将应用信息脚本转化为应用信息快照格式; (101-3).分析主功能器件的当前寄存器表,及该器件相关接口部分的配置寄存器值,形成应用功能脚本; (101-4).将应用功能脚本转化为应用功能快照格式; (101-5).将应用信息快照和应用功能快照压缩填入Flash分区3的配置选项N块区,N的选择根据多状态选择策略的规则确定,至此就把应用的某种状态完整保存进行N区块中。
3.根据权利要求2所述的方法,其特征在于,在所述步骤101-3中,主功能器件就是设备中的多状态保存对象,所述多状态保存对象包括工业交换机的交换芯片和无源光网络终端的PON芯片。
4.根据权利要求1-3所述的方法,其特征在于,所述步骤101中的使用Perl脚本语言探测应用环境下的进程运行、模块加载、磁盘挂载和应用配置获取应用信息,记录状态信息,并拷贝配置文件。
5.根据权利要求I所述的方法,其特征在于,所述步骤102包括如下步骤 (102-1).杀掉运行的应用进程、卸载掉已挂载的盘符、并卸载掉已加载的内核模块; (102-2).保存各外设驱动模块的寄存器值及相关接口的寄存器值,形成驱动寄存器表; (102-3).将驱动寄存器表转化为驱动快照; (102-4).将驱动快照压缩,并填入Flash分区2中。
6.根据权利要求I所述的方法,其特征在于,所述步骤103包括如下步骤 (103-1).保存当前CPU的各寄存器状态值,获取内存中Linux运行相关的数据结构转化为内存表; (103-2).将所述寄存器值和内存表统一转化为内核快照; (103-3).将内核快照压缩填入Flash分区I中。
7.根据权利要求I所述的方法,其特征在于,所述步骤201包括如下步骤 (201-1).系统上电或者重启时,首先加载bootloader,在bootloader中选择是否进入FastRecover 模式; (201-2).拷贝Flash分区O中的FastRecoer BIOS至内存并执行; 其中,FastRecoer BIOS具有解压缩、恢复快照的功能。
8.根据权利要求I所述的方法,其特征在于,所述步骤202包括如下步骤 (202-1).解压并解析Flash分区I中的内核快照,恢复相应的CPU寄存器、内存中的Linux相关数据结构; (202-2).解压并解析Flash分区2中的驱动快照,恢复外设寄存器、相关接口寄存器,并对外设进行初始化。
9.根据权利要求I所述的方法,其特征在于,所述步骤203包括如下步骤 (203-1).根据面向应用的多状态选择策略确定需要加载的配置选项N值; (203-2).解压并解析Flash分区3中配置选项块N中的应用信息快照和应用功能快照至指定内存区域; 其中,各个N值对应不同的应用状态;多状态划分根据具体应用确定,包括与具体应用策略对应的多种状态,即每种状态适应一种应用策略;区分装置的全速或低速运行的状态;和区分装置的省电模式或是正常模式的状态。
10.根据权利要求I所述的方法,其特征在于,所述步骤204包括如下步骤 (204-1).嵌入式装置的控制权交给Linux内核主程序,并在内存指定位置获取应用信息脚本和应用功能脚本; (204-2).按照应用信息脚本挂载磁盘、加载模块、执行进程和配置参数; (204-3).按照应用功能脚本初始化相应的主功能器件。
全文摘要
本发明提供了一种基于嵌入式装置Linux的多状态备份和快速恢复方法,可以大大缩嵌入式Linux设备从上电至期望工作状态的时间,一般可在5秒之内,缩短了设备工作中断时间,对于复杂环境下的嵌入式设备很有裨益;而且,可以事先面向多种应用状态保存多个状态配置选项,恢复时根据具体情况还原至期望状态,灵活适应多种现场使用情况;还有,对嵌入式Linux改动较小,大部分是对嵌入式Linux的模型抽象,独立编程,仅需做少部分的Linux代码补丁,便于该方法在多种专用嵌入式Linux设备上应用;再者,采用压缩格式保存各种快照映像,大大地减少Flash的资源需求,对CPU和内存也无特殊要求。
文档编号G06F11/14GK102831034SQ20121028843
公开日2012年12月19日 申请日期2012年8月14日 优先权日2012年8月14日
发明者于海, 虞跃, 姚启桂, 邓辉, 吴鹏, 陈磊, 王玮, 侯功, 沈文, 喻强, 黄治, 于鹏飞, 陈伟, 任杰, 张增华, 孙晓艳 申请人:中国电力科学研究院, 国家电网公司