專利名稱:一種嵌入式Linux系統中的斷電時恢復閃存數據的方法
技術領域:
本發明涉及一種閃存恢復數據設置方法,特別是一種嵌入式 Linux系統中的斷電時恢復閃存數據的方法。
背景技術:
現有技術中運行在閃存上的文件系統, 一般采用在文件系統和閃 存之間提供一個閃存轉換層,其功能就是將底層的閃存模擬成一個具 有512字節扇區的標準塊設備,將模擬的塊設備一對一的映射到閃存 上,對于文件系統來說,就像工作在一個普通的塊設備.上一樣。JFFS2 文件系統通過日志結構存儲方式和垃圾收集機制,能夠提高閃存的擦 寫效率和減少磨損,有一定的容錯處理,常作為轉換層應用于嵌入式 Linux系統,在嵌入式Linux系統的部分方案中,閃存文件系統通常 只有一個分區,即根文件系統,且此文件系統加載為可讀寫方式,如 果在對該擦寫塊執行擦除操作,并將緩存中的數據寫回該擦寫塊的同 時發生了突然掉電,那么整個擦寫塊中的數據就全部丟失或導致文件 系統損壞,或者文件系統檢測到閃存中重要的配置信息被修改后,導 致系統不能夠正常啟動的缺點,給使用造成很大的不便。
發明內容
為了解決現有技術的不足,本發明提出一種嵌入式Linux系統中 的斷電時恢復閃存數據的方法,該方法是在計算機,嵌入式Linux系 統和閃存設備,以及在系統文件和閃存設備之間充當轉換層的JFFS2文件系統共同實現的,在嵌入式Linux系統的部分方案中,閃存設備 文件系統只有一個分區,即根文件系統,其加載方式為可讀寫,所述 的保護斷電時閃存數據的方法包括以下步驟
① 將閃存中根文件系統定義分為固定區、修改區和備份區,其 中固定區中規定存儲不會被修改的部分包括程序文件和庫函數等與 出廠時的配置文件信息一致數據內容,修改區規定存儲可能被修改的 部分包括配置文件和系統運行時產生的數據,備份區存儲對修改區進 行讀寫操作之前的修改區數據的備份內容,
② 通過系統文件JFFS2對固定區、修改區和備份區賦予不同的 加載方式,固定區賦予為只讀加載方式,備份區賦予為復制加載方式, 修改區為復制加載方式,
③ 將根文件系統中配置信息分配到以只讀方式加載的固定區中 的一個目錄下;系統斷電時該區下的數據信息不被擦除,根文件系統 中系統運行時產生的臨時文件被存儲在內存中,系統斷電時不需要保 存這些臨時文件,
當文件系統由于意外斷電造成數據丟失時,Limix系統調用 備份分區中的文件系統對其進行恢復默認配置,
⑤進行恢復默認配置后,Linux系統判斷當前文件系統是否被 損壞,針對系統設置的重要參數的系統文件進行檢查,包括檢查當前 文件系統有沒有被加載、系統初始化程序的配置文件是否存在、以及 系統在運行時經常被修改的文件是否存在的文件檢查,同時對JFFS2 文件系統的節點頭部CRC校驗值進行判斷,◎對步驟⑤判斷結果進行分析,若判斷該閃存分區的修改區有 數據丟失,可認為整個文件系統沒有被損壞,繼續進行加載文件系統, 若不能通過認為是壞區,不再加載文件系統。
所述的將對文件系統的修改區內容也保存到備份分區里,如果系 統突然調電,導致當前文件系統被損壞,就可以使用備份分區里的文 件系統恢復到上一次所作的配置。
本發明的有益效果是解決了閃存存儲讀寫效率低的缺點,實現 斷電時對閃存進行數據恢復,避免閃存中的數據丟失和閃存設備由于 配置信息的修改或讀寫塊的損壞造成的系統無法使用的缺點。
附圖1為現有技術閃存文件結構配置圖 附圖2為本發明的閃存文件結構配制圖 附圖3為現有技術中閃存文件系統加載文件操作流程圖
附圖4為本發明的閃存文件系統加載文件操作流程圖
具體實施例方式
參看附圖2,本發明旨在為可能被修改的配置信息創建與出廠配 置信息內容相一致的備份,在檢測到經過修改的配置信息不能使系統 正常啟動時,使用備份的配置信息,恢復出廠默認配置,使系統能夠 正常啟動。主要采取了以下兩步措施發明提出一種嵌入式Limix系 統中的斷電時恢復閃存數據的方法,該方法是在計算機,嵌入式Linux 系統和閃存設備,以及在系統文件和閃存設備之間充當轉換層的 JFFS2文件系統共同實現的,在嵌入式Linux系統的部分方案中,閃存設備文件系統只有一個分區,即根文件系統,其加載方式為可讀寫, 所述的保護斷電時閃存數據的方法包括以下步驟
① 將根文件系統中不會被修改的部分包括程序文件和庫函數等, 可能被修改的部分包括配置文件和系統運行時產生的臨時文件,劃分 為各自獨立的不同分區,同時對分區賦予不同的加載方式將閃存中 根文件系統定義分為固定區、修改區和備份區,其中固定區中規定存 儲不會被修改的部分包括程序文件和庫函數等以及出廠時的配置文 件信息一致數據內容,修改區規定存儲可能被修改的部分包括配置文 件和系統運行時產生的數據,備份區存儲與出廠時的配置文件信息一 致的內容,系統在運行的時侯不需要加載備份分區的內容,該配置信 息都存放在一個目錄下,將此目錄單獨劃分為一個分區并以讀寫方式 加載,備份區同時存儲那些對修改區進行讀寫操作之前的修改區數據 的備份內容,當前文件系統由于意外斷電造成損傷時,系統可以使用 備份區內容將系統文件恢復到讀寫前的內容狀態,或者根據文件損壞 程度使用原始備份分區中的將文件系恢復到出廠默認配置,此時根文 件系統中系統運行時產生的臨時文件就放在內存中,系統斷電時不需 要保存這些臨時文件。
② 通過系統文件對固定區、修改區和備份區賦予不同的加載方 式,固定區賦予為只讀加載方式,備份區賦予為復制加載方式,修改 區為復制加載方式,這樣所有對固定區的讀寫操作將被拒絕,保證了 文件系統在斷電后的備份操作的實現,
③ 將根文件系統中配置信息分配到以只讀方式加載的備份區中的一個目錄下;系統斷電時該區下的數據信息不被擦除,根文件系統 中系統運行時產生的臨時文件被存儲在內存中,系統斷電時不需要保 存這些臨時文件,
④ 當文件系統由于意外斷電造成數據丟失時,Linux系統調用 備份分區中的文件系統根據文件的損壞程度選擇對其進行恢復上一 次操作時的內容或者選擇恢復默認配置,使閃存設備的文件系統正常 運行,
⑤ 進行恢復默認配置后,Linux系統判斷當前文件系統是否被 損壞,針對系統設置的重要參數的系統文件進行檢查,包括檢查當前 文件系統有沒有被加載、系統初始化程序的配置文件是否存在、以及 系統在運行時經常被修改的文件是否存在的文件檢查,同時對JFFS2 文件系統的節點頭部CRC校驗值進行判斷,
⑥ 對步驟⑤判斷結果進行分析,若判斷閃存修改區有數據丟失, 可認為整個文件系統沒有被損壞,繼續進行加載文件,若不能通過認 為是壞區,不再加載文件。其中判斷當前文件系統是否被損壞,并不 是對當前文件系統中所有的配置文件都進行校驗,而是只針對幾個比 較重要的系統文件進行檢査,比如檢査當前文件系統有沒有被加載、 系統初始化程序的配置文件是否存在、以及系統在運行時經常被修改 的文件是否存在等等,再加上對jf f s2整個文件系統的CRC校驗值的 判斷。如果這些檢查都能通過,就可以認為整個文件系統沒有被損壞。 參看附圖4,若修改區系統文件未被被損壞,則繼續對閃存進行加載 文件,多修改區內容被損壞,可調用備份區內容對其進行恢復設置,使閃存恢復出上一次讀寫操作時的數據配置信息。
本發明的優點是,解決了閃存存儲讀寫效率低的缺點,實現斷電 時對閃存進行數據恢復,避免閃存中的數據丟失。對出現錯誤或損壞 的擦寫區,不再對其加載文件系統,避免了該擦寫區塊變成壞塊,使 閃存無法使用的缺點。
本發明采用的方法是一種用空間去換取安全性的方案,如果當前 文件系統被損壞,就會恢復到出廠的配置。作為這種方案的進一步延 伸,將對文件系統的修改內容也保存到備份分區里,如果系統突然調 電,導致當前文件系統被損壞,就可以使用備份分區里的文件系統恢 復到上一次所作的配置,這是一種用空間和時間換取安全性的方法, 實現雙備份。
9
權利要求
1、一種嵌入式Linux系統中的斷電時恢復閃存數據的方法,所述的方法是在計算機,嵌入式Linux系統和閃存設備,以及在系統文件和閃存設備之間充當轉換層的JFFS2文件系統共同實現的,在嵌入式Linux系統的部分方案中,閃存設備文件系統只有一個分區,即根文件系統,其加載方式為可讀寫,其特征在于所述的保護斷電時閃存數據的方法包括以下步驟①將閃存中根文件系統定義分為固定區、修改區和備份區,其中固定區中規定存儲不會被修改的部分包括程序文件和庫函數等與出廠時的配置文件信息一致數據內容,修改區規定存儲可能被修改的部分包括配置文件和系統運行時產生的數據,備份區存儲對修改區進行讀寫操作之前的修改區數據的備份內容,②通過系統文件JFFS2對固定區、修改區和備份區賦予不同的加載方式,固定區賦予為只讀加載方式,備份區賦予為復制加載方式,修改區為復制加載方式,③將根文件系統中配置信息分配到以只讀方式加載的固定區中的一個目錄下;系統斷電時該區下的數據信息不被擦除,根文件系統中系統運行時產生的臨時文件被存儲在內存中,系統斷電時不需要保存這些臨時文件,④當文件系統由于意外斷電造成數據丟失時,Linux系統調用備份分區中的文件系統對其進行恢復默認配置,⑤進行恢復默認配置后,Linux系統判斷當前文件系統是否被損壞,針對系統設置的重要參數的系統文件進行檢查,包括檢查當前文件系統有沒有被加載、系統初始化程序的配置文件是否存在、以及系統在運行時經常被修改的文件是否存在的文件檢查,同時對JFFS2文件系統的節點頭部CRC校驗值進行判斷,⑥對步驟⑤判斷結果進行分析,若判斷該閃存分區的修改區有數據丟失,可認為整個文件系統沒有被損壞,繼續進行加載文件系統,若不能通過認為是壞區,不再加載文件系統。
2、根據權利要求1所述的一種嵌入式Linux系統中的斷電時恢 復閃存數據的方法,其特征在于;所述的將對文件系統的修改區內容 也保存到備份分區里,如果系統突然調電,導致當前文件系統被損壞, 就可以使用備份分區里的文件系統恢復到上一次所作的配置。
全文摘要
一種嵌入式Linux系統中的斷電時恢復閃存數據的方法,解決了閃存讀寫數據時突然掉電,數據就丟失或文件系統損壞的缺點,采用的技術方案是將閃存中根文件系統定義分為固定區、修改區和備份區,通過系統文件JFFS2對分區賦予不同的加載方式,將根文件系統中配置信息分配到固定區中的目錄下,根文件系統中系統運行時產生的臨時文件被存儲在內存中,當文件系統由于意外斷電造成數據丟失時,Linux系統調用備份分區中的文件系統對其進行恢復默認配置,并判斷當前文件系統是否被損壞,針對系統設置的重要參數的系統文件進行檢查,決定是否對文件系統繼續進行加載文件。本發明的有益效果是解決了實現斷電時對閃存進行數據恢復,避免閃存中的數據丟失。
文檔編號G06F11/14GK101477482SQ20081021684
公開日2009年7月8日 申請日期2008年10月14日 優先權日2008年10月14日
發明者滔 何, 呂文正, 波 周, 周華海, 馨 張, 朱海斌, 李劍新, 江惠秋, 王喜祝, 胡祖敏, 鄧永堅, 黃洪波 申請人:深圳市共進電子有限公司