文件存儲(chǔ)系統(tǒng)及其文件存儲(chǔ)控制方法與裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種文件存儲(chǔ)系統(tǒng)及其文件存儲(chǔ)控制方法與裝置。
【背景技術(shù)】
[0002]現(xiàn)在計(jì)算機(jī)、智能手機(jī)、平板電腦中,用戶數(shù)據(jù)、文件被存在硬盤,或者NAND閃存芯片中以及由NAND閃存組成的固態(tài)硬盤(SSD,Solid State Drives)里。NAND和固態(tài)硬盤取代傳統(tǒng)的機(jī)械硬盤又是一個(gè)產(chǎn)業(yè)發(fā)展的大趨勢(shì)。
[0003]NAND是一種整塊讀寫的存儲(chǔ)設(shè)備(block device),最小可讀取的單元叫頁(page),最小可擦除的單元叫存儲(chǔ)塊或區(qū)塊(block),一個(gè)block往往由很多page組成,block擦除后里面的page可以進(jìn)行單獨(dú)的寫入(program)操作。
[0004]NAND閃存的一個(gè)問題是其具有有限的壽命。NAND閃存里面的每一個(gè)page經(jīng)過一定次數(shù)的擦寫以后,就會(huì)永久失效不能繼續(xù)使用。目前的產(chǎn)業(yè)發(fā)展趨勢(shì)是NAND的容量和數(shù)據(jù)密度增長非???,但卻是以降低壽命為代價(jià),可擦寫次數(shù)從最初的10萬次降低到目前的3000次左右。
[0005]可以參閱圖1,在軟件層面,手機(jī)和計(jì)算機(jī)中文件存儲(chǔ)的架構(gòu)一般如下:
[0006]應(yīng)用軟件向操作系統(tǒng)發(fā)出打開、關(guān)閉、讀、寫文件指令;
[0007]操作系統(tǒng)中的文件系統(tǒng)部分把讀、寫文件的指令轉(zhuǎn)化為讀、寫存儲(chǔ)塊的指令;
[0008]NAND驅(qū)動(dòng)與管理軟件接受讀寫存儲(chǔ)塊區(qū)的指令,進(jìn)行緩存、寫均衡等優(yōu)化,向芯片發(fā)出讀page、寫block等指令;具體地,在手機(jī)中,NAND讀寫軟件通常作為跟操作系統(tǒng)緊密相關(guān)的軟件模塊,在主控芯片上運(yùn)行;在計(jì)算機(jī)中,NAND讀寫軟件通常在固態(tài)硬盤控制器(SSD Controller)上運(yùn)行。
[0009]文件系統(tǒng)是操作系統(tǒng)軟件中的一個(gè)重要部分,負(fù)責(zé)解決文件的存儲(chǔ)問題。它會(huì)把文件劃分成一個(gè)個(gè)的塊,一般每一個(gè)塊和NAND閃存中的一個(gè)page對(duì)應(yīng)。每當(dāng)一個(gè)新文件創(chuàng)建,文件系統(tǒng)會(huì)分配給它一個(gè)塊,當(dāng)一個(gè)塊寫滿后,再分配一個(gè)新的塊。由于系統(tǒng)中很多文件都在增長,一個(gè)文件中的不同的塊常常地址不連續(xù),這就叫文件的碎片化。并且,一個(gè)文件刪除后,釋放出的空閑塊會(huì)被新的文件占用。所以,隨著產(chǎn)品的使用,文件的碎片化會(huì)越來越嚴(yán)重。
[0010]如果使用傳統(tǒng)的機(jī)械硬盤存儲(chǔ)文件,文件的碎片化是一個(gè)大問題,因?yàn)闄C(jī)械硬盤的磁頭在尋找新的地址塊時(shí)需要很長的時(shí)間,文件碎片化將導(dǎo)致系統(tǒng)的性能顯著降低。如果使用NAND存儲(chǔ)文件,雖然尋找新地址的時(shí)間基本不是問題,文件碎片化對(duì)系統(tǒng)性能的影響也比較小,但文件碎片化對(duì)NAND的使用壽命還是有很大影響的。
【發(fā)明內(nèi)容】
[0011 ] 本發(fā)明要解決的問題是因現(xiàn)有技術(shù)存儲(chǔ)文件所產(chǎn)生的文件碎片化而導(dǎo)致的系統(tǒng)性能降低或存儲(chǔ)器壽命縮短。
[0012]為解決上述問題,本發(fā)明技術(shù)方案提供一種文件存儲(chǔ)系統(tǒng),包括:
[0013]第一存儲(chǔ)器、第二存儲(chǔ)器以及控制單元;
[0014]所述第一存儲(chǔ)器為采用整塊讀寫的非易失性(NV,Not Volatile)存儲(chǔ)器,所述第二存儲(chǔ)器為支持隨機(jī)存儲(chǔ)的非易失性存儲(chǔ)器,所述第二存儲(chǔ)器比所述第一存儲(chǔ)器具有更長的使用壽命以及同等或更快的讀寫速度;
[0015]所述控制單元,適于在執(zhí)行文件的創(chuàng)建或?qū)懭氩僮鲿r(shí),將所述第二存儲(chǔ)器的文件區(qū)中的頁分配給該文件,且該文件在所述第二存儲(chǔ)器中所占用存儲(chǔ)空間的大小一旦大于或等于所述第一存儲(chǔ)器中一個(gè)存儲(chǔ)塊的大小時(shí),將所述第二存儲(chǔ)器的文件區(qū)中分配給該文件且存儲(chǔ)容量對(duì)應(yīng)一個(gè)所述存儲(chǔ)塊的大小所包含的頁,寫入所述第一存儲(chǔ)器的完整存儲(chǔ)塊之中,并釋放所述第二存儲(chǔ)器的文件區(qū)中已寫入所述第一存儲(chǔ)器的相關(guān)頁。
[0016]可選的,所述第一存儲(chǔ)器和第二存儲(chǔ)器的使用壽命通過可擦寫的次數(shù)進(jìn)行衡量。
[0017]可選的,所述第二存儲(chǔ)器的文件區(qū)中每個(gè)頁的存儲(chǔ)容量與所述第一存儲(chǔ)器的文件區(qū)中每個(gè)頁的存儲(chǔ)容量相同。
[0018]可選的,所述第二存儲(chǔ)器為磁性隨機(jī)存儲(chǔ)器(MRAM,Magnetic Random AccessMemory),所述第一存儲(chǔ)器為NAND閃存或固態(tài)硬盤。
[0019]可選的,所述第二存儲(chǔ)器通過DDR DRAM接口與所述控制單元相連。
[0020]可選的,所述第一存儲(chǔ)器為固態(tài)硬盤,所述第二存儲(chǔ)器內(nèi)置于所述第一存儲(chǔ)器之中。
[0021 ] 為解決上述問題,本發(fā)明技術(shù)方案還提供一種上述文件存儲(chǔ)系統(tǒng)的文件存儲(chǔ)控制方法,包括:
[0022]在執(zhí)行文件的創(chuàng)建或?qū)懭氩僮鲿r(shí),將所述第二存儲(chǔ)器的文件區(qū)中的頁分配給該文件;
[0023]若該文件在所述第二存儲(chǔ)器中所占用存儲(chǔ)空間的大小一旦大于或等于所述第一存儲(chǔ)器中一個(gè)存儲(chǔ)塊的大小,則將所述第二存儲(chǔ)器的文件區(qū)中分配給該文件且存儲(chǔ)容量對(duì)應(yīng)一個(gè)所述存儲(chǔ)塊的大小所包含的頁,寫入所述第一存儲(chǔ)器的完整存儲(chǔ)塊之中,并釋放所述第二存儲(chǔ)器的文件區(qū)中已寫入所述第一存儲(chǔ)器的相關(guān)頁。
[0024]可選的,將所述第二存儲(chǔ)器的文件區(qū)中的頁分配給該文件包括:
[0025]在執(zhí)行文件的創(chuàng)建操作時(shí),將所述第二存儲(chǔ)器的文件區(qū)中的空閑頁分配給該文件;
[0026]在執(zhí)行文件的寫入操作時(shí),根據(jù)文件的寫入位置找到所述第二存儲(chǔ)器的文件區(qū)中相應(yīng)的頁以執(zhí)行所述寫入操作,或在需要新的頁進(jìn)行存儲(chǔ)時(shí)將所述第二存儲(chǔ)器的文件區(qū)中的空閑頁分配給該文件。
[0027]可選的,所述文件存儲(chǔ)系統(tǒng)的文件存儲(chǔ)控制方法還包括:若所述第二存儲(chǔ)器的文件區(qū)中空閑頁的數(shù)量小于下限閾值,則執(zhí)行清理所述第二存儲(chǔ)器的文件區(qū)的操作。
[0028]可選的,執(zhí)行清理所述第二存儲(chǔ)器的文件區(qū)的操作包括:
[0029]按上一次發(fā)生創(chuàng)建或?qū)懭氩僮鞯臅r(shí)間找到最舊的文件;
[0030]將所述最舊的文件在所述第二存儲(chǔ)器的文件區(qū)中的所有頁,寫入所述第一存儲(chǔ)器中擁有足夠連續(xù)空閑頁的存儲(chǔ)塊;
[0031 ] 釋放所述最舊的文件在所述第二存儲(chǔ)器的文件區(qū)中的所有頁。
[0032]可選的,所述下限閾值為I或2。
[0033]可選的,執(zhí)行清理所述第二存儲(chǔ)器的文件區(qū)的操作以及將所述第二存儲(chǔ)器的文件區(qū)中的頁寫入所述第一存儲(chǔ)器的完整存儲(chǔ)塊的操作,與所述執(zhí)行文件的創(chuàng)建或?qū)懭氩僮髦g在各自獨(dú)立的線程或任務(wù)中進(jìn)行。
[0034]可選的,所述第二存儲(chǔ)器的文件區(qū)中的空閑頁通過鏈表進(jìn)行管理,所述管理包括空閑頁的分配和釋放。
[0035]為解決上述問題,本發(fā)明技術(shù)方案還提供一種文件存儲(chǔ)系統(tǒng)的文件存儲(chǔ)控制裝置,包括:
[0036]分配單元,適于在執(zhí)行文件的創(chuàng)建或?qū)懭氩僮鲿r(shí),將所述第二存儲(chǔ)器的文件區(qū)中的頁分配給該文件;
[0037]判斷單元,適于判斷該文件在所述第二存儲(chǔ)器中所占用存儲(chǔ)空間的大小是否大于或等于所述第一存儲(chǔ)器中一個(gè)存儲(chǔ)塊的大?。?br>[0038]第一轉(zhuǎn)寫單元,適于在所述判斷單元判斷出該文件在所述第二存儲(chǔ)器中所占用存儲(chǔ)空間的大小一旦大于或等于所述第一存儲(chǔ)器中一個(gè)存儲(chǔ)塊的大小時(shí),將所述第二存儲(chǔ)器的文件區(qū)中分配給該文件且存儲(chǔ)容量對(duì)應(yīng)一個(gè)所述存儲(chǔ)塊的大小所包含的頁,寫入所述第一存儲(chǔ)器的完整存儲(chǔ)塊之中;
[0039]第一釋放單元,適于釋放所述第二存儲(chǔ)器的文件區(qū)中已由所述第一轉(zhuǎn)寫單元寫入所述第一存儲(chǔ)器的相關(guān)頁。
[0040]可選的,所述文件存儲(chǔ)系統(tǒng)的文件存儲(chǔ)控制裝置還包括清理單元,適于在所述第二存儲(chǔ)器的文件區(qū)中空閑頁的數(shù)量小于下限閾值時(shí),執(zhí)行清理所述第二存儲(chǔ)器的文件區(qū)的操作。
[0041]可選的,所述清理單元包括:
[0042]搜索單元,適于按上一次發(fā)生創(chuàng)建或?qū)懭氩僮鞯臅r(shí)間找到最舊的文件;
[0043]第二轉(zhuǎn)寫單元,適于將所述最舊的文件在所述第二存儲(chǔ)器的文件區(qū)中的所有頁,寫入所述第一存儲(chǔ)器中擁有足夠連續(xù)空閑頁的存儲(chǔ)塊;
[0044]第二釋放單元,適于釋放所述最舊的文件在所述第二存儲(chǔ)器的文件區(qū)中的所有頁。
[0045]可選的,所述文件存儲(chǔ)系統(tǒng)的文件存儲(chǔ)控制裝置還包括空閑頁管理單元,適于通過鏈表對(duì)所述第二存儲(chǔ)器的文件區(qū)中的空閑頁進(jìn)行管理,所述管理包括空閑頁的分配和釋放。
[0046]與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案至少具有以下優(yōu)點(diǎn):
[0047]通過使用兩種不同類型的非易失性存儲(chǔ)器相互協(xié)作共同存儲(chǔ)文件,其中的第一存儲(chǔ)器采用整塊讀寫,第二存儲(chǔ)器支持隨機(jī)存儲(chǔ),比第一存儲(chǔ)器具有更長的使用壽命以及同等或更快的讀寫速度,在執(zhí)行文件的創(chuàng)建或?qū)懭氩僮鲿r(shí),先分配第二存儲(chǔ)器的文件區(qū)中的頁給該文件,一旦該文件在所述第二存儲(chǔ)器中所占用存儲(chǔ)空間的大小達(dá)到一個(gè)存儲(chǔ)塊的大小,則將該文件在第二存儲(chǔ)器中存儲(chǔ)容量為一個(gè)存儲(chǔ)塊大小所包含的頁寫入第一存儲(chǔ)器的完整存儲(chǔ)塊之中,并釋放第二存儲(chǔ)器的文件區(qū)中的相關(guān)頁,如此能保證大的文件用整個(gè)存儲(chǔ)塊進(jìn)行存儲(chǔ),而不會(huì)使得能用一個(gè)存儲(chǔ)塊存儲(chǔ)的數(shù)據(jù)被分散到不同的存儲(chǔ)塊里面,由此大大降低了在第一存儲(chǔ)器中產(chǎn)生文件碎片化的可能性。
[0048]相對(duì)于現(xiàn)有技術(shù)中僅采用NAND閃存或固態(tài)硬盤的文件存儲(chǔ)方式,本發(fā)明技術(shù)方案使由連續(xù)寫入所創(chuàng)建的大文件,比如拷貝、網(wǎng)絡(luò)傳入的文件、監(jiān)控錄像文件等,幾乎都被保存在完整的存儲(chǔ)塊里面,由此會(huì)進(jìn)一步降低NAND閃存或固態(tài)硬盤的擦寫次數(shù),延長產(chǎn)品的使用壽命;相對(duì)于現(xiàn)有技術(shù)中僅采用機(jī)械硬盤的文件存儲(chǔ)方式,本發(fā)明技術(shù)方案能使文件盡量地保持在一個(gè)連續(xù)的空間里,地址塊的尋址時(shí)間大大減少,由此提高了系統(tǒng)的性能。
【附圖說明】
[0049]圖1是現(xiàn)有技術(shù)中文件存儲(chǔ)在軟件層面的架構(gòu)示意圖;
[0