黃 鵬,馬洪兵,陳從華
(1.清華大學(xué) 電子工程系,北京100084;2.廈門雅迅網(wǎng)絡(luò)股份有限公司 福建 廈門361008)
基于FAT32的音視頻存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
黃 鵬1,2,馬洪兵1,陳從華2
(1.清華大學(xué) 電子工程系,北京100084;2.廈門雅迅網(wǎng)絡(luò)股份有限公司 福建 廈門361008)
提出了一種基于FAT32的音視頻存儲(chǔ)系統(tǒng)的設(shè)計(jì)方案。該設(shè)計(jì)通過(guò)初始化時(shí)進(jìn)行文件列表的預(yù)分配,保證存儲(chǔ)介質(zhì)的掛載;通過(guò)使用列表文件和索引文件,保證數(shù)據(jù)的快速的精確定位和已存儲(chǔ)數(shù)據(jù)的有效性;通過(guò)對(duì)數(shù)據(jù)的封裝寫入,保證數(shù)據(jù)在PC端上可以正常播放。該設(shè)計(jì)為解決嵌入式設(shè)備對(duì)音視頻數(shù)據(jù)存儲(chǔ)的特殊需求提供了一種思考方向。
嵌入式設(shè)備;FAT32文件系統(tǒng);數(shù)據(jù)安全;快速索引
隨著生活水平的提高,人們擁有汽車的比例較從前有了較大幅度的增加,特別是在一二線城市,上下班高峰期的車輛密度對(duì)于行車人員的技術(shù)及判斷有較高的要求。相應(yīng)的,因此產(chǎn)生的各種交通事故的發(fā)生頻率也越來(lái)越高。而對(duì)于交通事故的定責(zé)和定性,如果沒有事故發(fā)生時(shí)的影像資料作為有力的證據(jù),則存在較大的辯解空間。在影像的錄制過(guò)程中,存儲(chǔ)、檢索和提取是相當(dāng)重要的環(huán)節(jié),以致當(dāng)前人們對(duì)于嵌入式設(shè)備音視頻存儲(chǔ)的需求日益增加。
當(dāng)前主流的文件系統(tǒng)在設(shè)計(jì)時(shí)考慮的需求是針對(duì)日常操作中的多文件類型、多層次目錄和讀取多于寫入等特性而設(shè)計(jì)的。而這些特性在用于專門處理音視頻存儲(chǔ)的環(huán)境中,優(yōu)點(diǎn)反倒成了缺點(diǎn)。因?yàn)橐粢曨l存儲(chǔ)時(shí)存在其類型較單一、層次目錄簡(jiǎn)單并且寫入多于讀取等特性。
嵌入式終端的音視頻錄制有別于PC端的音視頻錄制,在PC端的音視頻錄制時(shí),由于其場(chǎng)景的固定性及事件的單一性,所以可以進(jìn)行較簡(jiǎn)單的處理,而在處理嵌入式終端的音視頻存儲(chǔ)時(shí),我們需要考慮到嵌入式終端的特殊性。由于嵌入式終端所處的環(huán)境處于惡劣的運(yùn)動(dòng)環(huán)境中,即在高低溫、顛簸、供電不穩(wěn)等條件下,對(duì)音視頻的錄制及保存產(chǎn)生了較大的影響。所以,我們需要對(duì)嵌入式設(shè)備的音視頻存儲(chǔ)系統(tǒng)進(jìn)行定制,以符合嵌入式終端的音視頻錄制需求。
由于嵌入式終端使用場(chǎng)景的多樣性,導(dǎo)致其對(duì)于音視頻數(shù)據(jù)存儲(chǔ)的特殊需求。
1)重復(fù)使用:在嵌入式設(shè)備上無(wú)法配備較大的存儲(chǔ)介質(zhì),而音視頻的存儲(chǔ)數(shù)據(jù)量較大,且經(jīng)常需要連續(xù)不間斷的使用,需要對(duì)存儲(chǔ)介質(zhì)進(jìn)行反復(fù)的利用以便使用較少的開支達(dá)到所需的功能;
2)檢索:視頻的存儲(chǔ)是為了播放,需要通過(guò)較少的條件進(jìn)行快速而又精確地定位數(shù)據(jù);
3)文件新建刪除操作頻繁:嵌入式終端經(jīng)常處于供電不穩(wěn)或者需要進(jìn)行頻繁的斷電及上電的操作;
4)災(zāi)難恢復(fù)能力:需要保證視頻數(shù)據(jù)的安全性,在異常斷電或者數(shù)據(jù)損壞后能夠進(jìn)行最大程度的還原;
5)壽命:降低存儲(chǔ)介質(zhì)的損壞幾率,以提升產(chǎn)品壽命。即使在部分存儲(chǔ)介質(zhì)損壞的情況下,也需要充分利用剩余的存儲(chǔ)空間[1];
6)便捷性:由于嵌入式設(shè)備的多樣性,導(dǎo)致了其使用場(chǎng)景無(wú)法像PC端一樣具有固定的網(wǎng)絡(luò)及帶寬的連接,從而導(dǎo)致大部分嵌入式設(shè)備無(wú)法進(jìn)行云端存儲(chǔ)。
當(dāng)前主流的操作系統(tǒng)有Linux和Windows,Linux下的文件系統(tǒng)有 EXT2、EXT3、EXT4,Windows下的文件系統(tǒng)有FAT32、NTFS。由于Windows系統(tǒng)的廣泛使用,使得FAT32文件系統(tǒng)在嵌入式設(shè)備中有較高的使用率[2]。
在這我們以FAT32文件系統(tǒng)舉例:FAT32的文件系統(tǒng)可以簡(jiǎn)單的劃分為保留扇區(qū)、FAT表以及數(shù)據(jù)區(qū),保留扇區(qū)的第一個(gè)扇區(qū)被稱為BPB(boot parameter block),該扇區(qū)用于存儲(chǔ)文件系統(tǒng)的相關(guān)配置信息,例如:每扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、保留扇區(qū)數(shù)等[3];FAT表與數(shù)據(jù)區(qū)的簇號(hào)是一一對(duì)應(yīng)的,用于索引整個(gè)數(shù)據(jù)區(qū),整個(gè)FAT表采用鏈?zhǔn)酱鎯?chǔ)記錄方式,F(xiàn)AT表2是對(duì)FAT表1的備份[4],在FAT表1損壞時(shí)啟用;數(shù)據(jù)區(qū)是用戶數(shù)據(jù)的存放區(qū)域。FAT32文件系統(tǒng)結(jié)構(gòu)如圖1所示[1]。
圖1 FAT32文件系統(tǒng)結(jié)構(gòu)
FAT32文件系統(tǒng)以簇為單位進(jìn)行文件的管理,并且其每次文件的創(chuàng)建、拷貝、刪除、重命名、移動(dòng),都需要修改FAT表以進(jìn)行檢索的同步。這就使得系統(tǒng)對(duì)FAT表區(qū)域的存儲(chǔ)介質(zhì)進(jìn)行頻繁的讀寫操作,導(dǎo)致長(zhǎng)時(shí)間使用后FAT表?yè)p壞從而使得存儲(chǔ)介質(zhì)無(wú)法正常掛載,從而影響了整個(gè)存儲(chǔ)介質(zhì)的使用。由于嵌入式終端的使用場(chǎng)景的特殊性,需要經(jīng)常地開關(guān)錄制功能,從而需要進(jìn)行大量的文件創(chuàng)建和刪除,導(dǎo)致FAT表區(qū)域的訪問(wèn)頻率比它區(qū)域高將近100倍[5]。這就產(chǎn)生了上述的對(duì)較小區(qū)域存儲(chǔ)介質(zhì)的頻繁讀寫,導(dǎo)致該區(qū)域扇區(qū)損壞,進(jìn)而無(wú)法掛載,導(dǎo)致數(shù)據(jù)無(wú)法進(jìn)行存儲(chǔ)和讀取。
FAT32文件系統(tǒng)的存儲(chǔ)是以文件為單位,如果在寫入某個(gè)文件時(shí)有異常斷電等突發(fā)情況,文件沒有完整的寫入,就會(huì)導(dǎo)致文件讀取異常從而使得該文件已寫入的數(shù)據(jù)丟失。
當(dāng)前FAT32文件系統(tǒng)的主流文件格式與嵌入式終端的視頻需求不同,例如:標(biāo)記音視頻文件錄制時(shí)的狀態(tài)、預(yù)錄等功能。
綜上所述,F(xiàn)AT32文件系統(tǒng)用于存儲(chǔ)嵌入式的音視頻文件時(shí)存在如下缺點(diǎn):
1)長(zhǎng)期使用后容易導(dǎo)致FAT表?yè)p壞從而無(wú)法掛載;
2)不易準(zhǔn)確快速的定位所需數(shù)據(jù);
3)異常關(guān)機(jī)導(dǎo)致數(shù)據(jù)丟失;
4)無(wú)法滿足嵌入式終端的一些特殊需求。
要讀取存儲(chǔ)介質(zhì),首先要保證存儲(chǔ)介質(zhì)能夠進(jìn)行正常的掛載,而FAT32文件系統(tǒng)是否能夠正常掛載,取決于FAT表是否損壞。要解決使用時(shí)間久之后無(wú)法掛載這個(gè)問(wèn)題,就要減少對(duì)于FAT表的操作,以保證系統(tǒng)對(duì)當(dāng)前存儲(chǔ)介質(zhì)的識(shí)別掛載。
嵌入式設(shè)備終端的文件操作與平常PC端的操作有一個(gè)本質(zhì)上的差別,就是PC上所要操作的文件類型多而雜,而嵌入式終端的文件操作只是單一的音視頻文件,多的話會(huì)加上照片或者數(shù)據(jù)庫(kù)文件。如果只是進(jìn)行單一的音視頻存儲(chǔ),需要存儲(chǔ)的文件索引信息與主流的文件系統(tǒng)的差別在于其關(guān)心的重點(diǎn)不同,可以只是將FAT32文件系統(tǒng)的FAT表進(jìn)行固定格式的初始化,保證系統(tǒng)的掛載及基本的文件定位即可。
在格式化磁盤時(shí)預(yù)先對(duì)文件進(jìn)行分區(qū)及文件分配,可以根據(jù)需求進(jìn)行分區(qū),例如將較大的區(qū)域劃于音視頻的存儲(chǔ),然后再行劃分照片及其它文件的分區(qū),除音視頻區(qū)外其它區(qū)域可以使用默認(rèn)系統(tǒng)或者定制系統(tǒng),這邊暫時(shí)只考慮音視頻分區(qū)。
在分區(qū)后對(duì)當(dāng)前分區(qū)的索引進(jìn)行預(yù)分配,根據(jù)當(dāng)前分區(qū)的大小及需求進(jìn)行文件的初始化,并且對(duì)當(dāng)前的索引區(qū)進(jìn)行保護(hù),從而保證對(duì)索引扇區(qū)最低限度的操作,保證掛載功能的成功率。為了解決原先索引起到的對(duì)文件進(jìn)行快速的分配空間及數(shù)據(jù)檢索功能,可以利用已分配的文件進(jìn)行索引的重定義,為了防止對(duì)小范圍扇區(qū)的多次讀寫導(dǎo)致該區(qū)域易損壞的問(wèn)題,對(duì)新定義的索引文件進(jìn)行多重備份及輪循讀寫,從而降低索引區(qū)的損壞概率。
在存儲(chǔ)介質(zhì)掛載時(shí)對(duì)存儲(chǔ)介質(zhì)進(jìn)行文件列表的預(yù)分配,進(jìn)行分配的文件類型有五種,分別是:提示文件、信息文件、列表文件、索引文件、數(shù)據(jù)文件。其數(shù)量和作用簡(jiǎn)介如下:
1)1個(gè)提示文件,用以警示誤刪除,提示當(dāng)前分區(qū)作用,例如可以命名為“本文件夾內(nèi)所有文件為特殊文件,請(qǐng)勿修改或刪除,否則后果自負(fù)”。
2)N個(gè)數(shù)據(jù)文件,用于存放具體的音視頻數(shù)據(jù),數(shù)據(jù)文件的數(shù)量和大小根據(jù)存儲(chǔ)介質(zhì)大小進(jìn)行動(dòng)態(tài)分配,每個(gè)容量的存儲(chǔ)介質(zhì)分配后的數(shù)據(jù)文件的大小和數(shù)據(jù)一致。
3)N個(gè)相應(yīng)的索引文件,與數(shù)據(jù)文件一一對(duì)應(yīng),用來(lái)精確定位視頻數(shù)據(jù)的位置,從而進(jìn)行音視頻數(shù)據(jù)的準(zhǔn)確定位。
4)4個(gè)列表文件,這4個(gè)列表文件功能相同,大小相同,它們輪流進(jìn)行音視頻文件的檢索和管理,這樣能防止單一列表文件損壞從而導(dǎo)致檢索功能失效,亦能保證這塊磁盤的磨損平衡。例如可以設(shè)定每個(gè)列表文件使用期為30天,到期后使用下一個(gè)列表文件進(jìn)行替換,時(shí)間可以通過(guò)嵌入式設(shè)備的系統(tǒng)時(shí)間為判定標(biāo)準(zhǔn)。
5)2個(gè)信息文件,這2個(gè)信息文件功能相同,大小相同,用于指示各個(gè)列表文件的使用時(shí)間及使用狀態(tài),信息文件2為信息文件1的備份。
信息文件與列表文件對(duì)應(yīng)如圖2所示。
信息文件保存了列表文件的啟用時(shí)間和當(dāng)前使用狀態(tài)。啟動(dòng)時(shí)讀取當(dāng)前所使用列表文件的啟用時(shí)間,以判斷是否需要啟用下一列表文件。
列表文件與索引和數(shù)據(jù)文件對(duì)應(yīng)如圖3所示。
如圖3所示,列表文件用于記錄每個(gè)數(shù)據(jù)文件的時(shí)間片段及相應(yīng)標(biāo)志,從而可以通過(guò)列表文件快速定位到存有所需數(shù)據(jù)的數(shù)據(jù)文件。而索引文件則與數(shù)據(jù)文件的具體數(shù)據(jù)進(jìn)行索引,例如每?jī)擅脒M(jìn)行數(shù)據(jù)片段的存儲(chǔ),索引文件記錄相應(yīng)數(shù)據(jù)的具體情況。這樣通過(guò)兩級(jí)定位,能夠快速精確的定位到所要查找的數(shù)據(jù)。
圖2 信息文件與列表文件對(duì)應(yīng)關(guān)系
圖3 列表文件與索引和數(shù)據(jù)文件對(duì)應(yīng)關(guān)系
定義相關(guān)的讀寫接口和檢索接口,以方便操作者的使用。寫入數(shù)據(jù)時(shí)按順序?qū)懭?,可以有效消除調(diào)用系統(tǒng)接口時(shí)產(chǎn)生的磁盤碎片的問(wèn)題,減少對(duì)數(shù)據(jù)進(jìn)行操作時(shí)的尋道時(shí)間[6],保證了數(shù)據(jù)的平衡寫入。
固定了FAT表,所以每個(gè)數(shù)據(jù)文件和磁盤位置是對(duì)應(yīng)的,在遭到快速格式化,或者部分?jǐn)?shù)據(jù)的覆蓋寫入后,只要再將存儲(chǔ)介質(zhì)放到嵌入式設(shè)備進(jìn)行文件預(yù)分配操作,就會(huì)定位出各個(gè)文件的相應(yīng)位置和數(shù)據(jù),進(jìn)行數(shù)據(jù)的恢復(fù)。如果有人通過(guò)PC端對(duì)當(dāng)前存儲(chǔ)介質(zhì)的文件進(jìn)行操作,就會(huì)破壞當(dāng)前文件系統(tǒng)的統(tǒng)一格式而被發(fā)現(xiàn),從而防止數(shù)據(jù)被偽造,保證了數(shù)據(jù)的安全性。
使用自定義的讀寫接口,并且對(duì)數(shù)據(jù)以較小的片段為單位進(jìn)行存儲(chǔ),可以在啟動(dòng)時(shí)判斷上次寫入是否正常結(jié)束,如果未正常結(jié)束就進(jìn)行數(shù)據(jù)的結(jié)束標(biāo)志寫入。以保證異常斷電等情況下數(shù)據(jù)的存儲(chǔ)有效及讀取的正確??梢詷?biāo)志壞塊、優(yōu)先級(jí)、類型等相關(guān)參數(shù),以便充分利用存儲(chǔ)介質(zhì)的剩余空間及滿足需求的多樣化。
由于采用的是FAT32文件系統(tǒng),兼容Linux、Android和Windows等操作系統(tǒng),使用者可以方便的將存儲(chǔ)介質(zhì)進(jìn)行掛載、讀取和拷貝。在保存數(shù)據(jù)為數(shù)據(jù)文件時(shí)可進(jìn)行相應(yīng)的封裝,可封裝成主流的視頻格式,方便使用者進(jìn)行數(shù)據(jù)的直接讀取,保證在沒有相應(yīng)工具時(shí)也能對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的保存和查看。
通過(guò)上述分析,該定制系統(tǒng)具有如下幾個(gè)特點(diǎn):
1)保證存儲(chǔ)介質(zhì)能夠正常掛載,使得系統(tǒng)能夠識(shí)別該存儲(chǔ)介質(zhì);
2)平衡數(shù)據(jù)的寫入,保證磁盤的壽命,減少尋道時(shí)間;
3)提供便捷的數(shù)據(jù)恢復(fù)功能,以便在低格或者少量覆蓋后能夠進(jìn)行數(shù)據(jù)恢復(fù);
4)最大程度的利用存儲(chǔ)介質(zhì)的有效空間,充分發(fā)揮存儲(chǔ)介質(zhì)的剩余價(jià)值;
5)提供快速的數(shù)據(jù)定位功能,方便對(duì)數(shù)據(jù)進(jìn)行檢索查找;
6)使用自定義的接口,防止數(shù)據(jù)的偽造;
7)可以為數(shù)據(jù)添加標(biāo)簽,增加擴(kuò)展功能;
8)兼容主流文件系統(tǒng),方便PC端的操作;
9)支持?jǐn)?shù)據(jù)封裝,保證了主流媒體工具的讀取播放。
文中以嵌入式設(shè)備對(duì)于音視頻存儲(chǔ)功能的特殊需求為出發(fā)點(diǎn),通過(guò)對(duì)FAT32文件系統(tǒng)的優(yōu)缺點(diǎn)進(jìn)行分析,結(jié)合存儲(chǔ)介質(zhì)的特性進(jìn)行定制。通過(guò)固定文件位置、固定文件大小、固定文件個(gè)數(shù)和固定文件類型,來(lái)保證存儲(chǔ)介質(zhì)的正常掛載和數(shù)據(jù)的安全。通過(guò)自定義索引,來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的快速和精確的定位。通過(guò)對(duì)現(xiàn)有的FAT32文件系統(tǒng)進(jìn)行定制并且對(duì)數(shù)據(jù)進(jìn)行封裝,保證了PC端對(duì)存儲(chǔ)介質(zhì)的識(shí)別并且可以對(duì)數(shù)據(jù)進(jìn)行直接的讀取播放。使用該文件系統(tǒng)可以解決在使用FAT32文件系統(tǒng)時(shí)出現(xiàn)的掛載失敗、不易檢索、不易擴(kuò)展等問(wèn)題,為嵌入式設(shè)備的音視頻存儲(chǔ)提供了一種思考方向。
[1]謝琦,胡俊,王磊.FAT文件系統(tǒng)在NAND FLASH上的磨損均衡研究[J].微電子學(xué)與計(jì)算機(jī),2011(7):34-37.
[2]應(yīng)駿,江峰,李莉.嵌入式設(shè)備上的文件系統(tǒng)優(yōu)化設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2007(12):141-144.
[3]龔勇.Windows下數(shù)據(jù)恢復(fù)的研究[D].成都:電子科技大學(xué),2008.
[4]鄧波.FAT32文件系統(tǒng)結(jié)構(gòu)研究[J].四川師范大學(xué)學(xué)報(bào):自然科學(xué)版,2000(6):665-669.
[5]陳華.面向多媒體存儲(chǔ)的FAT文件系統(tǒng)研究與應(yīng)用[D].武漢:華中科技大學(xué),2013.
[6]羅麗麗.視頻存儲(chǔ)優(yōu)化技術(shù)研究與應(yīng)用[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2009.
Design and implementation of audio and video storage system based on FAT32
HUANG Peng1,2,MA Hong-bing1,CHEN Cong-hua2
(1.Department of Electronic Engineering,Tsinghua University,Beijing 100084,China;2.Yaxon Network Co.,Ltd.,Xiamen 361008,China)
This paper proposes a design of audio and video storage system based on FAT32.The design is pre-assigned by the initialization file list,ensure mounted storage medium;by using the list of files and index files,ensure the effectiveness of fast and accurate positioning data that already stored;by writing the data package to ensure that the data can play on the PC side normally.This is designed to solve embedded devices provide a way of thinking about the direction of the special needs of audio and video data storage.
embedded devices;FAT32;data security;quick search
TN946.2
A
1674-6236(2016)18-0101-03
2015-09-29 稿件編號(hào):201509188
黃 鵬(1987—),男,福建莆田人,碩士研究生。研究方向:嵌入式系統(tǒng)。