基於嵌入式裝置Linux的多狀態備份和快速恢復方法
2023-05-28 10:31:01 3
專利名稱:基於嵌入式裝置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日
發明者於海, 虞躍, 姚啟桂, 鄧輝, 吳鵬, 陳磊, 王瑋, 侯功, 沈文, 喻強, 黃治, 於鵬飛, 陳偉, 任傑, 張增華, 孫曉豔 申請人:中國電力科學研究院, 國家電網公司