一種數(shù)據(jù)存儲方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)存儲方法及系統(tǒng),用以提高文件操作的響應(yīng)速度,所述方法包括以下步驟:將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列;所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存中;當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。本發(fā)明采用的方法明顯的提高了文件操作的響應(yīng)速度,保證在異常斷電時文件系統(tǒng)數(shù)據(jù)的完整性,最大限度的減少異常斷電文件的丟失。
【專利說明】一種數(shù)據(jù)存儲方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲【技術(shù)領(lǐng)域】,特別涉及一種數(shù)據(jù)存儲方法及系統(tǒng)。
【背景技術(shù)】
[0002]文件系統(tǒng)的性能瓶頸在于與存儲介質(zhì)的數(shù)據(jù)交互,頻繁的訪問存儲介質(zhì)嚴(yán)重影響文件系統(tǒng)性能,為減少訪問存儲介質(zhì)的次數(shù),提高文件系統(tǒng)的性能,通常都會開辟一塊內(nèi)存空間,讓大部分的數(shù)據(jù)交互都發(fā)生在內(nèi)存中。
[0003]在嵌入式存儲設(shè)備中,由于內(nèi)存空間有限,文件系統(tǒng)的一些關(guān)鍵數(shù)據(jù)無法做到在內(nèi)存中完成一次性寫入存儲介質(zhì),只能分批次從緩存中寫到存儲介質(zhì)上。尚若關(guān)鍵數(shù)據(jù)還沒寫完,設(shè)備就異常斷電了,這種情況下存儲介質(zhì)上的文件系統(tǒng)的關(guān)鍵數(shù)據(jù)就不是完整的,下次掛載的時候就可能很多文件丟失掉,更嚴(yán)重者文件系統(tǒng)直接癱瘓。
[0004]而現(xiàn)有的另一種技術(shù)方案是在存儲文件系統(tǒng)的關(guān)鍵數(shù)據(jù)時,不通過緩存直接寫到存儲介質(zhì)上。這種方案一方面可以有效避免因關(guān)鍵數(shù)據(jù)丟失文件系統(tǒng)不可用或大批文件丟失的情況,但是另一方面由于在存儲時沒有緩存的情況下是相當(dāng)耗時的,因此又會嚴(yán)重影響文件系統(tǒng)的操作性能。
【發(fā)明內(nèi)容】
[0005]針對上述技術(shù)中存在的問題,本發(fā)明實施例提供一種數(shù)據(jù)存儲方法及系統(tǒng),用以提高文件操作的響應(yīng)速度。
[0006]為實現(xiàn)上述技術(shù)方案,本發(fā)明實施例一方面提供一種數(shù)據(jù)存儲方法,包括以下步驟:
[0007]將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列;
[0008]所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第
二緩存中;
[0009]當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。
[0010]優(yōu)選的,所述預(yù)設(shè)條件包括:
[0011]第二緩存中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值;或者,
[0012]第二緩存中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值;或者,
[0013]存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值。
[0014]優(yōu)選的,所述第一緩存包括內(nèi)存和/或磁盤。
[0015]優(yōu)選的,所述第二緩存包括內(nèi)存和/或磁盤。
[0016]優(yōu)選的,在將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中之前,該方法還包括:
[0017]根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù)。
[0018]本發(fā)明實施例另一方面還提供一種數(shù)據(jù)存儲系統(tǒng),該系統(tǒng)包括:包括第一緩存、第二緩存和磁盤,以及:[0019]第一控制單元,用于將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列;
[0020]第二控制單元,用于控制所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存中;
[0021]第三控制單元,用于當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。
[0022]優(yōu)選的,所述預(yù)設(shè)條件包括:
[0023]第二緩存中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值;或者,
[0024]第二緩存中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值;或者,
[0025]存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值。
[0026]優(yōu)選的,所述第一緩存包括內(nèi)存和/或磁盤。
[0027]優(yōu)選的,所述第二緩存包括內(nèi)存和/或磁盤。
[0028]優(yōu)選的,該系統(tǒng)還包括:
[0029]預(yù)處理單元,用于在所述第一控制單元將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中之前,根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù),將該文件系統(tǒng)數(shù)據(jù)發(fā)送給所述第一控制單元。
[0030]本發(fā)明實施例采用的技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
[0031]本發(fā)明實施例通過采用內(nèi)存緩存、硬盤存儲相結(jié)合的方式來保證緩存數(shù)據(jù)的完整性,同時采用事件的模式來保證關(guān)鍵數(shù)據(jù)區(qū)與緩存同步。
[0032]在存儲介質(zhì)上設(shè)定兩塊空間分別為第一緩存以及第二緩存作為關(guān)鍵數(shù)據(jù)的緩存區(qū)域,存儲關(guān)鍵數(shù)據(jù)的修改記錄,并建立所述修改記錄與修改信息的對應(yīng)關(guān)系;將關(guān)鍵數(shù)據(jù)存儲到第一緩存,并記錄第一緩存上關(guān)鍵數(shù)據(jù)的修改狀況,獲取關(guān)鍵數(shù)據(jù)并將所述關(guān)鍵數(shù)據(jù)存儲到第一緩存,以及將所述第一緩存的狀態(tài)修改為已存儲;將存儲的數(shù)據(jù)中的關(guān)鍵數(shù)據(jù)的修改記錄保存到事件列隊中,根據(jù)存儲的所述修改記錄,獲取所述關(guān)鍵數(shù)據(jù)對應(yīng)的修改信息,并將所述修改信息存儲到第二緩存;判斷所述第二緩存存儲的所述關(guān)鍵數(shù)據(jù)的修改信息量與設(shè)定值的關(guān)系;當(dāng)達(dá)到所述設(shè)定值時,將所述第二緩存的所述關(guān)鍵數(shù)據(jù)塊存儲到硬盤存儲器中。
[0033]本發(fā)明采用的方法可以避免文件系統(tǒng)在短時間內(nèi)大量操作關(guān)鍵數(shù)據(jù)區(qū),如短時間內(nèi)大量刪除文件導(dǎo)致的關(guān)鍵數(shù)據(jù)頻繁改寫,從而由于操作耗時太長影響文件系統(tǒng)的性能;由于文件操作直接操作內(nèi)存在緩存區(qū),無需等待文件系統(tǒng)關(guān)鍵數(shù)據(jù)寫入成功,因此不影響文件操作性能,而且當(dāng)達(dá)到設(shè)定值時,一次將第二緩存的關(guān)鍵數(shù)據(jù)存儲到硬盤的存儲關(guān)鍵數(shù)據(jù)區(qū)上,因此每次從緩存同步到關(guān)鍵數(shù)據(jù)區(qū)的數(shù)據(jù)都是完整的,可以保證關(guān)鍵數(shù)據(jù)的完整性,避免了因異常斷電所引起的文件系統(tǒng)崩潰。
【專利附圖】
【附圖說明】
[0034]圖1為本發(fā)明實施例提供的數(shù)據(jù)存儲方法的流程流程圖;
[0035]圖2為本發(fā)明實施例提供的數(shù)據(jù)存儲方法的原理示意圖;
[0036]圖3為本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的結(jié)構(gòu)示意圖。【具體實施方式】
[0037]本發(fā)明實施例提供一種數(shù)據(jù)存儲方法及系統(tǒng),用以提高文件操作的響應(yīng)速度。
[0038]下面結(jié)合【具體實施方式】及附圖對本發(fā)明提供的一種方法及系統(tǒng)進(jìn)行描述。
[0039]如圖1所示,為本發(fā)明實施例一提供的一種數(shù)據(jù)存儲方法流程圖,包括以下步驟:
[0040]步驟101:將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列;
[0041]步驟102:所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存中;
[0042]其中,所述事件的執(zhí)行結(jié)果,即執(zhí)行該事件所得到的文件系統(tǒng)數(shù)據(jù),該文件系統(tǒng)數(shù)據(jù)原來存儲在第一緩存中。
[0043]步驟103:當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。
[0044]較佳地,所述預(yù)設(shè)條件包括:
[0045]第二緩存中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值,數(shù)據(jù)量閾值例如4K,如果內(nèi)存比較大,且斷電時可以容忍的文件丟失數(shù)目比較大,可以增加個數(shù),否則減少個數(shù);或者,
[0046]第二緩存中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值,個數(shù)閾值例如10個如果內(nèi)存比較大,且斷電時可以容忍的文件丟失數(shù)目比較大,可以增加個數(shù),否則減少個數(shù);或者,
[0047]存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值,時間閾值例如I秒鐘一次,視具體需求,如果文件系統(tǒng)數(shù)據(jù)修改頻繁可以減少時間,否則加大時間。
[0048]較佳地,所述第一緩存包括內(nèi)存和/或磁盤。
[0049]較佳地,所述第二緩存包括內(nèi)存和/或磁盤。
[0050]本發(fā)明實施例提供的數(shù)據(jù)存儲方法,較佳地,針對對于系統(tǒng)來說重要的數(shù)據(jù)(特指文件系統(tǒng)數(shù)據(jù),而不是錄像數(shù)據(jù)),并非針對全部數(shù)據(jù),上述數(shù)據(jù)的不完整有可能造成系統(tǒng)癱瘓等風(fēng)險。
[0051]因此,較佳地,在將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中之前,該方法還包括:
[0052]根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù)(以下簡稱關(guān)鍵數(shù)據(jù)),例如,例如創(chuàng)建一個文件時,需要修改文件系統(tǒng)的索引,下次打開的時候就需要通過這個索引值去找到文件。
[0053]也就是說,在存儲關(guān)鍵數(shù)據(jù)的修改記錄(所謂修改記錄,即用于描述將關(guān)鍵數(shù)據(jù)存儲到第一緩存中這一操作的事件)之前,還包括:獲取關(guān)鍵數(shù)據(jù),并將所述關(guān)鍵數(shù)據(jù)存儲到第一緩存;將存儲的數(shù)據(jù)中的關(guān)鍵數(shù)據(jù)的修改記錄保存到事件列隊中,所述修改記錄中至少包括:所述關(guān)鍵數(shù)據(jù)的地址信息,并建立對應(yīng)所述地址信息與所述關(guān)鍵數(shù)據(jù)的修改記錄的映射關(guān)系;根據(jù)所述關(guān)鍵數(shù)據(jù)的地址信息,獲取所述事件列隊中對應(yīng)所述地址的關(guān)鍵數(shù)據(jù)修改記錄信息;將所述關(guān)鍵數(shù)據(jù)修改記錄存儲到內(nèi)存的第二緩存。
[0054]較佳地,步驟103具體包括:判斷所述第二緩存存儲的所述關(guān)鍵數(shù)據(jù)的修改信息量與設(shè)定值的關(guān)系,具體包括:實時或周期性的監(jiān)測所述第二緩存存儲的所述關(guān)鍵數(shù)據(jù)的修改信息的數(shù)量;當(dāng)判斷出監(jiān)測到的所述第二緩存存儲的所述關(guān)鍵數(shù)據(jù)的修改信息的數(shù)量達(dá)到設(shè)定值時,將所述關(guān)鍵數(shù)據(jù)塊存儲到硬盤存儲器中。
[0055]或者,由于監(jiān)測關(guān)鍵數(shù)據(jù)以及其修改信息是否已經(jīng)完全拷貝到第二緩存,可以有多種方式,除上述提到的監(jiān)測數(shù)量之外,還可以監(jiān)測關(guān)鍵數(shù)據(jù)發(fā)生變化的時間,如果超過了設(shè)定時長范圍,則確定出對應(yīng)存儲文件的關(guān)鍵數(shù)據(jù)已完全存儲到了第二緩存,因此可以將第二緩存的關(guān)鍵數(shù)據(jù)一次存儲到硬盤的關(guān)鍵數(shù)據(jù)塊區(qū)。
[0056]或者,步驟103具體包括:實時監(jiān)測所述第二緩存存儲的所述關(guān)鍵數(shù)據(jù)數(shù)量發(fā)生變化的時間;當(dāng)判斷出監(jiān)測出的所述關(guān)鍵數(shù)據(jù)數(shù)量發(fā)生變化的時間達(dá)到設(shè)定值時,將所述關(guān)鍵數(shù)據(jù)塊存儲到硬盤存儲器中。
[0057]參見圖2,為本發(fā)明實施例提供的數(shù)據(jù)存儲方法的原理示意圖。
[0058]在根據(jù)存儲的所述修改記錄,獲取所述關(guān)鍵數(shù)據(jù)對應(yīng)的修改信息(包括文件系統(tǒng)索引等文件系統(tǒng)數(shù)據(jù)),并將所述修改信息存儲到第二緩存同時,還可以獲取關(guān)鍵數(shù)據(jù),并將所述關(guān)鍵數(shù)據(jù)存儲到第一緩存。也就是說,可以在第一緩存接收數(shù)據(jù)的同時,還可以將關(guān)鍵數(shù)據(jù)的修改內(nèi)容存儲到第二緩存,通過至少兩個線程來實現(xiàn)。
[0059]另外,將所述關(guān)鍵數(shù)據(jù)修改記錄存儲到第二緩存之后,還包括:清空第二緩存上存儲的關(guān)鍵數(shù)據(jù),并將所述第二緩存的狀態(tài)標(biāo)記為已清空。
[0060]在接收到關(guān)鍵數(shù)據(jù)之后將第一緩存的狀態(tài)修改為已使用或者已存儲,表示出當(dāng)前的第一緩存是在使用接收數(shù)據(jù)的狀態(tài);在將關(guān)鍵數(shù)據(jù)存儲到第二緩存之后,也將第二緩存的狀態(tài)標(biāo)識修改為已存儲。
[0061]將所述關(guān)鍵數(shù)據(jù)修改記錄存儲到第二緩存之后,還包括:清空第二緩存上存儲的關(guān)鍵數(shù)據(jù),并將所述第二緩存的狀態(tài)標(biāo)記為已清空。
[0062]本發(fā)明實施例另一方面還提供一種數(shù)據(jù)存儲系統(tǒng),如圖3所示,該系統(tǒng)包括:第一緩存11、第二緩存12和磁盤13,以及:
[0063]第一控制單元14,用于將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存11中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列;
[0064]第二控制單元15,用于控制所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存12中;
[0065]第三控制單元16,用于當(dāng)滿足預(yù)設(shè)條件時,將第二緩存12中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤13中。
[0066]較佳的,所述預(yù)設(shè)條件包括:
[0067]第二緩存12中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值;或者,
[0068]第二緩存12中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值;或者,
[0069]存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值。
[0070]較佳的,所述第一緩存11包括內(nèi)存和/或磁盤。
[0071]較佳的,所述第二緩存12包括內(nèi)存和/或磁盤。
[0072]較佳的,該系統(tǒng)還包括:
[0073]預(yù)處理單元10,用于在所述第一控制單元14將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存11中之前,根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù),將該文件系統(tǒng)數(shù)據(jù)發(fā)送給所述第一控制單元14。
[0074]綜上所述,本發(fā)明實施例具有以下優(yōu)點:
[0075]采用本發(fā)明實施例通過采用內(nèi)存緩存、硬盤存儲相結(jié)合的方式來保證緩存數(shù)據(jù)的完整性,同時采用事件的模式來保證關(guān)鍵數(shù)據(jù)區(qū)與緩存同步的方法,有效地避免了因異常斷電所引起的文件系統(tǒng)崩潰,并且還不會因為短時間內(nèi)對大量文件進(jìn)行操作導(dǎo)致關(guān)鍵數(shù)據(jù)頻繁改寫,從而影響文件系統(tǒng)的穩(wěn)定性。
[0076]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)存儲方法,其特征在于,包括以下步驟: 將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列; 所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存中; 當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)條件包括: 第二緩存中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值;或者, 第二緩存中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值;或者, 存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一緩存包括內(nèi)存和/或磁盤。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第二緩存包括內(nèi)存和/或磁盤。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中之前,該方法還包括: 根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù)。
6.一種數(shù)據(jù)存儲系統(tǒng),其特征在于,該系統(tǒng)包括第一緩存、第二緩存和磁盤,以及: 第一控制單元,用于將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中,并創(chuàng)建用于描述該操作的事件,將該事件發(fā)送到存儲文件系統(tǒng)數(shù)據(jù)的線程的隊列; 第二控制單元,用于控制所述線程從所述隊列中獲取一個事件并執(zhí)行該事件,將事件的執(zhí)行結(jié)果存儲到第二緩存中; 第三控制單元,用于當(dāng)滿足預(yù)設(shè)條件時,將第二緩存中存儲的文件系統(tǒng)數(shù)據(jù)存儲到磁盤中。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述預(yù)設(shè)條件包括: 第二緩存中存儲的數(shù)據(jù)量達(dá)到預(yù)設(shè)的數(shù)據(jù)量閾值;或者, 第二緩存中存儲的事件的執(zhí)行結(jié)果的個數(shù)達(dá)到預(yù)設(shè)的個數(shù)閾值;或者, 存儲文件系統(tǒng)數(shù)據(jù)的線程的處理時間超過預(yù)設(shè)的時間閾值。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一緩存包括內(nèi)存和/或磁盤。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述第二緩存包括內(nèi)存和/或磁盤。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,該系統(tǒng)還包括: 預(yù)處理單元,用于在所述第一控制單元將文件系統(tǒng)數(shù)據(jù)存儲到第一緩存中之前,根據(jù)用戶操作確定當(dāng)前需要存儲的文件系統(tǒng)數(shù)據(jù),將該文件系統(tǒng)數(shù)據(jù)發(fā)送給所述第一控制單J Li o
【文檔編號】G06F12/14GK103514112SQ201210223346
【公開日】2014年1月15日 申請日期:2012年6月29日 優(yōu)先權(quán)日:2012年6月29日
【發(fā)明者】姚國勤, 陳小軍, 吳立, 楊斌, 張興明, 傅利泉, 朱江明, 吳軍, 吳堅 申請人:浙江大華技術(shù)股份有限公司