專利名稱:用于處理順序文件的方法和裝置的制作方法
技術領域:
本發明涉及用于處理塊型存儲設備中儲存的順序文件的方法。本發明還涉及用于處理塊型存儲設備中儲存的順序文件的裝置。
背景技術:
順序文件是指這樣的文件其通過文件末尾附加的添加部分而更新。順序文件例如是日記或日志文件,在其末尾有按時間順序添加的事件注釋。在文件系統中,文件包括元數據,其指的是與文件所包含的數據(下面稱為有效載荷數據)相關聯的事件。例如,元數據可以表示其中可以找到有效載荷數據的存儲設備中的地址空間,與錯誤檢測和/或其他錯誤指示相關聯的檢驗和、文件最后更新時間、允許有效載荷被讀取和/或改變的條件、以及文件大小和/或有關文件的其他結構信息。
塊型存儲設備的典型特點是其中儲存的數據或應該在其中儲存的數據的處理是一個存儲塊接著一個存儲塊地執行的。在塊型存儲設備中,單個存儲塊表示所述存儲設備中地址空間的給定共享的存儲容量。塊型存儲設備例如是閃存型微電路存儲器和磁盤。存儲塊中重復的寫操作耗損了塊型存儲設備。存儲設備中單一存儲塊只耐受有限數量的寫操作。換句話說,當寫操作十分頻繁地被重復時,存儲塊被耗損。即使在存儲設備中只有一個存儲塊被耗損掉的情況下,通常整個存儲設備,諸如閃存型微電路存儲器或磁盤,必須被替換。此外,例如與閃存型微電路存儲器或磁盤相聯系的經常重復的寫操作降低了可用存儲塊的數量。在閃存型微電路中,存儲設備中任何字節都可以被寫和讀,而不用管所述存儲塊的其他字節。當設置字節或比特時,其直到整個存儲塊被清空才能被改變。清空存儲塊是比從存儲塊讀取數據慢得多的操作。在需要改變給定存儲塊中包含的數據的情況下,所述存儲塊必須首先被清空,然后才能寫入改變的數據。可以解決導致的速度問題,使得在另一個已經清空的存儲塊中寫入改變的數據,在此情況中,較早使用的存儲塊只需要在文件更新后被清空。但是,重復清空和寫操作導致正在被清空或等待被清空的存儲塊數量在任何給定時刻都很巨大,這就會降低可用存儲塊的數量。
現有技術在現有技術的文件控制系統中,與順序文件相關聯的元數據位于完全或部分地為所述元數據而保留的存儲塊中。結果,當新的有效載荷數據添加到順序文件中,例如將新的日記條目添加到日記文件中時,向存儲設備的寫操作必須被引導到兩個不同的存儲塊中-包含較早寫入的有效載荷數據的結束位置的存儲塊,以及-包含元數據的存儲塊。
在本申請文件中,有效載荷數據的結束位置意味著在所述有效載荷中最后添加的數據。
結果,現有技術的問題是一個順序文件更新操作需要進行在兩個存儲塊中的寫操作。如在本文的前面已經提到的,寫操作導致存儲設備的耗損以及可用存儲塊的減少。
發明內容
本發明涉及一種用于處理儲存在塊型存儲設備中的順序文件的方法,通過該方法可以消除或克服同現有技術相關聯的限制和不足。本發明還涉及一種用于處理儲存在塊型存儲設備中順序文件的裝置,通過該裝置可以消除或克服同現有技術相關聯的限制和不足。本發明還涉及一種設計用于處理儲存在塊型存儲設備中順序文件的計算機程序,通過該程序可以消除或克服同現有技術相關聯的限制和不足。
在本發明中,驚喜地發現,通過放置與包含有效載荷數據的結束位置的塊型存儲設備的存儲塊中的順序文件相關聯的元數據,與更新所述順序文件相關聯的寫操作在幾乎所有情形中都只需要被導引至存儲設備的一個存儲塊中,所述存儲塊是包含有效載荷數據的結束位置的存儲塊。執行更新,使得新有效載荷數據順序添加到更新之前有效載荷數據的結束位置,新的元數據順序添加在添加的有效載荷數據之后。
只有在罕見場合下,添加的有效載荷數據在更新之前不適合包含有效載荷數據的結束位置的存儲塊的可用自由空間,寫操作才必須引導至兩個存儲塊。在上述描述中,假定元數據的字節量關于更新是不發生改變的。為了舉例,讓我們假定,存儲塊的大小是4千字節,要添加的有效載荷數據平均為100字節。現在寫操作必須被引導至兩個存儲塊的情形的可能性大約是2.5%。
利用本發明可獲得以下的優點-擴展塊型存儲設備的工作壽命,因為引導至存儲塊的寫操作的數量與現有技術相比實際上削減到了一半,-磁盤存儲器中使用的讀寫頭(writer head)的耗損低于現有技術,因為讀寫頭轉換的次數與現有技術相比實際上削減到了一半,以及-閃存型存儲設備中可用存儲塊的數量高于現有技術,因為在給定觀察時刻,正在被清空或者等待被清空的存儲塊的數量小于根據現有技術的配置。
根據本發明的用于處理儲存在塊型存儲設備中的順序文件的方法,其特征在于,在所述塊型存儲設備的存儲塊中寫入與所述順序文件相關聯的元數據,該存儲塊包含所述順序文件中包含的有效載荷數據的結束位置。
根據本發明的用于處理儲存在塊型存儲設備中的順序文件的裝置,其特征在于,該裝置包括用于儲存所述順序文件的塊型存儲設備以及安排用于將與所述順序文件相關聯的元數據寫入塊型存儲設備的存儲塊中的處理器,該存儲塊包含在所述順序文件中包含的有效載荷數據的結束位置。
根據本發明的用于處理儲存在塊型存儲設備中的順序文件的計算機程序,其特征在于,該計算機程序包括用于指令可編程處理器將與所述順序文件相關聯的元數據寫入所述塊型存儲設備的存儲塊中的軟件工具,其中該存儲塊包括所述順序文件中包含的有效載荷數據的結束位置。
本發明的各種實施例的特征如從屬權利要求中所述。
下面結合優選實施例,更加詳細地描述本發明,這些優選實施例是通過舉例并結合附圖來圖示說明的,在附圖中圖1圖示說明了根據本發明的方法中塊型存儲設備的存儲空間中元數據的位置的示例情況,圖2a和2b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的更新的原理圖,圖3a和3b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的更新的原理圖,圖4a和4b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的更新的原理圖,以及圖5圖示說明了用于處理順序文件的本發明的實施例的裝置。
具體實施例方式
圖1圖示說明了根據本發明的方法中塊型存儲設備的存儲空間中的元數據的位置的示例情況。箭頭107指示存儲地址增長的方向。標號101和102表示存儲塊。存儲塊102包含所述順序文件中所包括的有效載荷數據(圖中“數據”)103的結束位置104。有效載荷數據103只表示包含在存儲塊102中的順序文件的有效載荷數據的共享。其他存儲塊也可包含有效載荷數據,沒有在圖1中示出。結束位置104之后是元數據(M)106。存儲空間108的區域可以是自由的。
在根據本發明實施例的方法中,元數據106包含文件標記(EOF)105的結束。由于文件標記的結束,可以通過線性搜索來搜索有效載荷數據104的結束位置,而不是精確的結束位置地址數據。所述結束位置可以在更新的順序文件中找到,如果已知與順序文件相關聯的地址,線性搜索可從該地址開始,例如原始順序文件中各個結束位置的地址,或者順序文件的文件位置的起始的地址。線性結束位置搜索可以在例如開啟裝置時執行,此后找到的結束位置地址可以例如儲存在處理器的工作或臨時存儲器中。在該情況下,更新中發生改變的新的結束位置地址不需要儲存在例如觀察中的塊型存儲設備中,由此,所述改變的結束位置地址應該在啟動裝置時直接可讀。
圖2a和2b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的更新的原理圖。圖2a圖示說明了更新之前的情況。箭頭207指示存儲地址的增長的方向。存儲塊202包含所述順序文件中有效載荷數據(D0)203的結束位置204。結束位置204之后是元數據(M0)206,對應于更新前的情況。存儲空間208的區域可以是自由的。
圖2b圖示說明了更新后的情況。通過在存儲塊202中緊接著先前的有效載荷數據203寫入要添加到順序文件中的有效載荷數據(D1)209,以及緊接著要添加的有效載荷數據209添加與更新后的順序文件相關聯的元數據(M1)211,從而更新順序文件。存儲空間212的區域可以是自由的。在圖2b所圖示說明的情況中,有效載荷數據的結束是在位置213。
當存儲空間208的自由區域不足以添加有效載荷數據209時,必須保留至少一個存儲塊以便保存更新后的順序文件。
圖3a和3b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的更新的原理圖。圖3a和3b中圖示說明的實施例特別適用于閃存型微電路存儲器,其中可以讀和寫給定存儲塊的單個字節,而不用管所述存儲塊中包含的其他字節。當設置字節或比特時,其直到整個存儲塊被清空才會改變。存儲塊的清空是比從存儲塊讀取數據慢得多的操作。在這個實施例中,導致的速度問題得到了解決,使得改變的數據寫入了另一個已經清空的存儲塊中,在此情況下,較早使用存儲塊只需要在文件更新之后和/或作為文件更新的后臺操作被清空。
圖3a圖示說明了更新之前的情況。存儲塊301包含所述順序文件的有效載荷數據(D0)302的結束位置303。結束位置303之后是元數據(M0)305,對應于更新之前的情況。存儲空間306的區域可以是自由的。存儲塊307是清空的存儲塊,位于地址空間中與存儲塊301不同的地點。存儲塊301和307可以鄰近或者有一段距離,使得在存儲塊301和307之間,有一個或幾個存儲塊。
圖3b圖示說明了更新之后的情況。通過在存儲塊307中寫入以下數據來更新順序文件-有效載荷數據302(D0),包含在存儲塊301中;-要添加在順序文件中的有效載荷數據(D1)308,在有效載荷數據302之后,以及-與更新后的順序文件相關聯的元數據(M1)310,緊接著要添加的有效載荷數據的結束位置311。
命令存儲塊301清空。有利的是,清空被執行為后臺操作,與上述更新操作無關。
圖4a和4b圖示說明了根據本發明實施例的方法中塊型存儲設備中儲存的順序文件的保存的原理圖。在圖4a所示的情況中,包含所述順序文件的存儲塊緊接著位于塊型存儲設備的地址空間之后。一個方形表示一存儲塊,例如標號401所指示的方形。加黑的區域402表示包含所述順序文件的存儲塊。在圖4b所示的情況中,包含所述順序文件的存儲塊,如圖4b中加黑所示,分布在塊型存儲設備的地址空間中。圖4a和4b圖示說明了塊型存儲器的存儲空間中的僅僅一個順序文件的原理位置。在實際系統中,一個塊型存儲設備包含若干個儲存的順序文件。
在本發明實施例中,可以通過分層索引結構到達各文件。根級索引包含下一級索引以及邏輯地址的列表,其中可以找到每一索引。如果索引中包括的名稱不表示索引的話,所述名稱表示的是文件,并且鏈接的邏輯地址指的是所述文件的元數據。如果元數據在更新過程中傳送到不同的存儲塊,指示所述元數據的邏輯地址也會在系統的工作存儲器中得到更新。
圖5圖示說明了根據本發明實施例用于處理順序文件的裝置。該裝置包括用于保存所述順序文件的塊型存儲設備501和安排用于在包含所述順序文件的有效載荷數據的結束位置的所述塊型存儲設備的存儲塊中寫入與所述順序文件相關聯的元數據的處理器502。在處理器502和存儲設備之間,安排有總線503,處理器和存儲設備通過該總線進行通信。
在根據本發明實施例的裝置中,所述塊型存儲設備501是閃存型微電路存儲器。
在根據本發明實施例的裝置中,所述塊型存儲設備501是磁盤。
在根據本發明實施例的裝置中,所述處理器502被安排為通過在包含所述順序文件的有效載荷數據的結束位置的所述塊型存儲設備的存儲塊中寫入要在順序文件中添加的有效載荷數據以及與順序文件相關聯的元數據,來更新所述順序文件。
在根據本發明實施例的裝置中,所述處理器502被安排為通過命令包含所述順序文件在更新之前的有效載荷數據的結束位置的所述存儲設備中的存儲塊清空,并且在所述塊型存儲設備的另一存儲塊中寫入所述存儲塊中包含的有效載荷數據、要在順序文件中添加的有效載荷數據以及與更新后的順序文件相關聯的元數據,來更新所述順序文件。
在根據本發明實施例的裝置中,所述處理器502被安排為選擇包含所述順序文件的存儲塊,其位于緊接著所述塊型存儲設備的地址空間之后。
在根據本發明實施例的裝置中,所述處理器502被安排為選擇包含所述順序文件的存儲塊,其分布在所述塊型存儲設備的地址空間中。
在根據本發明實施例的裝置中,所述處理器502是可編程處理器,裝置提供有存儲設備504,用于儲存控制該處理器的計算機程序。在根據本發明替換實施例的裝置中,所述處理器502具有內部存儲器,用于儲存控制該處理器的計算機程序。在根據本發明另一替換實施例的裝置中,所述處理器502是基于一個或若干個ASIC電路(專用集成電路)和/或FPGA部件(現場可編程門陣列)的設備,設備的操作控制基于邏輯門之間的連接,在此情況下不需要計算機程序。
根據本發明實施例的計算機程序包括軟件工具,諸如子程序和函數,用于控制處理器502,以便在包含順序文件中包含的有效載荷數據的結束位置的塊型存儲設備的存儲塊中寫入與順序文件相關聯的元數據。
對于本領域技術人員來說,本發明及其各種實施例顯然不限于上述的示例實施例,實際上,本發明及其實施例可以在獨立權利要求的范圍內進行變化。
權利要求
1.一種用于處理儲存在塊型存儲設備中的順序文件的方法,其特征在于,在所述塊型存儲設備的存儲塊中寫入與所述順序文件相關聯的元數據(106),該存儲塊包含所述順序文件中包含的有效載荷數據(103)的結束位置(104)。
2.根據權利要求1所述的方法,其特征在于,通過以下步驟來更新所述順序文件將要添加到順序文件中的有效載荷數據(209)和與更新后的順序文件相關聯的元數據(211)寫入到所述塊型存儲設備的存儲塊(202)中,其中所述存儲塊(202)包含在更新前順序文件中包含的有效載荷數據的結束位置(204)。
3.根據權利要求1所述的方法,其特征在于,通過以下步驟來更新所述順序文件命令包含在更新前所述順序文件中包含的有效載荷數據的結束位置(303)的所述存儲設備的存儲塊(301)清空,并且將所述存儲塊中包含的有效載荷數據(302)、要添加在順序文件中的有效載荷數據(308)以及與更新后的順序文件相關聯的元數據(310)寫入到所述塊型存儲設備的另一存儲塊(307)中。
4.根據權利要求1所述的方法,其特征在于,包含所述順序文件的存儲塊緊接著位于所述塊型存儲設備的地址空間之后。
5.根據權利要求1所述的方法,其特征在于,包含所述順序文件的存儲塊以分布的方式位于所述塊型存儲設備的地址空間中。
6.一種用于處理順序文件的裝置,其特征在于,該裝置包括用于儲存所述順序文件的塊型存儲設備(501)以及被安排用于將與所述順序文件相關聯的元數據寫入塊型存儲設備的存儲塊中的處理器(502),該存儲塊包含在所述順序文件中包含的有效載荷數據的結束位置。
7.根據權利要求6所述的裝置,其特征在于,所述塊型存儲設備是閃存型微電路存儲器。
8.根據權利要求6所述的裝置,其特征在于,所述塊型存儲設備是磁盤。
9.根據權利要求6所述的裝置,其特征在于,所述處理器被安排用于更新所述順序文件,包括將要添加到順序文件中的有效載荷數據以及與更新后的順序文件相關聯的元數據寫入到塊型存儲設備的存儲塊中,所述存儲塊包含在更新前順序文件中包含的有效載荷數據的結束位置。
10.根據權利要求6所述的裝置,其特征在于,所述處理器被安排用于更新所述順序文件,包括命令包含在更新前所述順序文件中包含的有效載荷數據的結束位置的存儲設備的存儲塊清空,并且將所述存儲塊中包含的有效載荷數據、要添加到順序文件中的有效載荷數據以及與更新后的順序文件相關聯的元數據寫入到所述塊型存儲設備的另一存儲塊中。
11.根據權利要求6所述的裝置,其特征在于,所述處理器被安排用于選擇包含所述順序文件的存儲塊緊接著位于所述塊型存儲設備的地址空間之后。
12.根據權利要求6所述的裝置,其特征在于,所述處理器被安排用于選擇包含所述順序文件的存儲塊以分布的方式位于所述塊型存儲設備的地址空間中。
13.根據權利要求6所述的裝置,其特征在于,所述處理器是可編程處理器,并且所述裝置包括用于儲存用來控制所述處理器的計算機程序的存儲設備。
14.一種用于處理儲存在塊型存儲設備中的順序文件的計算機程序,其特征在于,該計算機程序包括用于指令可編程處理器將與所述順序文件相關聯的元數據寫入所述塊型存儲設備的存儲塊中的軟件工具,其中該存儲塊包含所述順序文件中包含的有效載荷數據的結束位置。
全文摘要
本發明涉及用于處理儲存在塊型存儲設備中的順序文件的方法和裝置。在本發明中,驚喜地發現,通過將與所述順序文件相關聯的元數據(106)儲存在包含有效載荷數據(103)的結束位置(104)的所述塊型存儲設備的存儲塊中,與所述順序文件相關聯的寫操作幾乎在所有情形下只需要被引導至存儲設備的一個存儲塊,所述存儲塊是包含有效載荷數據的結束位置的存儲塊。
文檔編號G06F17/30GK101067821SQ20071010095
公開日2007年11月7日 申請日期2007年4月28日 優先權日2006年5月3日
發明者馬蒂·哈利沃里 申請人:特拉博斯股份有限公司