摘要:智能網(wǎng)絡(luò)磁盤(Intelligent Network Disk,IND)存儲(chǔ)系統(tǒng)被定義為以數(shù)據(jù)為中心的,由多個(gè)同構(gòu)型的智能化、微型化、網(wǎng)絡(luò)化存儲(chǔ)單元IND組成的新型網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)。文章從IND的特性出發(fā),對(duì)FAT文件系統(tǒng)進(jìn)行分析研究,設(shè)計(jì)了一種精簡(jiǎn)的、能滿足IND需要的、基于FAT24的類FAT文件系統(tǒng)INDFS(IND File System)。
關(guān)鍵詞:存儲(chǔ)系統(tǒng);IND;嵌入式系統(tǒng);文件系統(tǒng);FAT24
引言
全球信息化,帶來(lái)了數(shù)據(jù)量的爆炸式增長(zhǎng)和數(shù)據(jù)流的急速膨脹,刺激了計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,也推動(dòng)了網(wǎng)絡(luò)存儲(chǔ)技術(shù)的發(fā)展。從DAS、NAS到SAN和IP-SAN,存儲(chǔ)架構(gòu)實(shí)現(xiàn)了以服務(wù)器為中心到以數(shù)據(jù)為中心的轉(zhuǎn)化。
DAS存儲(chǔ)設(shè)備寄生在相應(yīng)的服務(wù)器里,完全以服務(wù)器為中心;所有的客戶請(qǐng)求和響應(yīng)、控制流和數(shù)據(jù)流都必須經(jīng)過服務(wù)器,服務(wù)器成為I/O的瓶頸。基于將控制流和數(shù)據(jù)流分開的思想,NAS將存儲(chǔ)器直接連到網(wǎng)絡(luò)上,不再掛在服務(wù)器后端,服務(wù)器僅起控制管理的作用,從而減輕了服務(wù)器的工作負(fù)載,使系統(tǒng)的整體性能得到提高;但隨著文件請(qǐng)求增加到一定程度,服務(wù)器的性能會(huì)顯著地下降,而且服務(wù)器的存在必然會(huì)有單點(diǎn)故障問題。SAN提供了數(shù)據(jù)塊傳輸、可伸縮的虛擬存儲(chǔ)和遠(yuǎn)程備份,但由于其昂貴的價(jià)格,只有小部分的高端應(yīng)用采用SANt2J。我們嘗試用智能化、網(wǎng)絡(luò)化、微型化的存儲(chǔ)單元建立一種以數(shù)據(jù)為中心的較低成本的存儲(chǔ)體系,即本文要研究的智能網(wǎng)絡(luò)磁盤(Intelligent Network Disk,IND)存儲(chǔ)系統(tǒng)。
1、關(guān)子智能網(wǎng)絡(luò)磁盤IND及其文件系統(tǒng)INDFS
智能網(wǎng)絡(luò)磁盤IND存儲(chǔ)單元是具有IDE接口、高速以太網(wǎng)接口的嵌入式系統(tǒng)。該系統(tǒng)裝有嵌入式實(shí)時(shí)操作系統(tǒng),運(yùn)行分布式、智能化的存儲(chǔ)管理軟件,掛接廉價(jià)的IDE大容量硬盤,所有直接接入網(wǎng)絡(luò)的存儲(chǔ)單元形成一個(gè)邏輯上完全為一體的,能實(shí)現(xiàn)快速存取的、具有數(shù)據(jù)容錯(cuò)和負(fù)載均衡功能的文件服務(wù)器集群。由IND作為基本單元組成的存儲(chǔ)系統(tǒng)就是IND存儲(chǔ)系統(tǒng),其存儲(chǔ)體系結(jié)構(gòu)見圖1所示,IND單元結(jié)構(gòu)如圖2所示。
存儲(chǔ)系統(tǒng)提供網(wǎng)絡(luò)數(shù)據(jù)和文件服務(wù),其中操作系統(tǒng)的選擇和文件系統(tǒng)的定制是至關(guān)重要的。鑒于IND被定義為一個(gè)精簡(jiǎn)的較低成本的嵌入式系統(tǒng),我們?yōu)镮ND選擇了由Micriμm公司提供的,性能優(yōu)良、源碼公開、科研免費(fèi)的實(shí)時(shí)操作系統(tǒng)內(nèi)核uC/OS-II。Micriμm公司還提供了uC/FS,供uC/OS-II用戶擴(kuò)展文件系統(tǒng)用。uC/FS是一種基于FA732的類FAT文件系統(tǒng),但需要付費(fèi)。考慮到本系統(tǒng)的特點(diǎn)和進(jìn)行科學(xué)研究的需要,我們決定開發(fā)自己的文件系統(tǒng)。該文件系統(tǒng)應(yīng)該具有以下特性:能夠存取當(dāng)前流行的大容量IDE硬盤;可以實(shí)現(xiàn)多層次文件目錄結(jié)構(gòu);能可靠快速訪問磁盤文件;能兼容FAT文件系統(tǒng);結(jié)構(gòu)精簡(jiǎn),能有效地利用嵌入式系統(tǒng)有限的系統(tǒng)資源。這樣一種用于IND的文件系統(tǒng)筆者稱之為INDFS。
2、基于FAT24的INDFS的提出
考慮到INDFS要能兼容FAT文件系統(tǒng),筆者提出了一種基于24位FAT表(FAT24)的INDFS。
2.1關(guān)于FAT文件系統(tǒng)
FAT文件系統(tǒng)的基礎(chǔ)是FAT(File Allocation Table,文件分配表),它在管理磁盤時(shí),將邏輯盤的數(shù)據(jù)區(qū)劃分為一個(gè)個(gè)簇(Cluster),作為磁盤文件分配的基本單位。簇由2n個(gè)連續(xù)的扇區(qū)組成,簇的大小一般依據(jù)磁盤的容量和FAT的類型而定。表1列出了不同容量下FAT32邏輯盤卷簇的大小和數(shù)目。簇依次編號(hào),即得簇號(hào)。將簇號(hào)作為紀(jì)錄編號(hào),簇的狀態(tài)作為紀(jì)錄內(nèi)容,組成一個(gè)反映整個(gè)磁盤簇分配和占用情況的一維表格,即FAT表。使用12位編號(hào),即得FAT12,同理可得到FAT16、FAT32。某文件在磁盤上的存儲(chǔ)分配情況反映在FAT表中是一個(gè)簇號(hào)單向鏈表,訪問該文件只需記住文件存儲(chǔ)的首簇號(hào)即可。而目錄被視為特殊文件,目錄表中保存了各文件或下一級(jí)目錄的首簇號(hào)。當(dāng)加載某個(gè)邏輯磁盤時(shí),其FAT表也被載入內(nèi)存,某一文件目錄表在訪問時(shí)也被載入內(nèi)存,這樣可以非常方便地實(shí)現(xiàn)對(duì)磁盤文件目錄的讀寫。FAT文件系統(tǒng)就是這樣一個(gè)以FAT為基礎(chǔ)的、支持多級(jí)文件目錄的文件系統(tǒng)。
2.2 FAT12、FAT16不適于IND大容量硬盤
FAT12是為容量?jī)H為幾百K的軟磁盤提出來(lái)的,F(xiàn)AT16也只能管理最大2GB的硬盤分區(qū),現(xiàn)主要用于存儲(chǔ)容量較小的可移動(dòng)存儲(chǔ)媒介。它們不能滿足IND所使用的當(dāng)前流行的大容量IDE硬盤的要求。
2.3 FAT32存在巨大的信息冗余不適于資源受限的IND
(1)FAT32存在巨大的信息冗余
通過對(duì)不同容量的FAT卷的分析可知,32位FAT表有巨大的信息冗佘。表1所示為不同容量的邏輯硬盤使用WIN98或WIN2000,WINXP格式化成FAT32卷后的簇容量及簇?cái)?shù)目。
從表1可看出,隨著硬盤容量的劇增,簇也變大,而簇?cái)?shù)目卻保持在220221之間,即使卷容量為128GB時(shí),簇?cái)?shù)目也僅為222。222個(gè)簇,意味著只需要22個(gè)二進(jìn)制位就可表達(dá)了,而32位FAT表最多可以表達(dá)222簇,以每簇4KB計(jì),就可以映射16TB的卷。事實(shí)上,F(xiàn)AT32僅用了28位表示簇號(hào)(高4位為0),即便如此,相對(duì)于22位仍有巨大信息冗余。
(2)在資源有限的嵌入式系統(tǒng),F(xiàn)AT32難以發(fā)揮其優(yōu)越性
FAT32比較FA716有很多的優(yōu)越性,它能支持更大容量的硬盤,比FAT16能有效地利用磁盤空間。但是FAT32占用的系統(tǒng)資源要多得多。一方面,32位FAT表與16位FAT表即使有同樣數(shù)目的簇,F(xiàn)AT32表的大小也是FAT16表的兩倍;另一方面,簇?cái)?shù)的增多,也會(huì)使FAT32變得龐大。若使用全部的32位表示簇,最多簇?cái)?shù)目為232,僅FAT表就將達(dá)到4*232=16GB。我們不敢想象將16GB的FAT表讀入內(nèi)存,也不敢想象在16GB的FAT表中搜索FAT表項(xiàng)。這樣,我們對(duì)FAT32在運(yùn)用過程中僅使用28位表示簇,在表1中使簇?cái)?shù)目保持在220-222之間就容易理解了。由此可見,F(xiàn)AT32的性能沒有得到最大程度地發(fā)揮,尤其在系統(tǒng)資源較為緊張時(shí)。既然這樣,我們?yōu)槭裁床话袴AT的位數(shù)降低呢?
2.4建立基于24位FAT表的INDFS
通過上述對(duì)FAT文件系統(tǒng)及FAT卷簇?cái)?shù)目的分析,我們受到了啟發(fā):應(yīng)該建立基于24位FAT表(FAT24)的INDFS。
FAT24與FAT12、FAT16、FAT32相對(duì)應(yīng),就是用24個(gè)二進(jìn)制位表示簇序號(hào),將邏輯磁盤中所有簇的存儲(chǔ)分配情況映射到一個(gè)以簇號(hào)作為紀(jì)錄號(hào)的一維表中,形成FAT24表。INDFS可以被設(shè)計(jì)成一個(gè)以FAT24為基礎(chǔ)的類FAT文件系統(tǒng)。該文件系統(tǒng)能較好地滿足INDFS的功能特性。
(1)基于FA724的INDFS易于實(shí)現(xiàn)與FAT文件系統(tǒng)的兼容。由于INDFS源于FAT文件系統(tǒng),且都以FAT為基礎(chǔ),因此易于實(shí)現(xiàn)與FAT16、FAT32的兼容。
(2)基于FAT24的INDFS能滿足IND對(duì)大容量硬盤管理的需求。若以每簇16KB計(jì),使用22位表示簇,則可映射16*222=64GB的卷,使用多個(gè)卷,物理磁盤容量則可達(dá)128GB以上。IND使用廉價(jià)的、流行的IDE接口硬盤,這些硬盤的存儲(chǔ)容量一般也是在80GB-200GB左右,更多容量的存儲(chǔ)需求可通過使用多個(gè)IND來(lái)解決。
(3)基于FAT24的INDFS比FAT32結(jié)構(gòu)精簡(jiǎn),能有效地利用系統(tǒng)資源,適于IND之類的嵌入式系統(tǒng)。FAT表降低8位,僅FAT表大小就可縮減四分之一,與之相關(guān)聯(lián)的文件目錄表、文件操作等數(shù)據(jù)結(jié)構(gòu)都要簡(jiǎn)化,因此從總體上可以較大幅度地降低內(nèi)存等系統(tǒng)資源的占用。雖然,基于FAT24的INDFS,面對(duì)32位系統(tǒng)架構(gòu),算法設(shè)計(jì)略復(fù)雜些,但對(duì)于IND這樣一個(gè)資源受限的嵌入式系統(tǒng)來(lái)說,內(nèi)存的節(jié)約在性能上的提升應(yīng)該是主要的。
3、基于FAT24的INDFS的設(shè)計(jì)
基于FA724的INDFS的設(shè)計(jì)包括邏輯結(jié)構(gòu)設(shè)計(jì)、主要數(shù)據(jù)結(jié)構(gòu)描述和基本算法設(shè)計(jì)。
3.1 INDFS的邏輯結(jié)構(gòu)設(shè)計(jì)
在uC/OS-II操作系統(tǒng)的調(diào)度下,INDFS承上支持智能化網(wǎng)絡(luò)存取應(yīng)用軟件或其他存儲(chǔ)管理應(yīng)用程序,啟下通過存儲(chǔ)設(shè)備驅(qū)動(dòng)程序管理大容量存儲(chǔ)設(shè)備(這里是IDE硬盤),完成文件的存取工作。其邏輯結(jié)構(gòu)可以用圖3來(lái)表示。
在圖3中,虛線框內(nèi)為INDFS的基本結(jié)構(gòu)。其中文件管理和目錄管理兩大模塊為上層提供所有與操作文件和目錄相關(guān)的函數(shù)(API),文件目錄表管理和文件分配表管理兩個(gè)模塊維護(hù)著INDFS兩個(gè)最基本的也是最重要數(shù)據(jù)結(jié)構(gòu):文件目錄表FDT和文件分配表FAT,邏輯磁盤模塊是INDFS的載體,它定義了邏輯磁盤的基本參數(shù),使INDFS可以管理多個(gè)邏輯盤,高速緩存(CATHE)用于提高讀寫磁盤的速度。此外,格式化實(shí)用程序完成]HDFS磁盤卷的初始化工作,底層驅(qū)動(dòng)程序?qū)崿F(xiàn)INDFS與]DE大容量存儲(chǔ)設(shè)備的通訊。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文