專利名稱:閃存文件系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種閃存文件系統(tǒng)及方法,特別是一種可平衡閃存存儲(chǔ)單元損耗的閃存文件系統(tǒng)及方法。
背景技術(shù):
目前的個(gè)人便攜式電子產(chǎn)品主要采用兩種方式來儲(chǔ)存用戶數(shù)據(jù),一種是用隨機(jī)儲(chǔ)存器(Random Access Memory,RAM)存儲(chǔ),另外一種就是使用閃存(Flash Memory)來儲(chǔ)存。使用隨機(jī)儲(chǔ)存器存儲(chǔ)數(shù)據(jù)的優(yōu)點(diǎn)在于其價(jià)格便宜,使用方便且讀取速度快。但是,隨機(jī)儲(chǔ)存器的最大不便之處在于它只能在保持供電的狀態(tài)下才能保存數(shù)據(jù),否則數(shù)據(jù)將會(huì)丟失,由于再好的系統(tǒng)也無法保證供電系統(tǒng)永遠(yuǎn)正常,因此,在電池沒電的時(shí)候,隨機(jī)儲(chǔ)存器中的數(shù)據(jù)將全部丟失,無法保證用戶數(shù)據(jù)的安全。
閃存是最常見的一種非揮發(fā)性內(nèi)存(Non-Volatile Memory,NVM),其組件集成度高,在使用閃存保存數(shù)據(jù)時(shí),可避免系統(tǒng)在電池沒電的情況下已存儲(chǔ)的用戶數(shù)據(jù)丟失。但是,由于閃存本身隨機(jī)讀、按扇區(qū)寫和按塊刪除的特點(diǎn),在突然掉電的瞬間,如果系統(tǒng)正在執(zhí)行閃存塊的擦除操作,則原來塊上的內(nèi)容也將全部丟失,如果系統(tǒng)是采用FAT的文件系統(tǒng),在掉電的瞬間系統(tǒng)恰好正在更新文件分配表或ROOT表,則閃存上的數(shù)據(jù)可能全部丟失。
如中國專利申請第01119887.7號(hào),其將閃存中的每一個(gè)物理塊設(shè)置為一個(gè)管理單元,每個(gè)管理單元設(shè)有文件塊首控信息區(qū)、數(shù)據(jù)區(qū)和文件塊狀態(tài)信息區(qū),每一個(gè)文件由一個(gè)或一個(gè)以上的管理單元組成。由于其存儲(chǔ)文件的方法中沒有對閃存存儲(chǔ)單元的損耗平衡解決方案,可能會(huì)導(dǎo)致閃存的局部壞塊過多而影響其使用壽命。
因此,如何提供一種存儲(chǔ)文件安全,且使用壽命長的閃存文件系統(tǒng)及其管理方法,即為本發(fā)明所要解決的課題。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種能夠平衡閃存存儲(chǔ)單元的損耗,且提供閃存文件掉電保護(hù)的閃存文件系統(tǒng)及方法。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明提供一種閃存文件系統(tǒng),其文件構(gòu)成為一文件節(jié)點(diǎn)列表,上述文件節(jié)點(diǎn)列表中的每一節(jié)點(diǎn)都設(shè)有節(jié)點(diǎn)頭信息區(qū)、數(shù)據(jù)區(qū)和節(jié)點(diǎn)狀態(tài)信息區(qū)。其中上述節(jié)點(diǎn)頭信息區(qū)用于保存節(jié)點(diǎn)頭信息,上述節(jié)點(diǎn)頭信息至少包括有節(jié)點(diǎn)類型、節(jié)點(diǎn)長度及一個(gè)節(jié)點(diǎn)頭循環(huán)冗余校驗(yàn)信息,上述數(shù)據(jù)區(qū)用于保存文件數(shù)據(jù),上述節(jié)點(diǎn)狀態(tài)信息區(qū)用于保存節(jié)點(diǎn)狀態(tài)信息,上述節(jié)點(diǎn)狀態(tài)信息至少包括有節(jié)點(diǎn)版本次數(shù)、損壞標(biāo)志、可用標(biāo)志、垃圾收集標(biāo)志、節(jié)點(diǎn)鏈接信息和備用區(qū)信息,其中上述節(jié)點(diǎn)鏈接信息用來保證上述等文件節(jié)點(diǎn)邏輯上連結(jié)的正確性,而系統(tǒng)每對一文件節(jié)點(diǎn)進(jìn)行一次寫入或擦除操作,上述節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)就會(huì)被加一,且系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始向閃存寫入數(shù)據(jù)。
本發(fā)明另提供一種閃存文件系統(tǒng)管理方法,系統(tǒng)在重組文件時(shí),首先掃描整個(gè)閃存,找到需要修改的文件節(jié)點(diǎn)所在的區(qū)域,然后計(jì)算需要修改處的文件節(jié)點(diǎn)位置偏移量,而后利用上述位置偏移量來截?cái)辔募偻ㄟ^系統(tǒng)指令在上述處進(jìn)行修改或刪除文件數(shù)據(jù)。所有對文件的重組只是邏輯上截?cái)辔募鴮ξ募M(jìn)行修改或刪除,使得對文件修改的邏輯上的位置是對的,實(shí)際上新數(shù)據(jù)在寫入前,系統(tǒng)會(huì)首先掃描和編排那些離散的空白文件節(jié)點(diǎn),然后將新數(shù)據(jù)寫入到那些版本次數(shù)較小的空白文件節(jié)點(diǎn)上,存儲(chǔ)舊文件數(shù)據(jù)的文件節(jié)點(diǎn)會(huì)被標(biāo)上垃圾收集標(biāo)志信息,一段適當(dāng)時(shí)間之后這些文件節(jié)點(diǎn)上的舊數(shù)據(jù)將會(huì)被系統(tǒng)刪除,所有經(jīng)寫入或擦除過的文件節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)加一。因此,當(dāng)系統(tǒng)正在往閃存芯片中寫入數(shù)據(jù)時(shí)掉電,閃存文件中的新數(shù)據(jù)和舊數(shù)據(jù)將都不會(huì)丟失,這樣就保證了閃存中文件的安全性。由于系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始寫入數(shù)據(jù),故可以保證每一文件節(jié)點(diǎn)的寫入或擦除操作次數(shù)基本相當(dāng),從而延長了整個(gè)閃存的使用壽命。
由于采用了上述技術(shù)方案,本發(fā)明閃存文件系統(tǒng)具有存儲(chǔ)文件安全,且使用壽命長的功效。
下面參照附圖,結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步描述。
圖1是本發(fā)明閃存文件系統(tǒng)的文件結(jié)構(gòu)設(shè)置示意圖。
圖2是第一圖中節(jié)點(diǎn)頭信息的結(jié)構(gòu)設(shè)置示意圖。
圖3是第一圖中節(jié)點(diǎn)狀態(tài)信息的結(jié)構(gòu)設(shè)置示意圖。
圖4是本發(fā)明閃存文件系統(tǒng)及方法的文件重組流程圖。
圖5是本發(fā)明閃存文件系統(tǒng)及方法的文件重組過程中向閃存寫入新數(shù)據(jù)的流程圖。
具體實(shí)施方式請參閱圖1至圖3,其為本發(fā)明閃存文件系統(tǒng)的文件結(jié)構(gòu)設(shè)置與文件節(jié)點(diǎn)設(shè)置示意圖。上述閃存文件系統(tǒng)中的文件構(gòu)成為一文件節(jié)點(diǎn)列表,其中,每一個(gè)節(jié)點(diǎn)都設(shè)有節(jié)點(diǎn)頭信息區(qū)10、數(shù)據(jù)區(qū)20和節(jié)點(diǎn)狀態(tài)信息區(qū)30。上述節(jié)點(diǎn)頭信息區(qū)10用于保存節(jié)點(diǎn)頭信息,上述節(jié)點(diǎn)頭信息至少包括有節(jié)點(diǎn)類型11、節(jié)點(diǎn)長度12及一個(gè)節(jié)點(diǎn)頭循環(huán)冗余校驗(yàn)信息13,數(shù)據(jù)區(qū)20用于保存文件數(shù)據(jù),節(jié)點(diǎn)狀態(tài)信息區(qū)30用于保存節(jié)點(diǎn)狀態(tài)信息,上述節(jié)點(diǎn)狀態(tài)信息至少包括有節(jié)點(diǎn)版本次數(shù)31、損壞標(biāo)志32、可用標(biāo)志33、垃圾收集標(biāo)志34、節(jié)點(diǎn)鏈接信息35和備用區(qū)信息36。
上述閃存文件系統(tǒng)中的每一文件都是由包含上述特征的文件節(jié)點(diǎn)的列表構(gòu)成,其由上述文件節(jié)點(diǎn)鏈接信息35來保證這些文件節(jié)點(diǎn)邏輯上連結(jié)的正確性,所有的文件節(jié)點(diǎn)還包括一個(gè)節(jié)點(diǎn)版本次數(shù)信息,每對上述文件節(jié)點(diǎn)進(jìn)行一次寫入或擦除,系統(tǒng)就會(huì)將其版本次數(shù)加一。請參閱圖4,為本發(fā)明閃存文件系統(tǒng)及方法的文件重組流程圖。重組文件時(shí),系統(tǒng)首先掃描整個(gè)閃存(步驟110),找到需要修改的文件節(jié)點(diǎn)所在的區(qū)域(步驟120),然后計(jì)算需要修改處的文件節(jié)點(diǎn)位置偏移量(步驟130),而后利用上述位置偏移量來截?cái)辔募?步驟140),再通過系統(tǒng)指令在上述處進(jìn)行修改或刪除文件數(shù)據(jù)(步驟150)。
所有對文件的重組只是邏輯上截?cái)辔募鴮ξ募M(jìn)行修改或刪除,使得對文件修改的邏輯上的位置是對的,請參閱圖5,為本發(fā)明閃存文件系統(tǒng)及方法的文件重組過程中向閃存寫入新數(shù)據(jù)的流程圖。實(shí)際上新數(shù)據(jù)在寫入前,系統(tǒng)會(huì)首先掃描和編排那些離散的空白文件節(jié)點(diǎn)(步驟210),然后將新數(shù)據(jù)寫入到那些版本次數(shù)較小的空白文件節(jié)點(diǎn)上(步驟220),存儲(chǔ)舊文件數(shù)據(jù)的文件節(jié)點(diǎn)會(huì)被標(biāo)上垃圾收集標(biāo)志信息(步驟230),一段適當(dāng)時(shí)間之后這些文件節(jié)點(diǎn)上的舊數(shù)據(jù)將會(huì)被系統(tǒng)刪除(步驟240),所有經(jīng)寫入或擦除過的文件節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)加一(步驟250)。因此,當(dāng)系統(tǒng)正在往閃存芯片中寫入數(shù)據(jù)時(shí)掉電,閃存文件中的新數(shù)據(jù)和舊數(shù)據(jù)將都不會(huì)丟失,這樣就保證了閃存中文件的安全性。由于系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始寫入數(shù)據(jù),故可以保證每一文件節(jié)點(diǎn)的寫入或擦除操作次數(shù)基本相當(dāng),從而延長了整個(gè)閃存的使用壽命。
權(quán)利要求
1.一種閃存文件系統(tǒng),其特征在于上述閃存文件系統(tǒng)的文件構(gòu)成為一文件節(jié)點(diǎn)列表,上述文件節(jié)點(diǎn)列表中的每一節(jié)點(diǎn)都設(shè)有節(jié)點(diǎn)頭信息區(qū)、數(shù)據(jù)區(qū)和節(jié)點(diǎn)狀態(tài)信息區(qū)。
2.如權(quán)利要求1所述的閃存文件系統(tǒng),其特征在于上述節(jié)點(diǎn)頭信息區(qū)用于保存節(jié)點(diǎn)頭信息,上述節(jié)點(diǎn)頭信息至少包括有節(jié)點(diǎn)類型、節(jié)點(diǎn)長度及一個(gè)節(jié)點(diǎn)頭循環(huán)冗余校驗(yàn)信息。
3.如權(quán)利要求1所述的閃存文件系統(tǒng),其特征在于上述數(shù)據(jù)區(qū)用于保存文件數(shù)據(jù)。
4.如權(quán)利要求1所述的閃存文件系統(tǒng),其特征在于上述其中上述節(jié)點(diǎn)狀態(tài)信息區(qū)用于保存節(jié)點(diǎn)狀態(tài)信息,上述節(jié)點(diǎn)狀態(tài)信息至少包括有節(jié)點(diǎn)版本次數(shù)、損壞標(biāo)志、可用標(biāo)志、垃圾收集標(biāo)志、節(jié)點(diǎn)鏈接信息和備用區(qū)信息。
5.如權(quán)利要求4所述的閃存文件系統(tǒng),其特征在于上述節(jié)點(diǎn)鏈接信息用來保證這些文件節(jié)點(diǎn)邏輯上連結(jié)的正確性。
6.如權(quán)利要求1或4所述的閃存文件系統(tǒng),其特征在于上述閃存文件系統(tǒng)每對一文件節(jié)點(diǎn)進(jìn)行一次寫入或擦除操作,上述節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)就會(huì)加一。
7.如權(quán)利要求1或4所述的閃存文件系統(tǒng),其特征在于上述閃存文件系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始向閃存寫入數(shù)據(jù)。
8.一種閃存文件系統(tǒng)管理方法,其特征在于其包括有以下步驟(a)掃描和編排離散的空白文件節(jié)點(diǎn);(b)將新數(shù)據(jù)寫入到版本次數(shù)較小的空白文件節(jié)點(diǎn)上;(c)將存儲(chǔ)舊文件數(shù)據(jù)的文件節(jié)點(diǎn)標(biāo)上垃圾收集標(biāo)志信息;(d)一段適當(dāng)時(shí)間之后將這些存儲(chǔ)舊文件數(shù)據(jù)的文件節(jié)點(diǎn)上的舊數(shù)據(jù)刪除。
9.如權(quán)利要求8所述的閃存文件系統(tǒng)管理方法,其特征在于上述閃存文件系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始向閃存寫入數(shù)據(jù)。
10.如權(quán)利要求8所述的閃存文件系統(tǒng)管理方法,其特征在于上述閃存文件系統(tǒng)將經(jīng)寫入或擦除過的文件節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)加一。
11.如權(quán)利要求8所述的閃存文件系統(tǒng)管理方法,其特征在于步驟(a)進(jìn)一步包括以下步驟(a1)掃描整個(gè)閃存;(a2)找到需要修改處的文件節(jié)點(diǎn)區(qū)域;(a3)計(jì)算需要修改的文件節(jié)點(diǎn)位置偏移量;(a4)確定位置截?cái)辔募?a5)利用文件節(jié)點(diǎn)的節(jié)點(diǎn)版本次數(shù)信息來編排離散的空白文件節(jié)點(diǎn)。
全文摘要
一種閃存文件系統(tǒng)及方法,上述閃存文件系統(tǒng)的文件構(gòu)成為一文件節(jié)點(diǎn)列表,其由一個(gè)文件節(jié)點(diǎn)鏈接信息來保證這些文件節(jié)點(diǎn)邏輯上連結(jié)的正確性,且所有的文件節(jié)點(diǎn)還包括一個(gè)節(jié)點(diǎn)版本次數(shù)信息,每對上述文件節(jié)點(diǎn)進(jìn)行一次寫入或擦除,系統(tǒng)就會(huì)將其版本次數(shù)加一,系統(tǒng)在寫入新數(shù)據(jù)前,首先會(huì)掃描和編排那些離散的空白文件節(jié)點(diǎn),然后將新數(shù)據(jù)寫入到那些版本次數(shù)較小的空白文件節(jié)點(diǎn)上,存儲(chǔ)舊文件數(shù)據(jù)的文件節(jié)點(diǎn)會(huì)被標(biāo)上垃圾收集標(biāo)志信息,一段適當(dāng)時(shí)間之后這些文件節(jié)點(diǎn)上的舊數(shù)據(jù)將會(huì)被系統(tǒng)刪除。由于系統(tǒng)都是從版本次數(shù)較小的文件節(jié)點(diǎn)開始寫入數(shù)據(jù),故可以保證每一文件節(jié)點(diǎn)的寫入或擦除操作次數(shù)基本相當(dāng),從而延長了整個(gè)閃存的使用壽命。
文檔編號(hào)G06F12/16GK1567261SQ03126878
公開日2005年1月19日 申請日期2003年6月13日 優(yōu)先權(quán)日2003年6月13日
發(fā)明者婁長劍, 何唐 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司