文獻標識碼: A
文章編號: 0258-7998(2014)12-0030-03
0 引言
隨著網(wǎng)絡技術的不斷進步以及網(wǎng)絡應用程序的增加,人們對簡單快捷易管理易攜帶存儲方式的需求愈加強烈,,而網(wǎng)絡硬盤可以不需要攜帶任何存儲設備,,只要通過網(wǎng)絡就能隨時隨地對目標文件進行訪問。
目前,,已有眾多企業(yè)推出了各類的網(wǎng)絡硬盤比如百度網(wǎng)盤,、微軟Skydrive、華為網(wǎng)盤等,,注冊用戶可以通過賬號密碼隨時隨地訪問自己的已經(jīng)上傳的內(nèi)容,,對文件進行管理,實現(xiàn)了無存儲設備的遠程訪問,,并且不會損壞文件,。但是,目前已有的網(wǎng)絡硬盤均是基于B/S模式的,,雖然支持文件的一次性上傳下載及在線瀏覽等功能,,但與操作本地文件之間有本質區(qū)別,,用戶不能在線對文件進行編輯保存。此外,,該模式的網(wǎng)絡硬盤還存在安全性能差,,對服務器性能要求高、與服務器交互性差及存儲數(shù)據(jù)傳輸速度慢等問題,。
本文通過FPGA編程設計實現(xiàn)了一種基于C/S模式的網(wǎng)絡硬盤,,與現(xiàn)有B/S模式網(wǎng)絡硬盤不同,它是通過客戶端與服務器進行直接相連的,,沒有中間環(huán)節(jié),,因此具有響應速度快、交互性強,、網(wǎng)絡通信量低,、易于處理大量數(shù)據(jù)等特點,而且,通過網(wǎng)絡用戶可以對文件進行在線操作,。
1 系統(tǒng)簡介及平臺搭建
1.1 系統(tǒng)整體架構
本文設計實現(xiàn)了一種基于FPGA的C/S模式網(wǎng)絡硬盤,,其系統(tǒng)整體框架如圖1所示,主要包括用戶層,、內(nèi)核層和硬件層,。其中,用戶層主要完成的是客戶端與服務器通信,;硬件層負責對存儲硬盤的操作,,可以通過ATA硬盤控制器對上層命令進行解析,對硬盤進行數(shù)據(jù)讀取和存入,;內(nèi)核層是用戶層與硬件層之間的連接樞紐,該層可以通過文件系統(tǒng)以及驅動程序對用戶層發(fā)送的請求進行處理并對硬件層硬盤進行調用訪問,。
1.2 系統(tǒng)硬件平臺搭建
系統(tǒng)是在XUPV5_LX110T開發(fā)板上外接ATA硬盤以及網(wǎng)線實現(xiàn)的,,結構組成如圖2所示。平臺是以Xilinx公司的XUPV5_LX110T FPGA開發(fā)板為基礎搭建的,,通過對開發(fā)板內(nèi)嵌的各個模塊進行選擇,,然后連接DDR2_SRAM、Hard_Ethernet_MAC,、RS232_Uart_1等基本外部設備,,最后添加硬盤控制器IP核,完成系統(tǒng)整體平臺的搭建,。其中,,核心處理器選擇的是Microblaze軟核處理器。
2 系統(tǒng)設計
2.1 硬件層設計
由于選用的XUPV5_LX110T FPGA開發(fā)板可以提供圖2中的大部分模塊,,因此,,系統(tǒng)的硬件層主要是對ATA硬盤控制器IP核[1]的設計,。本文通過對ATA/ATAPI-6協(xié)議進行分析,用VHDL語言設計實現(xiàn)對硬盤數(shù)據(jù)進行扇區(qū)讀寫操作,,其具體模塊結構圖3所示,。
硬盤控制器按照功能模塊共劃分為BRAM接收和發(fā)送模塊、指令解析模塊,、硬盤訪問控制模塊,、CRC校驗模塊以及差錯處理模塊。其中,,指令解析模塊負責對上層發(fā)送的請求進行監(jiān)控解析,,并觸發(fā)硬盤訪問控制模塊從而對硬盤操作;硬盤訪問控制模塊在接收到觸發(fā)命令后,,對基本控制時序進行設置,,包括硬盤硬件復位、硬盤模式設置,、扇區(qū)讀寫等,;CRC校驗模塊對讀寫的數(shù)據(jù)進行校驗;差錯處理模塊是對錯誤指令或指令執(zhí)行異常的情況進行處理,。以上所有模塊均是用VHDL語言實現(xiàn)的,,并通過仿真調試及測試。
系統(tǒng)中內(nèi)核層與硬盤之間是以PLB總線掛載的方式互連的,,掛載后,,可以通過硬盤驅動程序[2],以寄存器的方式訪問硬盤數(shù)據(jù),,因此在以上功能模塊設計以后,,要對硬盤控制器按照自定義IP核的方法進行IP核封裝來作為外接設備。
2.2 內(nèi)核層設計
本系統(tǒng)采用FAT32文件系統(tǒng)[3]對用戶數(shù)據(jù)進行管理,。為適應上層用戶層的調用,,本文對FAT32文件系統(tǒng)進行了改進:首先對文件系統(tǒng)信息建立全局變量struct fs_fat32 fatfs,并用struct node_fat32初始化文件節(jié)點,;然后重寫對文件及目錄的操作函數(shù)以適應上層NFS的調用,;最后編寫FAT32文件系統(tǒng)的Makefile文件進行測試。測試證明可以對文件以及目錄進行正確讀寫,、修改,、刪除等基本操作。
2.3 用戶層設計
用戶層設計是系統(tǒng)的核心部分,,主要是對NFS服務器端的設計,。NFS是一種分布式文件系統(tǒng)協(xié)議,通過網(wǎng)絡,,用戶可以像訪問本地文件一樣訪問遠端系統(tǒng)上的文件,。因此結合RPC(Remote Procedure Call,,遠程過程調用)和XDR(External Data Representation,外部數(shù)據(jù)表示),,就可以實現(xiàn)跨網(wǎng)絡,、跨操作系統(tǒng)、跨文件系統(tǒng)的訪問,。其中,,RPC是可實現(xiàn)遠程客戶端對服務器端函數(shù)的調用。而XDR保證了數(shù)據(jù)格式的一致性,。
NFS服務器端[4]設計主要是實現(xiàn)一次完整的NFS文件訪問,,通過客戶端與服務器端RPC的Portmap、Mountd,、NFSD 3個模塊間的交互完成,,其交互的具體過程如圖4所示。在交互過程中,,每當服務器端NFSD模塊接收到客戶端請求時,,就會對接收到的數(shù)據(jù)進行XDR解碼處理,并根據(jù)解碼得到的過程號調用NFSD程序中的過程進行操作,,NFSD過程會通過調用底層文件系統(tǒng)對請求進行處理,,并將處理結果進行XDR編碼后發(fā)送回客戶端,其具體操作流程如圖5所示,。
考慮到NFS整體與內(nèi)核聯(lián)系緊密,,可移植性低,因此本文在保持NFS功能的基礎上對其進行了簡化設計及改進,,首先將Portmap(RPCbind),、Mountd、NFSD寫成應用程序,,采用Linux中混合多端口的異步Socket[5]編程方法,。分別基于TCP和UDP傳輸協(xié)議對NFSD、Mountd,、Portmap進行套接字創(chuàng)建,然后設置全局變量svc_fdset,、fd_set對Socket進行管理,,并利用select函數(shù)選擇有請求的套接字,最后用recv函數(shù)和send函數(shù)進行數(shù)據(jù)接收和發(fā)送,。其中,,本文對NFSD、Mountd,、Portmap這三個進程用結構體svc_program進行定義,,并用結構體中pg_next將各個進程加入鏈表,,其中,鏈表頭為NFSD程序,。在接收到請求后,,服務器端從鏈表頭對鏈表進行順序查找,找到需要的服務,,對其按照圖5所示的流程進行處理,。
3 系統(tǒng)驗證
本系統(tǒng)經(jīng)過系統(tǒng)移植[6]將軟硬件進行整合來完成系統(tǒng)的整體設計。先下載petalinux-v0.40-final內(nèi)核源碼到虛擬機“/root/桌面”目錄下移植Petalinux操作系統(tǒng),,然后將硬件平臺信息及硬件工程添加到操作系統(tǒng)中,,最后將NFS服務程序以應用程序的形式添加到操作系統(tǒng)內(nèi)核,同時將硬盤控制器封裝為IP核添加到內(nèi)核中,。添加完成后對內(nèi)核進行編譯并燒寫到開發(fā)板中,,運行整個系統(tǒng)。
系統(tǒng)運行后,,打開客戶端,,在客戶端輸入掛載命令:sudo mount-t nfs-o nolock 192.168.xx.xx:/ /tmp/nfs,其中,192.168.xx.xx為開發(fā)板IP地址,,本文中為192.168.0.10,,
“/tmp/nfs”為客戶端掛載目錄。測試結果如圖6所示,,圖中在客戶端“/tmp/nfs”中顯示的文件,,實際為服務器端硬盤中的文件,在客戶端nfs目錄下即可打開這些文件,,在線對文件進行讀寫,、修改保存等操作,而且拖動文件即可實現(xiàn)文件下載上傳,,速度可達1.3 MB/s,。實驗表明,設計的基于FPGA的C/S模式網(wǎng)絡硬盤具有以下優(yōu)勢:(1)交互性強,,支持用戶在線操作文件,;(2)實用性廣,可進行硬盤陣列擴展,,擴大內(nèi)存,;(3)兼容性強,C/S模式網(wǎng)絡硬盤具有與本地硬盤相同的兼容性,,不限制存儲文件的格式,、大小及存儲時間;(4)安全性高,采取賬號密碼映射IP的方式,,存儲文件僅登錄用戶可見,。
4 結論
本文設計了一種基于FPGA的C/S模式網(wǎng)絡硬盤,在XUPV5_LX110T開發(fā)板搭建了系統(tǒng)并驗證通過,。結果表明該種網(wǎng)絡硬盤具備很好的可行性,,可以實現(xiàn)遠程訪問,而且傳輸速度快,,支持在線編輯,具有廣泛的應用前景及參考價值,。
參考文獻
[1] 彭維.基于PLB總線的用戶IP核接口技術研究[D].合肥:合肥工業(yè)大學,2011.
[2] 宋寶華.Linux設備驅動開發(fā)詳解(第二版)[M].北京:人民郵電出版社,,2010.
[3] 楊明極,,陳方縣,吳學君.嵌入式系統(tǒng)中SD卡的FAT32文件系統(tǒng)的設計[J].電聲技術,,2010,,34(4):36-39.
[4] 劉榮勝.一種基于異步回調機制的NFS服務端設計與實現(xiàn)[J].蘇州市職業(yè)大學學報,2013(1):41-43.
[5] STEVENS W R.Linux network programming——Socket[Z].2011.
[6] 薛慧敏,,武傳華,,路后兵.MicroBlaze處理器的PetaLinux操作系統(tǒng)移植[J].單片機與嵌入式系統(tǒng)應用,2011,,11(4):67-69.