專利名稱:一種固定空間分配的文件存儲系統(tǒng)及實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)多媒體技術(shù)領(lǐng)域,特別是涉及一種固定空間分配的文件存儲系統(tǒng)及實(shí)現(xiàn)方法。
背景技術(shù):
現(xiàn)有的數(shù)據(jù)存儲系統(tǒng)大多數(shù)都是基于文件的存儲系統(tǒng),存儲數(shù)據(jù)的穩(wěn)定性主要基于文件系統(tǒng)本身。在這種基于文件的存儲系統(tǒng)中,存在一個(gè)文件索引區(qū),這個(gè)區(qū)儲存著所有數(shù)據(jù)的相關(guān)信息,包括位置,大小,存入時(shí)間,等等。在數(shù)據(jù)存儲過程中,需要不斷地對該文件索引信息進(jìn)行改寫,在這種情況下,當(dāng)突然發(fā)生斷電或者系統(tǒng)死機(jī)時(shí),文件索引信息未來得及保存,從而可能導(dǎo)致整個(gè)文件存儲系統(tǒng)的崩潰,尤其是在現(xiàn)在一些特殊的存儲設(shè)備中,如SD卡,其數(shù)據(jù)的穩(wěn)定性又與物理數(shù)據(jù)塊的讀寫次數(shù)有非常大的關(guān)系。 目前可使用裸設(shè)備作為基礎(chǔ)進(jìn)行存儲系統(tǒng)的設(shè)計(jì)以解決存儲數(shù)據(jù)的穩(wěn)定性,裸設(shè)備的方式是將整體儲存區(qū)域當(dāng)作一個(gè)空間,設(shè)計(jì)者可以依據(jù)自有的規(guī)范讀寫數(shù)據(jù),其下層開發(fā)需要基于操作系統(tǒng)提供的接口,而對于上層的開發(fā),裸設(shè)備的操作接口往往是不可見的,這在很大程度上增加了開發(fā)的難度。
發(fā)明內(nèi)容
為解決上述現(xiàn)有技術(shù)中的問題,本發(fā)明設(shè)計(jì)了一種固定空間分配的文件存儲系統(tǒng),以解決存儲數(shù)據(jù)的穩(wěn)定性問題。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提出了這樣一種技術(shù)方案一種固定空間分配的文件存儲系統(tǒng),包括系統(tǒng)初始化模塊、文件單元和讀/寫模塊;
其中系統(tǒng)初始化模塊,主要用于獲取磁盤信息、對文件分配固定空間。文件單元包括頭文件和數(shù)據(jù)文件,頭文件記錄數(shù)據(jù)文件的信息列表,主要是數(shù)據(jù)文件的使用狀態(tài);數(shù)據(jù)文件包括索引部分和數(shù)據(jù)部分,索引部分記錄數(shù)據(jù)文件的數(shù)據(jù)部分的使用信息和地址信息。讀/寫模塊,主要功能是通過查詢頭文件信息列表獲取讀/寫的數(shù)據(jù)文件,查詢該數(shù)據(jù)文件的索引部分中記錄的使用信息和地址信息,從而獲取讀/寫數(shù)據(jù)的地址,根據(jù)該地址讀取或?qū)懭霐?shù)據(jù)。進(jìn)一步地,數(shù)據(jù)部分的使用信息包括數(shù)據(jù)標(biāo)簽。數(shù)據(jù)文件的使用狀態(tài)分為已使用、正在使用和未使用三種
進(jìn)一步地,讀/寫模塊由磁盤管理子模塊、數(shù)據(jù)文件管理子模塊、索引管理子模塊、數(shù)據(jù)管理子模塊組成,其中,磁盤管理子模塊,用于管理頭文件,對數(shù)據(jù)文件的信息列表進(jìn)行管理;數(shù)據(jù)文件管理子模塊,用于管理數(shù)據(jù)文件,對各數(shù)據(jù)文件的索引部分和數(shù)據(jù)部分進(jìn)行管理;索引管理子模塊,用于管理數(shù)據(jù)文件的索引部分;數(shù)據(jù)管理子模塊,用于向數(shù)據(jù)文件的數(shù)據(jù)部分讀/寫數(shù)據(jù)。本發(fā)明還提供了一種固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,包括
步驟(I):系統(tǒng)初始化獲取磁盤信息,對文件的固定空間進(jìn)行分配,并創(chuàng)建文件單元; 步驟(2):完成數(shù)據(jù)文件中數(shù)據(jù)的讀/寫。進(jìn)一步地,在步驟(I)中,文件單元包括頭文件和數(shù)據(jù)文件,系統(tǒng)初始化模塊創(chuàng)建的文件單元至少包括頭文件,即初始化頭文件的信息列表,記錄各數(shù)據(jù)文件的使用狀態(tài),文件單元中的數(shù)據(jù)文件可以在數(shù)據(jù)讀寫過程中逐漸創(chuàng)建。其中數(shù)據(jù)文件的使用狀態(tài)分為已使用、正在使用和未使用。更進(jìn)一步描述,在步驟(2)中數(shù)據(jù)的讀寫由讀/寫模塊完成,其中讀/寫模塊包括磁盤管理子模塊、數(shù)據(jù)文件管理子模塊、索引管理子模塊、數(shù)據(jù)管理子模塊;所述磁盤管理子模塊,用于管理頭文件,對數(shù)據(jù)文件的信息列表進(jìn)行管理;所述數(shù)據(jù)文件管理子模塊,用于管理數(shù)據(jù)文件,對各數(shù)據(jù)文件的索引部分和數(shù)據(jù)部分進(jìn)行管理;所述索引管理子模塊,用 于管理數(shù)據(jù)文件的索引部分;所述數(shù)據(jù)管理子模塊,用于向數(shù)據(jù)文件的數(shù)據(jù)部分讀/寫數(shù)據(jù)。當(dāng)讀/寫模塊完成寫操作時(shí),磁盤管理子單元接收到數(shù)據(jù)寫入命令后,通過調(diào)用數(shù)據(jù)文件管理子模塊查詢信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)使用狀態(tài)選擇目標(biāo)寫入文件;數(shù)據(jù)文件管理子模塊調(diào)用索引管理子模塊,查詢目標(biāo)寫入文件索引部分的地址信息,再發(fā)送寫入命令給數(shù)據(jù)管理子單元,向該地址信息寫入數(shù)據(jù)。同時(shí),在寫入數(shù)據(jù)后,更新索引部分中新寫入數(shù)據(jù)對應(yīng)的使用信息和地址信息。當(dāng)讀/寫模塊完成讀操作時(shí),磁盤管理子模塊接收到數(shù)據(jù)讀取命令后,通過調(diào)用數(shù)據(jù)文件管理子系統(tǒng)查詢信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)使用狀態(tài)選擇目標(biāo)讀取文件;數(shù)據(jù)文件管理子單元調(diào)用索引管理子單元,查詢目標(biāo)讀取文件的使用信息,通過使用信息對應(yīng)的地址信息,向數(shù)據(jù)管理子單元發(fā)送讀取命令讀取數(shù)據(jù)。本發(fā)明的有益效果是通過預(yù)先固定分配所有的空間,從而減少了對整個(gè)磁盤的索引操作,很大程度上提高了文件存儲系統(tǒng)的實(shí)時(shí)性與穩(wěn)定性,與現(xiàn)有技術(shù)相比,本發(fā)明更能適用于嵌入式設(shè)備的存儲應(yīng)用,解決數(shù)據(jù)讀/寫不穩(wěn)定的問題,取得最實(shí)時(shí)以及最高效的讀/寫效果。
圖I為文件存儲系統(tǒng)不意 圖2為數(shù)據(jù)文件單元組成 圖3為讀/寫模塊架構(gòu) 圖4為文件存儲系統(tǒng)的實(shí)現(xiàn)方法的流程圖。
具體實(shí)施例方式下面以VFAT文件為基礎(chǔ)的音視頻數(shù)據(jù)的存儲為具體實(shí)施例進(jìn)一步說明
本文件存儲系統(tǒng)由文件單元、系統(tǒng)初始化模塊和讀寫模塊三部分組成。其中,文件單元
包括兩個(gè)部分,頭文件和數(shù)據(jù)文件,如圖I所示。定義頭文件為FILE0,數(shù)據(jù)文件為FILE1、FILE2、......、FILEn。頭文件FILEO中,存儲有所有數(shù)據(jù)文件FILE1、FILE2、......、FILEn
的信息列表,包括各數(shù)據(jù)文件的使用狀態(tài),其中使用狀態(tài)可以包括三種“未使用”、“已使用”和“正在使用”。各數(shù)據(jù)文件FILE1、FILE2、……、FILEn也包括兩個(gè)組成部分,索引部分Index和數(shù)據(jù)部分Data,如圖2所示,索引部分Index記錄了本數(shù)據(jù)文件的數(shù)據(jù)部分Data的使用信息和地址信息,其中使用信息可以為數(shù)據(jù)標(biāo)簽,在該實(shí)施例中,數(shù)據(jù)標(biāo)簽可以指音視頻數(shù)據(jù)產(chǎn)生的時(shí)間,地址信息用于記錄數(shù)據(jù)的地址,與數(shù)據(jù)標(biāo)簽相互對應(yīng)。該系統(tǒng)的系統(tǒng)初始化模塊主要獲取 磁盤信息和完成對文件的固定空間分配。例如,獲取SD卡的信息,并定義頭文件的大小為Akbyte,各數(shù)據(jù)文件的大小為Bkbyte,其中A與B可以相同,也可以不同,其大小可以依據(jù)實(shí)際需求而定,如針對錄像需求,可以將A,B都定義為32。既符合使用需求,又提高了性能,還能減少對硬盤的讀寫操作次數(shù)。然后根據(jù)大小來創(chuàng)建頭文件FILEO和數(shù)據(jù)文件FILEl、FILE2、……、FILEn,可選擇地,僅頭文件FILEO在系統(tǒng)初始化模塊中被創(chuàng)建,而各數(shù)據(jù)文件也可以在數(shù)據(jù)的讀寫過程中逐漸被創(chuàng)建。頭文件FILEO的創(chuàng)建主要是指,初始化頭文件中的信息列表,記錄各數(shù)據(jù)文件的使用狀態(tài)。由于所有的空間預(yù)先固定分配,也就減少了對磁盤的索引操作。該系統(tǒng)的讀/寫模塊完成數(shù)據(jù)文件FILE1、FILE2、……、FILEn中數(shù)據(jù)的讀/寫。通過查詢頭文件FILEO的信息列表中數(shù)據(jù)文件的使用狀態(tài)獲取可以讀/寫的數(shù)據(jù)文件,然后再查詢該數(shù)據(jù)文件的索引部分INDEX中記錄的使用信息和地址信息,就可以獲取讀/寫數(shù)據(jù)的地址,并根據(jù)該地址讀取或?qū)懭霐?shù)據(jù)。設(shè)計(jì)時(shí),寫入的規(guī)律是依次寫入,而且是FILEn寫滿,接著寫入FILEn+1。該讀/寫模塊如圖3所示,可以包括磁盤管理子單元、數(shù)據(jù)文件管理子單元、索引管理子單元、數(shù)據(jù)管理子單元。其中磁盤管理子單元用于管理頭文件FILE0,主要實(shí)現(xiàn)對頭文件中信息列表的管理,可以查找或修改信息列表中各數(shù)據(jù)文件對應(yīng)的空間大小及其使用狀態(tài)。數(shù)據(jù)文件管理子單元用于管理各數(shù)據(jù)文件FILE1、FILE2、……、FILEn,主要實(shí)現(xiàn)對各數(shù)據(jù)文件的索引部分INDEX和數(shù)據(jù)部分DATA的管理,可以接收索引管理子系統(tǒng)傳來的地址信息,向數(shù)據(jù)管理子單元發(fā)送讀/寫命令。索引管理子單元用于管理本數(shù)據(jù)文件的索引部分INDEX,可以查找或修改本數(shù)據(jù)文件中數(shù)據(jù)的讀/寫地址。數(shù)據(jù)管理子單元用于向數(shù)據(jù)文件的數(shù)據(jù)部分DATA讀寫數(shù)據(jù)。如圖4所示為本發(fā)明一種固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法的流程圖,包括
步驟(I):系統(tǒng)初始化獲取磁盤信息,對文件的固定空間進(jìn)行分配,并創(chuàng)建文件單元; 步驟(2):完成數(shù)據(jù)文件中數(shù)據(jù)的讀/寫。其中步驟(I)中的文件單元包括頭文件和數(shù)據(jù)文件,系統(tǒng)初始化模塊創(chuàng)建的文件單元至少包括頭文件,即初始化頭文件的信息列表,記錄各數(shù)據(jù)文件的使用狀態(tài),文件單元中的數(shù)據(jù)文件可以在數(shù)據(jù)讀寫過程中逐漸創(chuàng)建。上述的數(shù)據(jù)文件的使用狀態(tài)分為已使用、正在使用和未使用。在步驟(2)中的數(shù)據(jù)的讀/寫由讀/寫模塊完成,讀/寫模塊包括磁盤管理子模塊、數(shù)據(jù)文件管理子模塊、索引管理子模塊、數(shù)據(jù)管理子模塊;所述磁盤管理子模塊,用于管理頭文件,對數(shù)據(jù)文件的信息列表進(jìn)行管理;所述數(shù)據(jù)文件管理子模塊,用于管理數(shù)據(jù)文件,對各數(shù)據(jù)文件的索引部分和數(shù)據(jù)部分進(jìn)行管理;所述索引管理子模塊,用于管理數(shù)據(jù)文件的索引部分;所述數(shù)據(jù)管理子模塊,用于向數(shù)據(jù)文件的數(shù)據(jù)部分讀/寫數(shù)據(jù)。在寫入數(shù)據(jù)時(shí),磁盤管理子單元接收到數(shù)據(jù)寫入命令后,通過調(diào)用數(shù)據(jù)文件管理子系統(tǒng)查詢數(shù)據(jù)文件信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)該使用狀態(tài)選擇目標(biāo)寫入的數(shù)據(jù)文件。優(yōu)選地,以“正在使用”、“未使用”的優(yōu)先級順序選擇寫入的數(shù)據(jù)文件,例如當(dāng)數(shù)據(jù)文件FILEl對應(yīng)的使用狀態(tài)為“已使用”,數(shù)據(jù)文件FILE2對應(yīng)的使用狀態(tài)為“正在使用”時(shí),優(yōu)先選擇數(shù)據(jù)文件FILE2為目標(biāo)寫入文件。然后數(shù)據(jù)文件管理子單元調(diào)用索引管理子單元,通過索引管理子單元查詢目標(biāo)寫入文件FILE2索引部分INDEX中的最大的地址信息,再發(fā)送寫入命令給數(shù)據(jù)管理子單元,向該地址信息的下一地址寫入數(shù)據(jù),同時(shí)還更新索引部分INDEX中新寫入數(shù)據(jù)對應(yīng)的數(shù)據(jù)標(biāo)簽和地址信息。據(jù)此,完成了數(shù)據(jù)的寫入。在讀取數(shù)據(jù)時(shí),磁盤管理子單元接收到數(shù)據(jù)讀取命令后,通過調(diào)用數(shù)據(jù)文件管理 子系統(tǒng)查詢數(shù)據(jù)文件信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)該使用狀態(tài)選擇目標(biāo)讀取的數(shù)據(jù)文件。優(yōu)選地,以“已使用”、“正在使用”的優(yōu)先級順序選擇讀取的數(shù)據(jù)文件,例如當(dāng)數(shù)據(jù)文件FILEl對應(yīng)的使用狀態(tài)為“已使用”,數(shù)據(jù)文件FILE2對應(yīng)的使用狀態(tài)為“正在使用”時(shí),優(yōu)先選擇數(shù)據(jù)文件FILEl為目標(biāo)讀取文件。然后數(shù)據(jù)文件管理子單元調(diào)用索引管理子單元,通過索引管理子單元查詢目標(biāo)讀取文件FILEl的索引部分INDEX中的數(shù)據(jù)標(biāo)簽,如果查找到了對應(yīng)的數(shù)據(jù)標(biāo)簽,則通過該數(shù)據(jù)標(biāo)簽對應(yīng)的地址信息,向數(shù)據(jù)管理子單元發(fā)送讀取命令,讀取該地址信息的數(shù)據(jù),如果未查找到對應(yīng)的數(shù)據(jù)標(biāo)簽,則選擇FILE2繼續(xù)查找,直到找到對應(yīng)的數(shù)據(jù)標(biāo)簽為止。據(jù)此,完成了數(shù)據(jù)的讀取。
權(quán)利要求
1.一種固定空間分配的文件存儲系統(tǒng),其特征在于包括系統(tǒng)初始化模塊、文件單元和讀/寫模塊,所述系統(tǒng)初始化模塊,主要用于獲取磁盤信息、對文件分配固定空間;所述文件單元包括頭文件和數(shù)據(jù)文件,頭文件記錄數(shù)據(jù)文件的信息列表,主要是數(shù)據(jù)文件的使用狀態(tài);數(shù)據(jù)文件包括索引部分和數(shù)據(jù)部分,索引部分記錄數(shù)據(jù)文件的數(shù)據(jù)部分的使用信息和地址信息;所述讀/寫模塊通過查詢頭文件信息列表獲取讀/寫的數(shù)據(jù)文件,查詢該數(shù)據(jù)文件的索引部分中記錄的使用信息和地址信息,從而獲取讀/寫數(shù)據(jù)的地址,根據(jù)該地址讀取或?qū)懭霐?shù)據(jù)。
2.如權(quán)利要求I所述的固定空間分配的文件存儲系統(tǒng),其特征在于讀/寫模塊由磁盤管理子模塊、數(shù)據(jù)文件管理子模塊、索引管理子模塊、數(shù)據(jù)管理子模塊組成;所述磁盤管理子模塊,用于管理頭文件,對數(shù)據(jù)文件的信息列表進(jìn)行管理;所述數(shù)據(jù)文件管理子模塊,用于管理數(shù)據(jù)文件,對各數(shù)據(jù)文件的索引部分和數(shù)據(jù)部分進(jìn)行管理;所述索引管理子模塊,用于管理數(shù)據(jù)文件的索引部分;所述數(shù)據(jù)管理子模塊,用于向數(shù)據(jù)文件的數(shù)據(jù)部分讀/寫數(shù)據(jù)。
3.如權(quán)利要求I所述的固定空間分配的文件存儲系統(tǒng),其特征在于所述頭文件記錄的 數(shù)據(jù)文件的使用狀態(tài)分為已使用、正在使用和未使用三種。
4.如權(quán)利要求I所述的固定空間分配的文件存儲系統(tǒng),其特征在于所述索引部分記錄數(shù)據(jù)文件的數(shù)據(jù)部分的使用信息包括數(shù)據(jù)標(biāo)簽。
5.一種固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于包括以下步驟 (O系統(tǒng)初始化獲取磁盤信息,對文件的固定空間進(jìn)行分配,并創(chuàng)建文件單元; (2)完成數(shù)據(jù)文件中數(shù)據(jù)的讀/寫。
6.如權(quán)利要求5所述的固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于在步驟(I)中,文件單元包括頭文件和數(shù)據(jù)文件,系統(tǒng)初始化模塊創(chuàng)建的文件單元至少包括頭文件,即初始化頭文件的信息列表,記錄各數(shù)據(jù)文件的使用狀態(tài),文件單元中的數(shù)據(jù)文件可以在數(shù)據(jù)讀寫過程中逐漸創(chuàng)建。
7.如權(quán)利要求6所述的固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于所述數(shù)據(jù)文件的使用狀態(tài)分為已使用、正在使用和未使用。
8.如權(quán)利要求5所述的固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于在步驟(2)中數(shù)據(jù)的讀/寫由讀/寫模塊完成,讀/寫模塊包括磁盤管理子模塊、數(shù)據(jù)文件管理子模塊、索引管理子模塊、數(shù)據(jù)管理子模塊;所述磁盤管理子模塊,用于管理頭文件,對數(shù)據(jù)文件的信息列表進(jìn)行管理;所述數(shù)據(jù)文件管理子模塊,用于管理數(shù)據(jù)文件,對各數(shù)據(jù)文件的索引部分和數(shù)據(jù)部分進(jìn)行管理;所述索引管理子模塊,用于管理數(shù)據(jù)文件的索引部分;所述數(shù)據(jù)管理子模塊,用于向數(shù)據(jù)文件的數(shù)據(jù)部分讀/寫數(shù)據(jù)。
9.如權(quán)利要求8所述的固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于在步驟(2)中讀/寫模塊完成寫操作的步驟包括磁盤管理子單元接收到數(shù)據(jù)寫入命令后,通過調(diào)用數(shù)據(jù)文件管理子模塊查詢信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)使用狀態(tài)選擇目標(biāo)寫入文件;數(shù)據(jù)文件管理子模塊調(diào)用索引管理子模塊,查詢目標(biāo)寫入文件索引部分的地址信息,再發(fā)送寫入命令給數(shù)據(jù)管理子單元,向該地址信息寫入數(shù)據(jù)。同時(shí),在寫入數(shù)據(jù)后,更新索引部分中新寫入數(shù)據(jù)對應(yīng)的使用信息和地址信息。
10.如權(quán)利要求8所述的固定空間分配的文件存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于在步驟(2)中讀/寫模塊完成讀操作的步驟包括磁盤管理子模塊接收到數(shù)據(jù)讀取命令后,通過調(diào)用數(shù)據(jù)文件管理子系統(tǒng)查詢信息列表中各數(shù)據(jù)文件的使用狀態(tài),根據(jù)使用狀態(tài)選擇目標(biāo)讀取文件;數(shù)據(jù)文件管理子單元調(diào)用索引管理子單元,查詢目標(biāo)讀取文件的使用信息,通過 使用信息對應(yīng)的地址信息,向數(shù)據(jù)管理子單元發(fā)送讀取命令讀取數(shù)據(jù)。
全文摘要
本發(fā)明屬于網(wǎng)絡(luò)多媒體技術(shù)領(lǐng)域,特別是涉及一種固定空間分配的文件存儲系統(tǒng)及實(shí)現(xiàn)方法。其中固定空間分配的文件存儲系統(tǒng),包括用于獲取磁盤信息、對文件分配固定空間的系統(tǒng)初始化模塊、文件單元和讀/寫模塊;文件單元包括頭文件和數(shù)據(jù)文件,頭文件記錄數(shù)據(jù)文件的信息列表;數(shù)據(jù)文件包括索引部分和數(shù)據(jù)部分。讀/寫模塊,主要是通過查詢頭文件信息列表獲取讀/寫的數(shù)據(jù)文件,查詢該數(shù)據(jù)文件的索引部分中記錄的使用信息和地址信息,從而獲取讀/寫數(shù)據(jù)的地址,根據(jù)該地址讀取或?qū)懭霐?shù)據(jù)。本發(fā)明通過預(yù)先固定分配所有的空間,減少了對整個(gè)磁盤的索引操作,很大程度上提高了文件存儲系統(tǒng)的實(shí)時(shí)性與穩(wěn)定性。
文檔編號G06F17/30GK102902709SQ20121027469
公開日2013年1月30日 申請日期2012年8月2日 優(yōu)先權(quán)日2012年8月2日
發(fā)明者何建億 申請人:何建億