新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 智能網(wǎng)絡磁盤IND軟件設計與實現(xiàn)

智能網(wǎng)絡磁盤IND軟件設計與實現(xiàn)

作者: 時間:2006-10-13 來源:網(wǎng)絡 收藏

摘 要:提出一種新型的存儲技術,適用于TCP/IP通信。該技術可有效地解決存儲設備單點失效問題,提高了數(shù)據(jù)吞吐率,易于擴展容量。結合嵌八式技術的發(fā)展,詳細討論的數(shù)據(jù)訪問模塊的結構和關鍵技術,并通過在S3C44BOX開發(fā)板上移植uCIinux操作系統(tǒng)和開發(fā)應用網(wǎng)絡磁盤的數(shù)據(jù)訪問功能。
關鍵詞:網(wǎng)絡磁盤 ARM S3C44BOX uClinux

引 言
在過去的20年里,存儲系統(tǒng)的發(fā)展速度一直較慢。盡管IDE技術、SCSI技術的發(fā)展提供了更有效的數(shù)據(jù)傳輸、更快的磁盤驅動和更大的磁盤容量,但是存儲系統(tǒng)仍然是作為服務器的附屬設備,沒有擺脫服務器/存儲系統(tǒng)的模式,服務器單點失效及瓶頸問題依然存在。吉比特以太網(wǎng)和Fibre Channel技術的出現(xiàn),使服務器和存儲系統(tǒng)作為對等的實體存在于網(wǎng)絡上成為可能,存儲系統(tǒng)不再依附于服務器,服務器的失效不會導致對存儲系統(tǒng)上數(shù)據(jù)訪問的失效。

所謂的智能網(wǎng)絡磁盤1ND(Intelligent NetworkDisk),不是直接連在個人計算機上,而是通過網(wǎng)絡接口連接在網(wǎng)絡上,用戶可通過文件屬性來訪問文件數(shù)據(jù)。智能網(wǎng)絡磁盤向用戶提供統(tǒng)一的接口,利用元數(shù)據(jù)為用戶提供面向集合的數(shù)據(jù)視圖。在物理上,同一集合的數(shù)據(jù)可能分布在不同的智能網(wǎng)絡磁盤上。存儲時根據(jù)元數(shù)據(jù)決定數(shù)據(jù)的存儲位置;響應數(shù)據(jù)訪問請求根據(jù)所存儲的元數(shù)據(jù)定位數(shù)據(jù)的具體存儲位置,然后向用戶發(fā)送數(shù)據(jù)。智能網(wǎng)絡磁盤可以分為系統(tǒng)和應用軟件兩大部分;系統(tǒng)軟件包括TCP/IP協(xié)議棧、文件系統(tǒng)、驅動程序等幾個部分。應用軟件包括數(shù)據(jù)訪問模塊、數(shù)據(jù)定位模塊、元數(shù)據(jù)管理模塊及數(shù)據(jù)緩存模塊等。數(shù)據(jù)訪問模塊經(jīng)過虛擬文件系統(tǒng)訪問存儲在存儲介質上的數(shù)據(jù);數(shù)據(jù)定位模塊根據(jù)元數(shù)據(jù)定位數(shù)據(jù)具體的存放位置;元數(shù)據(jù)管理模塊負責元數(shù)據(jù)的有效性;數(shù)據(jù)緩存模塊提供訪問數(shù)據(jù)的緩存機制。企業(yè)通過使用智能網(wǎng)絡磁盤,既可以提高企業(yè)內部公共數(shù)據(jù)存儲空間,方便數(shù)據(jù)共享和管理,又可以減少為了增加存儲空間而增加服務器所花費的代價;另一方面,企業(yè)可以減少每臺個人計算機的存儲空間,加大智能網(wǎng)絡磁盤的空間或數(shù)量,從整體上降低企業(yè)為存儲所花費的代價。

下面詳細介紹智能網(wǎng)絡磁盤的數(shù)據(jù)訪問模塊及系統(tǒng)軟件部分。

1 硬件
智能網(wǎng)絡磁盤硬件的核心是Samsung公司的S3C44BOX微處理器。S3C44BOX微處理器主頻為66 MHz,采用ARM7TDMI內核,支持16位的Thumb指令集和32位的ARM指令集;支持8個32 MB的存儲體地址空間。為了降低成本,SaC44BOX提供了豐富的片上設備,包括8 KB Cache、SRAM、LCD控制器、2通道UART、4通道DMA、系統(tǒng)管理器(片選邏輯、FP/EDO/SDRAM控制器)、帶PWM功能的5通道定時器、1個內部定時器、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內核映像、ROMFS文件系統(tǒng)和應用程序。智能網(wǎng)絡磁盤采用IDE接口硬盤作為存儲介質。普通IDE接口硬盤數(shù)據(jù)傳輸速率為133 Mbps,遠遠比磁帶機快,有利于數(shù)據(jù)傳輸;固態(tài)存儲器盡管存儲速度快,但其昂貴的價格使其在目前仍不適于海量數(shù)據(jù)存儲。S3C44BOX開發(fā)板的原理框圖如圖1所示。

S3C44BOX微處理器提供25位的地址總線Addr0~Addr24,提供16位的數(shù)據(jù)總線data0~datal5,因此SaC44BOX支持的最大存儲體空間為32 MB。IDE硬盤與內存之間按照DMA方式進行數(shù)據(jù)傳送,而以太網(wǎng)卡與內存之間采用中斷方式進行數(shù)據(jù)傳送。對于S3C44BOX微處理器,SDRAM安排于第6個或第7個bank,地址分別OxOc000000或OxOc800000開始。ATA接口位于第2個bank內,而以太網(wǎng)接口位于第1個bank內。

2 軟件
智能網(wǎng)絡磁盤系統(tǒng)軟件功能模塊如圖2所示。軟件負責接受請求、請求調度、數(shù)據(jù)分布管理及數(shù)據(jù)定位等功能;VFS為虛擬文件系統(tǒng),為不同的邏輯文件系統(tǒng)提供統(tǒng)一的接口;ROMFS和Ext2為邏輯文件系統(tǒng)。塊設備驅動程序為不同的塊設備提供一個統(tǒng)一的接口,并負責塊設備數(shù)據(jù)緩存功能;ATA接口驅動程序提供標準的AT總線接口驅動程序;TCP/IP協(xié)議和802.3協(xié)議組成一個協(xié)議棧,使設備可用于以太網(wǎng),數(shù)據(jù)可經(jīng)過Internet傳送;網(wǎng)絡設備經(jīng)過8019AS芯片連接,為此提供了RTL8019AS芯片驅動程序。


軟件模塊響應用戶的讀請求和寫請求,按照先來先服務策略調度請求,統(tǒng)一管理數(shù)據(jù)在磁盤上的分布視圖。每當有連接請求時,軟件模塊就要生成一個輕量級進程,響應連接請求,并根據(jù)請求的元數(shù)據(jù),決定文件的存儲和讀取集合??蛻襞cIND智能網(wǎng)絡磁盤之間采用無狀態(tài)連接,以減小客戶與網(wǎng)絡磁盤之間連接的復雜性。當打開一個網(wǎng)絡磁盤文件時,數(shù)據(jù)以一個臨時文件的形式存放在本地系統(tǒng)上,以后的操作都是對本地的臨時文件進行操作,打開完畢后,網(wǎng)絡磁盤上相應的文件對象自動關閉,響應進程死亡。在關閉文件的時候,如果文件被修改過,則寫回網(wǎng)絡磁盤,并且刪除掉本地的臨時文件;如果文件沒有經(jīng)過修改'則不用進行回寫操作,只在本地刪除掉臨時文件即可。一般情況下,打開文件時要建立一次連接,而關閉文件時可能要建立一次連接,也可能不要。目錄是一種特殊的文件,按照普通文件進行處理。

目前,系統(tǒng)只支持兩種文件系統(tǒng)ROMFS和Ext2。ROMFS是一個小型的ROM文件系統(tǒng),只能讀不能寫。它包含了需要在uClinux上運行的應用程序,在uClinux操作系統(tǒng)編譯期間被包含進uClinux二進制代碼中。Ext2文件系統(tǒng)安裝于ROMFS文件系統(tǒng)的/var目錄上。系統(tǒng)運行以后,ROMFS文件系統(tǒng)和ext2文件系統(tǒng)在內存中的邏輯關系如圖3所示。帶“*”號的為Ext2文件系統(tǒng)對象,不帶“*”的為ROMFS文件系統(tǒng)對象。


網(wǎng)絡通信采用TCP/IP協(xié)議和802.3協(xié)議。以太網(wǎng)已從一個共享的、低速的拓撲結構發(fā)展成為一種高性能的吉比特交換傳輸技術,采用以太網(wǎng)技術有利于網(wǎng)絡磁盤向吉比特以太網(wǎng)上移植。TCP/IP協(xié)議是一種開放式的網(wǎng)絡互聯(lián)協(xié)議,兼容性強,普及程度高,數(shù)據(jù)可以通過Intemet傳輸。

3 智能網(wǎng)絡磁盤系統(tǒng)軟件的
智能網(wǎng)絡磁盤采用uClinux作為操作系統(tǒng)。uClinux是專為不帶MMU的CPU而設計的嵌人式Linux操作系統(tǒng),具有以下優(yōu)點:第一,其源碼在GNU公共許可證下是開放的,任何人都可以自由使用和研究;第二,uClinux采用模塊化設計,具有很強的可裁減性,用戶可以根據(jù)自己的需要增加或裁減功能模塊;第三,uClinux功能強大,支持多任務操作、TCP/IP協(xié)議棧、多種文件系統(tǒng)等功能;第四,uClinux可移植性強,已經(jīng)成功地移植到各種CPU平臺上.像S3C44BOX、Motorola MC68000、MCF5206和MCF5207ColdFire等;第五,uClintlx還有1個與之相兼容的小型C語言庫uClihc,它與GNUC語言庫glibc兼容,方便用戶開發(fā)應用程序。目前,uClinux支持3個Linux內核版本,分別為2.O.x、2.4.x和2.6.x,本設計采用的是2.4.xLinux內核。該內核與IEEE POSIX標準兼容,使得大部分開源代碼不經(jīng)過修改,只需要簡單編譯一下就可以移植到目標平臺上。

在實現(xiàn)智能網(wǎng)絡磁盤時,先開發(fā)了基于S3C44BOX微處理器的系統(tǒng)電路板,然后將uClinux操作系統(tǒng)移植到本電路板上,最后編寫IND軟件。下面主要介紹uClinux操作系統(tǒng)的移植過程和uClinux操作系統(tǒng)的引導過程。

在移植uClinux操作系統(tǒng)時,先要得到一個完整的uClinux操作系統(tǒng)源碼,既可以從網(wǎng)站上下載一個完整的uClinux光盤,也可以從網(wǎng)站上下載必要的源碼,如Linux內核、uClinux補丁程序、uClibc和所需的應用程序源碼。我們下載的是uClinuX_dist一20041215.tar光盤,其中包含對s3C44BOX的支持。其次是要建立交叉編譯開發(fā)環(huán)境。針對電路板所產(chǎn)生的部分配置內容如下:
#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

從以上內容可以看出,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)絡,10/100 Mbps以太網(wǎng)絡、IDE和ext2文件系統(tǒng)等內容。配置完的uClinux操作系統(tǒng)帶有進程調度模塊、內存管理模塊、ATA接口驅動程序、文件系統(tǒng)、TCP/1P協(xié)議棧、網(wǎng)卡驅動等功能。

uClinux配置完成以后即可對uClinux編譯,產(chǎn)生兩個文件:一個是非壓縮的uClinux操作系統(tǒng)二進制代碼uCllnux_bootram.bin,其在SDRAM中工作的起始地址為0xoc008000;另一個是壓縮的uclinux操作系統(tǒng)二進制代碼uClinux_bootrom.bin,通過JTAG線纜燒寫到Flash中,由bootloader程序將其加載到SDRAM中執(zhí)行。在系統(tǒng)啟動的時候uCIinux_bootrom.bin要先進行解壓縮,存放到SDRAM中,然后跳轉到uClinux操作系統(tǒng)的入口處執(zhí)行。內核在啟動時要檢查機器的CPU類型和體系結構、初始化CPU、建立RAM頁表和中斷矢量表、加載設備驅動程序。這一切完成之后,uClinux創(chuàng)建最初的init進程,安裝根文件系統(tǒng)ROMFS和ext2磁盤文件系統(tǒng)。最后,操作系統(tǒng)將自動執(zhí)行IND軟件,等待接收客戶端請求。

uClinux操作系統(tǒng)的引導通過B00tlDader程序完成。從本質上講,它不屬于操作系統(tǒng)內核,針對不同的CPU體系結構,不具有可移植性。本設計所編寫的Bootloader程序在系統(tǒng)啟動時完成以下幾項工作:
①將存放在Flash中壓縮的操作系統(tǒng)內核進行解壓縮,然后復制到從0xoc008000處開始的SDRAM中;
②改寫系統(tǒng)的內存地址鏡像,將RAM的起始地址映射為O;
③設置CPU的sp寄存器,并將內核的BSS段清零;
④設置CPU的pc寄存器,使其值指向內核的起始地址。

4 性能分析
智能網(wǎng)絡磁盤的性能受到系統(tǒng)各個方面的制約,像IND軟件的進程調度策略、局域網(wǎng)的帶寬、ATA總線的帶寬、文件系統(tǒng)的緩存機制和客戶端的緩存機制。這里分析文件系統(tǒng)的緩存機制及系統(tǒng)數(shù)據(jù)吞吐率,以此對智能網(wǎng)絡磁盤的性能作個初步的衡量。

虛擬文件系統(tǒng)和塊設備驅動程序普遍采用高速緩存技術,將最近最常使用的數(shù)據(jù)保存在內存中,提高數(shù)據(jù)在內存中的命中率。文件系統(tǒng)的目錄項對象、索引節(jié)點對象、文件對象及vfsmount對象都存在獨立的高速緩存區(qū)中,當請求的對象在高速緩存區(qū)中,且有效時,就直接從高速緩存區(qū)中取出數(shù)據(jù)發(fā)送給客戶;如果所請求的數(shù)據(jù)不存在,則在高速緩存區(qū)中取出一個空閑的對象作為新對象的描述符,這樣可以減少為創(chuàng)建新對象而分配內存所花費的時間,提高系統(tǒng)的效率。對于索引節(jié)點對象、目錄項對象及vfsmount對象,為了提高它們的查找效率,這些對象都存在于它們各自的Hash表中。對于塊設備驅動程序使用高速緩存區(qū),可以降低頻繁地讀取存儲設備的次數(shù)。對客戶端目錄文件的讀取要采用一定的預取機制,因為對目錄文件的打開比較頻繁,每打開一個目錄,都要建立一次連接,因此,采可行的預取機制可以有效地減少建立連接的次數(shù)。

系統(tǒng)性能測試采用BenchMark軟件。硬件測試平臺由智能網(wǎng)絡磁盤、l00MB交換機和24臺客戶機組成。測試文件大小為1 MB,客戶機隨機地向智能網(wǎng)絡磁盤發(fā)送讀請求,測試結果如圖4所示。吞吐率表示多用戶請求時單位時間內通過網(wǎng)絡傳輸?shù)臄?shù)據(jù)總量。


從測試結果可以得出,當客戶數(shù)逐漸增多時,每個客戶所得到的平均帶寬逐漸漸少。當客戶增加到24個時,每個客戶可得到大約O.3 Mbps的帶寬,可以滿足文件遠程訪問請求。


結 語
本文首先介紹了智能網(wǎng)絡磁盤的硬件開發(fā)環(huán)境,然后詳細介紹了智能網(wǎng)絡磁盤的軟件模塊及關鍵技術,最后在S3C4480X嵌入式開發(fā)板上實現(xiàn)了智能網(wǎng)絡磁盤??蛻舳嗽谠L問智能網(wǎng)絡磁盤時,速度還有待進一步提高。這可以從改善網(wǎng)絡環(huán)境,提高網(wǎng)卡的速度著手,對客戶端請求的調度策略也可以作為一個方面的研究,其他的功能模塊還需要繼續(xù)添加。相信智能網(wǎng)絡磁盤對企業(yè)來說是一個好的解決存儲設備問題的方案。



評論


相關推薦

技術專區(qū)

關閉