專利名稱:一種文件索引的存儲方法及文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于存儲技術(shù)領(lǐng)域,尤其涉及一種文件索引的存儲方法及文件系統(tǒng)。
背景技術(shù):
NAND FLASH作為一種廣泛應(yīng)用的存儲體,它的一大弱點就是在使用中動態(tài)產(chǎn)生壞塊。因此,避免壞塊的產(chǎn)生,使存儲數(shù)據(jù)的丟失最小,是與NAND FLASH對應(yīng)的軟件系統(tǒng)必須要考慮的問題。目前廣泛使用的文件系統(tǒng)中,一種是JFFS和YAFFS類文件系統(tǒng),將文件索引隨機存儲在NAND FLASH中,由于文件索引在NAND FLASH中以無關(guān)聯(lián)的方式存放,當(dāng)產(chǎn)生某個壞塊時,不影響其它目錄文件,但是,在文件系統(tǒng)掛載時,需要掃描整個NAND FLASH,導(dǎo)致掛載時間過長。另外一種是對JFFS和YAFFS類文件系統(tǒng)進行改進,將文件索引以鏈表方式存放, 文件系統(tǒng)掛載過程中按照索引鏈表加載文件系統(tǒng),這種方式效率較高,但是,當(dāng)壞塊剛好產(chǎn)生在鏈表上的某個節(jié)點時,會破壞后續(xù)所有的目錄文件,若增加備份鏈表,則會增大各個方面的開銷。綜上所述,現(xiàn)有技術(shù)提供的文件索引在NAND FLASH中的存儲方法,使得NAND FLASH的存儲效能不能得到充分發(fā)揮。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種文件索引的存儲方法,旨在解決現(xiàn)有提供的文件索引的存儲方法,使得NAND FLASH的存儲效能不能得到充分發(fā)揮的問題。本發(fā)明是這樣實現(xiàn)的,一種文件索引的存儲方法,所述方法包括將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間;按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索弓I頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù);文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。本發(fā)明的另一目的在于提供一種文件系統(tǒng),所述文件系統(tǒng)包括配對單元,用于將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間;存儲空間劃分單元,用于按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索引頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù);
索引存儲單元,用于文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。在本發(fā)明中,將關(guān)鍵字和索引存儲空間進行關(guān)聯(lián),并將NAND FLASH分成關(guān)鍵字區(qū), 索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,存儲文件索引頭數(shù)據(jù)在與關(guān)鍵字區(qū)中的關(guān)鍵字關(guān)聯(lián)的空閑索引存儲空間中,使得文件索引數(shù)據(jù)的存儲可以兼具隨機散存的數(shù)據(jù)獨立性,同時具有鏈?zhǔn)酱鎯Φ目伤饕?,很好的?yōu)化和提高了 NAND FLASH類存儲體的存儲效能。
圖1是本發(fā)明實施例提供的文件索引的存儲方法的實現(xiàn)流程圖;圖2是本發(fā)明實施例提供的關(guān)鍵字、文件索引數(shù)據(jù)在NAND FLASH中的具體存儲位置示意圖;圖3是本發(fā)明實施例提供的文件系統(tǒng)的結(jié)構(gòu)框圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實施例中,通過借鑒C++標(biāo)準(zhǔn)算法庫中MAP數(shù)據(jù)結(jié)構(gòu),將關(guān)鍵字KEY與一組索引存儲空間進行關(guān)聯(lián),這一組索引存儲空間是通過對關(guān)鍵字KEY根據(jù)預(yù)制的空間生成函數(shù)得到,空間生成函數(shù)中的參數(shù)可以根據(jù)實際動態(tài)選擇。可以存儲文件索引頭數(shù)據(jù)在與關(guān)鍵字關(guān)聯(lián)的空閑索引存儲空間中,使得文件索引數(shù)據(jù)的存儲可以兼具隨機散存的數(shù)據(jù)獨立性,同時具有鏈?zhǔn)酱鎯Φ目伤饕?,很好的?yōu)化和提高了 NAND FLASH類存儲體的存儲效能。圖1是本發(fā)明實施例一提供的文件索引的存儲方法的實現(xiàn)流程圖,詳述如下在步驟SlOl中,將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間。本發(fā)明提供的文件系統(tǒng),關(guān)鍵字KEY的產(chǎn)生可以通過下述公式產(chǎn)生f (χ) = A*x其中,f (χ)表示關(guān)鍵字KEY的值,A為任意的自然數(shù),χ為整數(shù),比如,可以取A為 l,x為1,得到關(guān)鍵字KEY的值為1,也可以取A為6,x為1,得到關(guān)鍵字KEY的值為6。與關(guān)鍵字KEY關(guān)聯(lián)的索引存儲空間可以通過預(yù)制的空間生成函數(shù)來生成。所述預(yù)制的空間生成函數(shù)可以是線性函數(shù),也可以是非線性的函數(shù),具體可以根據(jù)實際情況自行配置,只要通過該空間生成函數(shù)可以有規(guī)律生成與一個關(guān)鍵字對應(yīng)的一組索引存儲空間即可。本實施例中以線性函數(shù)為例來進行說明。該線性函數(shù)的公式如下所述f (χ) = A*x+B其中,f(x)表示索引空間;A為任意的自然數(shù);χ表示關(guān)鍵字KEY的值,為整數(shù),B 為任意的自然數(shù),比如,可以取A為10、x為1、B為1,得到索引空間的值為11 ;也可以取A 為20、x為1、B為1,得到關(guān)鍵字KEY的值為索引空間的值為21。具體的關(guān)鍵字KEY與索引存儲空間的對應(yīng)關(guān)系如圖2所示,從圖2中可以看出,關(guān)鍵字KEY為1時,對應(yīng)的一組索引存儲空間分別為11、21、31和41 ;關(guān)鍵字KEY為6時,對應(yīng)的一組索引存儲空間分別為16、 26,36和46。在將關(guān)鍵字與關(guān)聯(lián)對象配對時,文件系統(tǒng)根據(jù)實際動態(tài)從多個預(yù)制的空間生成函數(shù)中選擇其中一個來進行關(guān)鍵字與關(guān)聯(lián)對象之間的配對。在步驟S102中,按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索引頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù)。本發(fā)明提供的文件系統(tǒng),按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分。其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索引頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù)。關(guān)鍵字區(qū)是NAND FLASH中以起始地址開始的、預(yù)先設(shè)定大小的連續(xù)存儲空間,關(guān)鍵字在NAND FLASH中的具體存儲位置如圖2所示。在步驟S103中,文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。本發(fā)明提供的文件系統(tǒng),在向NAND FLASH中存儲數(shù)據(jù)時,首先執(zhí)行步驟1、判斷所述數(shù)據(jù)是否是文件索引頭數(shù)據(jù),如果是文件索引頭數(shù)據(jù),則依次讀取NAND FLASH關(guān)鍵字區(qū)中存儲的關(guān)鍵字,并執(zhí)行后續(xù)的步驟2和步驟3,否則,按照原有的文件系統(tǒng)自身的算法存儲所述數(shù)據(jù)在NANDFLASH的文件數(shù)據(jù)區(qū)中的相應(yīng)文件數(shù)據(jù)存儲空間中。步驟2、根據(jù)預(yù)制的空間生成函數(shù),查找與所述關(guān)鍵字對應(yīng)的一組空閑索引存儲空間,所述空間生成函數(shù)表示關(guān)鍵字與索引存儲空間的對應(yīng)關(guān)系。在存儲文件索引數(shù)據(jù)時,本發(fā)明提供的文件系統(tǒng)依次讀取NANDFLASH關(guān)鍵字區(qū)中存儲的關(guān)鍵字,并根據(jù)預(yù)制的空間生成函數(shù),查找與所述關(guān)鍵字對應(yīng)的一組空閑索引存儲空間,當(dāng)查找到與所述關(guān)鍵字對應(yīng)的空閑索引存儲空間時,則存儲文件索引數(shù)據(jù)在所述空閑索引存儲空間中。其中,所述預(yù)制的空間生成函數(shù)可以是線性函數(shù),也可以是非線性的函數(shù),具體可以根據(jù)實際情況自行配置,只要通過該空間生成函數(shù)可以有規(guī)律生成與一個關(guān)鍵字對應(yīng)的一組索引存儲空間即可。本實施例中,預(yù)制的線性函數(shù)的公式為f(X) =A*x+B, 具體的介紹請參見步驟SlOl。步驟3、存儲文件索引數(shù)據(jù)在所述空閑索引存儲空間中。當(dāng)文件系統(tǒng)查找到與關(guān)鍵字KEY對應(yīng)的空閑索引存儲空間后,就可以將文件索引數(shù)據(jù)存儲在這一組空閑索引存儲空間中。當(dāng)后續(xù)文件系統(tǒng)需要讀取NAND FLASH中存儲的數(shù)據(jù)時,就可以先讀取關(guān)鍵字區(qū)存儲的關(guān)鍵字KEY,再用與步驟2中的預(yù)制的空間生成函數(shù)計算出關(guān)鍵字KEY對應(yīng)的一組索引存儲空間,從這些索引存儲空間中讀取有效文件索引數(shù)據(jù),再根據(jù)所讀取的有效文件索引數(shù)據(jù)組織文件目錄,通過文件目錄即可得到整個文件系統(tǒng)架構(gòu)。另外,作為本發(fā)明的另一個優(yōu)選實施例,在存儲文件索引數(shù)據(jù)時,當(dāng)出現(xiàn)已有的關(guān)鍵字KEY所對應(yīng)的索引存儲空間不能夠存儲所有的文件索引數(shù)據(jù)時,可以生成新的關(guān)鍵字,在新的關(guān)鍵字對應(yīng)的索引存儲空間繼續(xù)存儲文件索引數(shù)據(jù),比如,當(dāng)關(guān)鍵字區(qū)只有一個關(guān)鍵字KEY,并且該關(guān)鍵字KEY所對應(yīng)的空閑索引存儲空間不能夠存儲所有的文件索引數(shù)據(jù)時,則可以生成第二個關(guān)鍵字,在第二個關(guān)鍵字對應(yīng)的索引存儲空間繼續(xù)存儲文件索引數(shù)據(jù),以此類推,可以生成第三個、第四個關(guān)鍵字等等。該步驟可以在步驟S103之后執(zhí)行, 具體包括在步驟S104中,判斷所述關(guān)鍵字對應(yīng)的空閑索引存儲空間是否足夠存儲文件索引頭數(shù)據(jù),如果是,則繼續(xù)在所述空閑索引存儲空間存儲文件索引數(shù)據(jù),如果否,則執(zhí)行步驟 S105。在步驟S105中,生成新的關(guān)鍵字。當(dāng)文件系統(tǒng)判斷出一個關(guān)鍵字對應(yīng)的當(dāng)前空閑索引存儲空間不夠用時,則生成新的關(guān)鍵字。具體的生成新的關(guān)鍵字的步驟詳見步驟S101。在步驟S106中,在NAND FLASH關(guān)鍵字區(qū)存儲所述新的關(guān)鍵字。在步驟S107中,根據(jù)預(yù)制的線性函數(shù)生成與所述新的關(guān)鍵字對應(yīng)的一組索引存儲空間。通過本發(fā)明優(yōu)選實施例,解決了預(yù)先分配的索引存儲空間不足,導(dǎo)致文件索引數(shù)據(jù)不能完全存儲,造成數(shù)據(jù)丟失的問題。本發(fā)明實施例,通過借鑒C++標(biāo)準(zhǔn)算法庫中MAP數(shù)據(jù)結(jié)構(gòu),將關(guān)鍵字KEY與一組索引存儲空間進行關(guān)聯(lián),存儲文件索引數(shù)據(jù)在與關(guān)鍵字關(guān)聯(lián)的空閑索引存儲空間中,使得文件索引數(shù)據(jù)的存儲可以兼具隨機散存的數(shù)據(jù)獨立性,同時具有鏈?zhǔn)酱鎯Φ目伤饕裕芎玫膬?yōu)化和提高了 NANDFLASH類存儲體的存儲效能。適用于NAND FLASH及類似運行中會動態(tài)產(chǎn)生壞塊的存儲體中,也可以用于改進已經(jīng)存在的各種主流文件系統(tǒng),如JFFAS、YAFFS等中,也可以適用在各種自行開發(fā)的文件系統(tǒng)中的存儲算法部分。圖3是本發(fā)明實施例提供的文件系統(tǒng)的結(jié)構(gòu)框圖,為了便于說明,僅示出了本發(fā)明實施例相關(guān)的部分。在本發(fā)明實施例中,該文件系統(tǒng)包括配對單元31、存儲空間劃分單元32和索引存儲單元33。其中,配對單元31用于將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間,所述索引存儲空間是對所述關(guān)鍵字根據(jù)預(yù)制的空間生成函數(shù)進行計算得到的;存儲空間劃分單元32用于按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NANDFLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索引頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù);索引存儲單元33用于文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。其中,索引存儲單元33包括關(guān)鍵字讀取模塊、空閑空間查找模塊和索引存儲模塊。關(guān)鍵字讀取模塊用于在存儲文件索引數(shù)據(jù)時,讀取NAND FLASH關(guān)鍵字區(qū)中存儲的關(guān)鍵字;空閑空間查找模塊用于根據(jù)預(yù)制的空間生成函數(shù),查找與所述關(guān)鍵字讀取模塊讀取的關(guān)鍵字對應(yīng)的一組空閑索引存儲空間,所述空間生成函數(shù)表示關(guān)鍵字與索引存儲空間的對應(yīng)關(guān)系;
索引存儲模塊用于存儲文件索引數(shù)據(jù)在所述空閑空間查找模塊查找到的空閑索引存儲空間中。另外,作為本發(fā)明的一個優(yōu)選實施例,所述系統(tǒng)還包括新關(guān)鍵字生成單元34、新關(guān)鍵字存儲單元35和新索引存儲空間生成單元36。新關(guān)鍵字生成單元34用于當(dāng)一個關(guān)鍵字對應(yīng)的當(dāng)前空閑索引存儲空間不夠存儲文件索引頭數(shù)據(jù)時,則生成新的關(guān)鍵字;新關(guān)鍵字存儲單元35用于在NAND FLASH的關(guān)鍵字區(qū)存儲所述新的關(guān)鍵字;新索引存儲空間生成單元36用于按照預(yù)制的空間生成函數(shù)生成與所述新的關(guān)鍵字對應(yīng)的一組索引存儲空間。此外,所述系統(tǒng)還包括索引頭判斷單元,該索引頭判斷單元用于文件系統(tǒng)在存儲數(shù)據(jù)時,判斷所述數(shù)據(jù)是否是文件索引頭數(shù)據(jù),如果是,則執(zhí)行通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟;如果否,則存儲所述數(shù)據(jù)在NAND FLASH的文件數(shù)據(jù)區(qū)中的相應(yīng)文件數(shù)據(jù)存儲空間中。另外,所述系統(tǒng)還包括函數(shù)選擇單元,該單元用于在將關(guān)鍵字與關(guān)聯(lián)對象配對時,文件系統(tǒng)根據(jù)實際動態(tài)從多個預(yù)制的空間生成函數(shù)中選擇其中一個來進行關(guān)鍵字與關(guān)聯(lián)對象之間的配對。具體詳細介紹請參照圖1所示方法實施例,在此不再贅述。本發(fā)明實施例,將關(guān)鍵字和索引存儲空間進行關(guān)聯(lián),存儲文件索引頭數(shù)據(jù)在與關(guān)鍵字關(guān)聯(lián)的索引存儲空間中,使得文件索引數(shù)據(jù)的存儲可以兼具隨機散存的數(shù)據(jù)獨立性, 同時具有鏈?zhǔn)酱鎯Φ目伤饕?,很好的?yōu)化和提高了 NAND FLASH類存儲體的存儲效能。另夕卜,在存儲文件索引頭數(shù)據(jù)時,當(dāng)出現(xiàn)現(xiàn)有的關(guān)鍵字KEY所對應(yīng)的索引存儲空間不能夠存儲所有的文件索引數(shù)據(jù)時,可以動態(tài)生成新的關(guān)鍵字,在后續(xù)的生成的關(guān)鍵字對應(yīng)的索引存儲空間存儲文件索引數(shù)據(jù),不會造成文件索引數(shù)據(jù)的丟失。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種文件索引的存儲方法,其特征在于,所述方法包括將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間;按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索弓丨頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù);文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。
2.如權(quán)利要求1所述的方法,其特征在于,在所述文件系統(tǒng)在存儲文件索引數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟之后,所述方法還包括當(dāng)所述關(guān)鍵字對應(yīng)的空閑索引存儲空間不夠存儲文件索引頭數(shù)據(jù)時,則生成新的關(guān)鍵字;在NAND FLASH的關(guān)鍵字區(qū)存儲所述新的關(guān)鍵字;按照預(yù)制的空間生成函數(shù)生成與所述新的關(guān)鍵字對應(yīng)的一組索引存儲空間。
3.如權(quán)利要求1所述的方法,其特征在于,在所述文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時, 通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟之前,所述方法還包括文件系統(tǒng)在存儲數(shù)據(jù)時,判斷所述數(shù)據(jù)是否是文件索引頭數(shù)據(jù);如果是,則執(zhí)行通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟;如果否,則存儲所述數(shù)據(jù)在NAND FLASH的文件數(shù)據(jù)區(qū)中的相應(yīng)文件數(shù)據(jù)存儲空間中。
4.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)制的空間生成函數(shù)包括多個,在將關(guān)鍵字與關(guān)聯(lián)對象配對時,文件系統(tǒng)根據(jù)實際動態(tài)從中選擇其中一個來進行關(guān)鍵字與關(guān)聯(lián)對象之間的配對。
5.如權(quán)利要求1所述的方法,其特征在于,所述文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟具體包括讀取NAND FLASH關(guān)鍵字區(qū)中存儲的關(guān)鍵字;根據(jù)預(yù)制的空間生成函數(shù),查找與所述關(guān)鍵字對應(yīng)的一組空閑索引存儲空間,所述空間生成函數(shù)表示關(guān)鍵字與索引存儲空間的對應(yīng)關(guān)系;存儲文件索引數(shù)據(jù)在所述空閑索引存儲空間中。
6.一種文件系統(tǒng),其特征在于,所述文件系統(tǒng)包括配對單元,用于將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間;存儲空間劃分單元,用于按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分,其中,關(guān)鍵字區(qū)用于存儲生成的關(guān)鍵字KEY,索引存儲空間區(qū)用于存儲文件索引頭數(shù)據(jù),文件數(shù)據(jù)區(qū)用于存儲文件中除文件索引頭以外的普通數(shù)據(jù);索引存儲單元,用于文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。
7.如權(quán)利要求6所述的文件系統(tǒng),其特征在于,所述系統(tǒng)還包括新關(guān)鍵字生成單元,用于當(dāng)一個關(guān)鍵字對應(yīng)的空閑索引存儲空間不夠存儲文件索引頭數(shù)據(jù)時,則生成新的關(guān)鍵字;新關(guān)鍵字存儲單元,用于在NAND FLASH的關(guān)鍵字區(qū)存儲所述新的關(guān)鍵字; 新索引存儲空間生成單元,用于按照預(yù)制的空間生成函數(shù)生成與所述新的關(guān)鍵字對應(yīng)的一組索引存儲空間。
8.如權(quán)利要求6所述的文件系統(tǒng),其特征在于,所述系統(tǒng)還包括索引頭判斷單元,用于文件系統(tǒng)在存儲數(shù)據(jù)時,判斷所述數(shù)據(jù)是否是文件索引頭數(shù)據(jù), 如果是,則執(zhí)行通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲的步驟;如果否,則存儲所述數(shù)據(jù)在NAND FLASH的文件數(shù)據(jù)區(qū)中的相應(yīng)文件數(shù)據(jù)存儲空間中。
9.如權(quán)利要求6所述的文件系統(tǒng),其特征在于,所述系統(tǒng)還包括函數(shù)選擇單元,用于在將關(guān)鍵字與關(guān)聯(lián)對象配對時,文件系統(tǒng)根據(jù)實際動態(tài)從多個預(yù)制的空間生成函數(shù)中選擇其中一個來進行關(guān)鍵字與關(guān)聯(lián)對象之間的配對。
10.如權(quán)利要求6所述的文件系統(tǒng),其特征在于,所述索引存儲單元包括關(guān)鍵字讀取模塊,用于在存儲文件索引數(shù)據(jù)時,讀取NAND FLASH關(guān)鍵字區(qū)中存儲的關(guān)鍵字;空閑空間查找模塊,用于根據(jù)預(yù)制的空間生成函數(shù),查找與所述關(guān)鍵字對應(yīng)的一組空閑索引存儲空間,所述空間生成函數(shù)表示關(guān)鍵字與索引存儲空間的對應(yīng)關(guān)系; 索引存儲模塊,用于存儲文件索引數(shù)據(jù)在所述空閑索引存儲空間中。
全文摘要
本發(fā)明適用于存儲技術(shù)領(lǐng)域,提供了一種文件索引的存儲方法及文件系統(tǒng),所述方法包括將關(guān)鍵字與關(guān)聯(lián)對象配對,所述關(guān)聯(lián)對象是與所述關(guān)鍵字對應(yīng)的一組索引存儲空間;按所存儲的數(shù)據(jù)的數(shù)據(jù)類型,將NAND FLASH分成關(guān)鍵字區(qū),索引存儲空間區(qū)和文件數(shù)據(jù)區(qū)三部分;文件系統(tǒng)在存儲文件索引頭數(shù)據(jù)時,通過關(guān)鍵字區(qū)的關(guān)鍵字查到當(dāng)前空閑索引存儲空間進行存儲。本發(fā)明,將關(guān)鍵字和索引存儲空間進行關(guān)聯(lián),存儲文件索引數(shù)據(jù)在與關(guān)鍵字關(guān)聯(lián)的索引存儲空間中,使得文件索引數(shù)據(jù)的存儲可以兼具隨機散存的數(shù)據(jù)獨立性,同時具有鏈?zhǔn)酱鎯Φ目伤饕?,很好的?yōu)化和提高了NAND FLASH類存儲體的存儲效能。
文檔編號G06F17/30GK102521312SQ20111039370
公開日2012年6月27日 申請日期2011年12月1日 優(yōu)先權(quán)日2011年12月1日
發(fā)明者何運衡, 卞鳳來 申請人:深圳市航天泰瑞捷電子有限公司