智能網(wǎng)絡(luò)磁盤IND軟件設(shè)計與實現(xiàn)
摘 要:提出一種新型的智能網(wǎng)絡(luò)磁盤存儲技術(shù),適用于TCP/IP通信網(wǎng)絡(luò)。該技術(shù)可有效地解決存儲設(shè)備單點失效問題,提高了數(shù)據(jù)吞吐率,易于擴(kuò)展磁盤容量。結(jié)合嵌八式技術(shù)的發(fā)展,詳細(xì)討論智能網(wǎng)絡(luò)磁盤的數(shù)據(jù)訪問模塊的軟件結(jié)構(gòu)和關(guān)鍵技術(shù),并通過在S3C44BOX開發(fā)板上移植uCIinux操作系統(tǒng)和開發(fā)應(yīng)用軟件,實現(xiàn)智能網(wǎng)絡(luò)磁盤的數(shù)據(jù)訪問功能。
關(guān)鍵詞:網(wǎng)絡(luò)磁盤 ARM S3C44BOX uClinux
引 言
在過去的20年里,存儲系統(tǒng)的發(fā)展速度一直較慢。盡管IDE技術(shù)、SCSI技術(shù)的發(fā)展提供了更有效的數(shù)據(jù)傳輸、更快的磁盤驅(qū)動和更大的磁盤容量,但是存儲系統(tǒng)仍然是作為服務(wù)器的附屬設(shè)備,沒有擺脫服務(wù)器/存儲系統(tǒng)的模式,服務(wù)器單點失效及瓶頸問題依然存在。吉比特以太網(wǎng)和Fibre Channel技術(shù)的出現(xiàn),使服務(wù)器和存儲系統(tǒng)作為對等的實體存在于網(wǎng)絡(luò)上成為可能,存儲系統(tǒng)不再依附于服務(wù)器,服務(wù)器的失效不會導(dǎo)致對存儲系統(tǒng)上數(shù)據(jù)訪問的失效。
所謂的智能網(wǎng)絡(luò)磁盤1ND(Intelligent NetworkDisk),不是直接連在個人計算機(jī)上,而是通過網(wǎng)絡(luò)接口連接在網(wǎng)絡(luò)上,用戶可通過文件屬性來訪問文件數(shù)據(jù)。智能網(wǎng)絡(luò)磁盤向用戶提供統(tǒng)一的接口,利用元數(shù)據(jù)為用戶提供面向集合的數(shù)據(jù)視圖。在物理上,同一集合的數(shù)據(jù)可能分布在不同的智能網(wǎng)絡(luò)磁盤上。存儲時根據(jù)元數(shù)據(jù)決定數(shù)據(jù)的存儲位置;響應(yīng)數(shù)據(jù)訪問請求根據(jù)所存儲的元數(shù)據(jù)定位數(shù)據(jù)的具體存儲位置,然后向用戶發(fā)送數(shù)據(jù)。智能網(wǎng)絡(luò)磁盤可以分為系統(tǒng)軟件和應(yīng)用軟件兩大部分;系統(tǒng)軟件包括TCP/IP協(xié)議棧、文件系統(tǒng)、驅(qū)動程序等幾個部分。應(yīng)用軟件包括數(shù)據(jù)訪問模塊、數(shù)據(jù)定位模塊、元數(shù)據(jù)管理模塊及數(shù)據(jù)緩存模塊等。數(shù)據(jù)訪問模塊經(jīng)過虛擬文件系統(tǒng)訪問存儲在存儲介質(zhì)上的數(shù)據(jù);數(shù)據(jù)定位模塊根據(jù)元數(shù)據(jù)定位數(shù)據(jù)具體的存放位置;元數(shù)據(jù)管理模塊負(fù)責(zé)元數(shù)據(jù)的有效性;數(shù)據(jù)緩存模塊提供訪問數(shù)據(jù)的緩存機(jī)制。企業(yè)通過使用智能網(wǎng)絡(luò)磁盤,既可以提高企業(yè)內(nèi)部公共數(shù)據(jù)存儲空間,方便數(shù)據(jù)共享和管理,又可以減少為了增加存儲空間而增加服務(wù)器所花費(fèi)的代價;另一方面,企業(yè)可以減少每臺個人計算機(jī)的存儲空間,加大智能網(wǎng)絡(luò)磁盤的空間或數(shù)量,從整體上降低企業(yè)為存儲所花費(fèi)的代價。
下面詳細(xì)介紹智能網(wǎng)絡(luò)磁盤的數(shù)據(jù)訪問模塊及系統(tǒng)軟件部分。
1 硬件設(shè)計
智能網(wǎng)絡(luò)磁盤硬件設(shè)計的核心是Samsung公司的S3C44BOX微處理器。S3C44BOX微處理器主頻為66 MHz,采用ARM7TDMI內(nèi)核,支持16位的Thumb指令集和32位的ARM指令集;支持8個32 MB的存儲體地址空間。為了降低成本,SaC44BOX提供了豐富的片上設(shè)備,包括8 KB Cache、SRAM、LCD控制器、2通道UART、4通道DMA、系統(tǒng)管理器(片選邏輯、FP/EDO/SDRAM控制器)、帶PWM功能的5通道定時器、1個內(nèi)部定時器、I/O端口、RTC、8通道10位ADC、12C總線接口、12S總線接口、同步SIO接口和PLL倍頻器。在片外為S3C44BOX微處理器增加了2 MB F1ash、8 MB SDRAM、1個IDE接口和1個RTL8019AS以太網(wǎng)通信芯片。Flash主要用于存放BootLoader程序、uClinux內(nèi)核映像、ROMFS文件系統(tǒng)和應(yīng)用程序。智能網(wǎng)絡(luò)磁盤采用IDE接口硬盤作為存儲介質(zhì)。普通IDE接口硬盤數(shù)據(jù)傳輸速率為133 Mbps,遠(yuǎn)遠(yuǎn)比磁帶機(jī)快,有利于數(shù)據(jù)傳輸;固態(tài)存儲器盡管存儲速度快,但其昂貴的價格使其在目前仍不適于海量數(shù)據(jù)存儲。S3C44BOX開發(fā)板的原理框圖如圖1所示。
S3C44BOX微處理器提供25位的地址總線Addr0~Addr24,提供16位的數(shù)據(jù)總線data0~datal5,因此SaC44BOX支持的最大存儲體空間為32 MB。IDE硬盤與內(nèi)存之間按照DMA方式進(jìn)行數(shù)據(jù)傳送,而以太網(wǎng)卡與內(nèi)存之間采用中斷方式進(jìn)行數(shù)據(jù)傳送。對于S3C44BOX微處理器,SDRAM安排于第6個或第7個bank,地址分別OxOc000000或OxOc800000開始。ATA接口位于第2個bank內(nèi),而以太網(wǎng)接口位于第1個bank內(nèi)。
2 軟件設(shè)計
智能網(wǎng)絡(luò)磁盤系統(tǒng)軟件功能模塊如圖2所示。IND軟件負(fù)責(zé)接受請求、請求調(diào)度、數(shù)據(jù)分布管理及數(shù)據(jù)定位等功能;VFS為虛擬文件系統(tǒng),為不同的邏輯文件系統(tǒng)提供統(tǒng)一的接口;ROMFS和Ext2為邏輯文件系統(tǒng)。塊設(shè)備驅(qū)動程序為不同的塊設(shè)備提供一個統(tǒng)一的接口,并負(fù)責(zé)塊設(shè)備數(shù)據(jù)緩存功能;ATA接口驅(qū)動程序提供標(biāo)準(zhǔn)的AT總線接口驅(qū)動程序;TCP/IP協(xié)議和802.3協(xié)議組成一個協(xié)議棧,使設(shè)備可用于以太網(wǎng),數(shù)據(jù)可經(jīng)過Internet傳送;網(wǎng)絡(luò)設(shè)備經(jīng)過8019AS芯片連接,為此提供了RTL8019AS芯片驅(qū)動程序。
IND軟件模塊響應(yīng)用戶的讀請求和寫請求,按照先來先服務(wù)策略調(diào)度請求,統(tǒng)一管理數(shù)據(jù)在磁盤上的分布視圖。每當(dāng)有連接請求時,IND軟件模塊就要生成一個輕量級進(jìn)程,響應(yīng)連接請求,并根據(jù)請求的元數(shù)據(jù),決定文件的存儲和讀取集合??蛻襞cIND智能網(wǎng)絡(luò)磁盤之間采用無狀態(tài)連接,以減小客戶與網(wǎng)絡(luò)磁盤之間連接的復(fù)雜性。當(dāng)打開一個網(wǎng)絡(luò)磁盤文件時,數(shù)據(jù)以一個臨時文件的形式存放在本地系統(tǒng)上,以后的操作都是對本地的臨時文件進(jìn)行操作,打開完畢后,網(wǎng)絡(luò)磁盤上相應(yīng)的文件對象自動關(guān)閉,響應(yīng)進(jìn)程死亡。在關(guān)閉文件的時候,如果文件被修改過,則寫回網(wǎng)絡(luò)磁盤,并且刪除掉本地的臨時文件;如果文件沒有經(jīng)過修改'則不用進(jìn)行回寫操作,只在本地刪除掉臨時文件即可。一般情況下,打開文件時要建立一次連接,而關(guān)閉文件時可能要建立一次連接,也可能不要。目錄是一種特殊的文件,按照普通文件進(jìn)行處理。
目前,系統(tǒng)只支持兩種文件系統(tǒng)ROMFS和Ext2。ROMFS是一個小型的ROM文件系統(tǒng),只能讀不能寫。它包含了需要在uClinux上運(yùn)行的應(yīng)用程序,在uClinux操作系統(tǒng)編譯期間被包含進(jìn)uClinux二進(jìn)制代碼中。Ext2文件系統(tǒng)安裝于ROMFS文件系統(tǒng)的/var目錄上。系統(tǒng)運(yùn)行以后,ROMFS文件系統(tǒng)和ext2文件系統(tǒng)在內(nèi)存中的邏輯關(guān)系如圖3所示。帶“*”號的為Ext2文件系統(tǒng)對象,不帶“*”的為ROMFS文件系統(tǒng)對象。
網(wǎng)絡(luò)通信采用TCP/IP協(xié)議和802.3協(xié)議實現(xiàn)。以太網(wǎng)已從一個共享的、低速的拓?fù)浣Y(jié)構(gòu)發(fā)展成為一種高性能的吉比特交換傳輸技術(shù),采用以太網(wǎng)技術(shù)有利于網(wǎng)絡(luò)磁盤向吉比特以太網(wǎng)上移植。TCP/IP協(xié)議是一種開放式的網(wǎng)絡(luò)互聯(lián)協(xié)議,兼容性強(qiáng),普及程度高,數(shù)據(jù)可以通過Intemet傳輸。
3 智能網(wǎng)絡(luò)磁盤系統(tǒng)軟件的實現(xiàn)
智能網(wǎng)絡(luò)磁盤采用uClinux作為操作系統(tǒng)。uClinux是專為不帶MMU的CPU而設(shè)計的嵌人式Linux操作系統(tǒng),具有以下優(yōu)點:第一,其源碼在GNU公共許可證下是開放的,任何人都可以自由使用和研究;第二,uClinux采用模塊化設(shè)計,具有很強(qiáng)的可裁減性,用戶可以根據(jù)自己的需要增加或裁減功能模塊;第三,uClinux功能強(qiáng)大,支持多任務(wù)操作、TCP/IP協(xié)議棧、多種文件系統(tǒng)等功能;第四,uClinux可移植性強(qiáng),已經(jīng)成功地移植到各種CPU平臺上.像S3C44BOX、Motorola MC68000、MCF5206和MCF5207ColdFire等;第五,uClintlx還有1個與之相兼容的小型C語言庫uClihc,它與GNUC語言庫glibc兼容,方便用戶開發(fā)應(yīng)用程序。目前,uClinux支持3個Linux內(nèi)核版本,分別為2.O.x、2.4.x和2.6.x,本設(shè)計采用的是2.4.xLinux內(nèi)核。該內(nèi)核與IEEE POSIX標(biāo)準(zhǔn)兼容,使得大部分開源代碼不經(jīng)過修改,只需要簡單編譯一下就可以移植到目標(biāo)平臺上。
在實現(xiàn)智能網(wǎng)絡(luò)磁盤時,先開發(fā)了基于S3C44BOX微處理器的系統(tǒng)電路板,然后將uClinux操作系統(tǒng)移植到本電路板上,最后編寫IND軟件。下面主要介紹uClinux操作系統(tǒng)的移植過程和uClinux操作系統(tǒng)的引導(dǎo)過程。
在移植uClinux操作系統(tǒng)時,先要得到一個完整的uClinux操作系統(tǒng)源碼,既可以從網(wǎng)站上下載一個完整的uClinux光盤,也可以從網(wǎng)站上下載必要的源碼,如Linux內(nèi)核、uClinux補(bǔ)丁程序、uClibc和所需的應(yīng)用程序源碼。我們下載的是uClinuX_dist一20041215.tar光盤,其中包含對s3C44BOX的支持。其次是要建立交叉編譯開發(fā)環(huán)境。針對電路板所產(chǎn)生的部分配置內(nèi)容如下:
#define CONFIG_ARCH_SAMSUNG 1
#deflne DRAM_BASE OxOc000000
#define DRAM_SIZE 0x00800000
#cleftne Flash_MEM_BASE Ox0000000
#define FIash_SIZE0x00200000
#deflne CONFIG_RAMKERNEL 1
#deflne C()NFIG_SPU_NAME″S3C4480X″
#define CONFIG_CPU_S3C44BOX 1
#define CONFIG_CPU_ARM710 1
#define CONFIG_CPU_32v4 1
#defIne CONFIG_CPU_32 1
#defIne CONFIG_No_PGT_CACHE l
#define CoNFIG_CPU_WITH_CACHE 1
#define CONFIG_ARM_CLK(6000000)
#define CoNFIG_SERIAL_S3C4480X 1
從以上內(nèi)容可以看出,F(xiàn)lash位于S3C44BOX的第0個Bank,地址從Ox00000000到0x00200000,容量為2MB。SDRAM位于第6個Bank,地址從Oxoc000000到0xOc800000,容量為8 MB。S3C44BOX工作頻率為60 MHz,串口采用S3C44BOx片上的一個UART,并在該串口上支持控制臺功能,使得uClinux的啟動輸出信息可以在超級終端上顯示出來。其他的配置包括TCP/IP網(wǎng)絡(luò),10/100 Mbps以太網(wǎng)絡(luò)、IDE和ext2文件系統(tǒng)等內(nèi)容。配置完的uClinux操作系統(tǒng)帶有進(jìn)程調(diào)度模塊、內(nèi)存管理模塊、ATA接口驅(qū)動程序、文件系統(tǒng)、TCP/1P協(xié)議棧、網(wǎng)卡驅(qū)動等功能。
uClinux配置完成以后即可對uClinux編譯,產(chǎn)生兩個文件:一個是非壓縮的uClinux操作系統(tǒng)二進(jìn)制代碼uCllnux_bootram.bin,其在SDRAM中工作的起始地址為0xoc008000;另一個是壓縮的uclinux操作系統(tǒng)二進(jìn)制代碼uClinux_bootrom.bin,通過JTAG線纜燒寫到Flash中,由bootloader程序?qū)⑵浼虞d到SDRAM中執(zhí)行。在系統(tǒng)啟動的時候uCIinux_bootrom.bin要先進(jìn)行解壓縮,存放到SDRAM中,然后跳轉(zhuǎn)到uClinux操作系統(tǒng)的入口處執(zhí)行。內(nèi)核在啟動時要檢查機(jī)器的CPU類型和體系結(jié)構(gòu)、初始化CPU、建立RAM頁表和中斷矢量表、加載設(shè)備驅(qū)動程序。這一切完成之后,uClinux創(chuàng)建最初的init進(jìn)程,安裝根文件系統(tǒng)ROMFS和ext2磁盤文件系統(tǒng)。最后,操作系統(tǒng)將自動執(zhí)行IND軟件,等待接收客戶端請求。
uClinux操作系統(tǒng)的引導(dǎo)通過B00tlDader程序完成。從本質(zhì)上講,它不屬于操作系統(tǒng)內(nèi)核,針對不同的CPU體系結(jié)構(gòu),不具有可移植性。本設(shè)計所編寫的Bootloader程序在系統(tǒng)啟動時完成以下幾項工作:
①將存放在Flash中壓縮的操作系統(tǒng)內(nèi)核進(jìn)行解壓縮,然后復(fù)制到從0xoc008000處開始的SDRAM中;
②改寫系統(tǒng)的內(nèi)存地址鏡像,將RAM的起始地址映射為O;
③設(shè)置CPU的sp寄存器,并將內(nèi)核的BSS段清零;
④設(shè)置CPU的pc寄存器,使其值指向內(nèi)核的起始地址。
4 性能分析
智能網(wǎng)絡(luò)磁盤的性能受到系統(tǒng)各個方面的制約,像IND軟件的進(jìn)程調(diào)度策略、局域網(wǎng)的帶寬、ATA總線的帶寬、文件系統(tǒng)的緩存機(jī)制和客戶端的緩存機(jī)制。這里分析文件系統(tǒng)的緩存機(jī)制及系統(tǒng)數(shù)據(jù)吞吐率,以此對智能網(wǎng)絡(luò)磁盤的性能作個初步的衡量。
虛擬文件系統(tǒng)和塊設(shè)備驅(qū)動程序普遍采用高速緩存技術(shù),將最近最常使用的數(shù)據(jù)保存在內(nèi)存中,提高數(shù)據(jù)在內(nèi)存中的命中率。文件系統(tǒng)的目錄項對象、索引節(jié)點對象、文件對象及vfsmount對象都存在獨立的高速緩存區(qū)中,當(dāng)請求的對象在高速緩存區(qū)中,且有效時,就直接從高速緩存區(qū)中取出數(shù)據(jù)發(fā)送給客戶;如果所請求的數(shù)據(jù)不存在,則在高速緩存區(qū)中取出一個空閑的對象作為新對象的描述符,這樣可以減少為創(chuàng)建新對象而分配內(nèi)存所花費(fèi)的時間,提高系統(tǒng)的效率。對于索引節(jié)點對象、目錄項對象及vfsmount對象,為了提高它們的查找效率,這些對象都存在于它們各自的Hash表中。對于塊設(shè)備驅(qū)動程序使用高速緩存區(qū),可以降低頻繁地讀取存儲設(shè)備的次數(shù)。對客戶端目錄文件的讀取要采用一定的預(yù)取機(jī)制,因為對目錄文件的打開比較頻繁,每打開一個目錄,都要建立一次連接,因此,采可行的預(yù)取機(jī)制可以有效地減少建立連接的次數(shù)。
系統(tǒng)性能測試采用BenchMark軟件。硬件測試平臺由智能網(wǎng)絡(luò)磁盤、l00MB交換機(jī)和24臺客戶機(jī)組成。測試文件大小為1 MB,客戶機(jī)隨機(jī)地向智能網(wǎng)絡(luò)磁盤發(fā)送讀請求,測試結(jié)果如圖4所示。吞吐率表示多用戶請求時單位時間內(nèi)通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)總量。
從測試結(jié)果可以得出,當(dāng)客戶數(shù)逐漸增多時,每個客戶所得到的平均帶寬逐漸漸少。當(dāng)客戶增加到24個時,每個客戶可得到大約O.3 Mbps的帶寬,可以滿足文件遠(yuǎn)程訪問請求。
結(jié) 語
本文首先介紹了智能網(wǎng)絡(luò)磁盤的硬件開發(fā)環(huán)境,然后詳細(xì)介紹了智能網(wǎng)絡(luò)磁盤的軟件模塊及關(guān)鍵技術(shù),最后在S3C4480X嵌入式開發(fā)板上實現(xiàn)了智能網(wǎng)絡(luò)磁盤??蛻舳嗽谠L問智能網(wǎng)絡(luò)磁盤時,速度還有待進(jìn)一步提高。這可以從改善網(wǎng)絡(luò)環(huán)境,提高網(wǎng)卡的速度著手,對客戶端請求的調(diào)度策略也可以作為一個方面的研究,其他的功能模塊還需要繼續(xù)添加。相信智能網(wǎng)絡(luò)磁盤對企業(yè)來說是一個好的解決存儲設(shè)備問題的方案。