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