何 杰,郭燕妮,張 博,張 剛
(太原理工大學(xué)信息工程學(xué)院,太原 030024)
基于SoPC和NFS的虛擬SATA硬盤*
何杰,郭燕妮,張博,張剛
(太原理工大學(xué)信息工程學(xué)院,太原030024)
摘要:大數(shù)據(jù)背景下,網(wǎng)絡(luò)文件系統(tǒng)NFS作為一種成熟的分布式文件系統(tǒng),為數(shù)據(jù)存儲(chǔ)、管理提供了良好解決方案;SoPC是基于軟硬件協(xié)同設(shè)計(jì)的片上可編程系統(tǒng),應(yīng)用前景十分廣泛。系統(tǒng)以SATA硬盤為存儲(chǔ)介質(zhì)實(shí)現(xiàn)了一個(gè)基于SoPC的完整網(wǎng)絡(luò)存儲(chǔ)結(jié)構(gòu)。重點(diǎn)介紹了如何在FPGA內(nèi)嵌MicroBlaze處理器上設(shè)計(jì)實(shí)現(xiàn)NFS服務(wù)組件、文件系統(tǒng)軟件,以及如何設(shè)計(jì)實(shí)現(xiàn)SATA硬盤控制硬件IP核。經(jīng)Xilinx的XUPV5_LX110T開發(fā)平臺(tái)調(diào)試驗(yàn)證,SoPC網(wǎng)絡(luò)存儲(chǔ)軟硬件系統(tǒng)工作正常,可以用作云存儲(chǔ)的虛擬資源節(jié)點(diǎn)。
關(guān)鍵詞:網(wǎng)絡(luò)文件系統(tǒng),SATA硬盤,F(xiàn)PGA,PetaLinux
大數(shù)據(jù)時(shí)代,云存儲(chǔ)呈現(xiàn)越來越強(qiáng)大的生命力。云計(jì)算是網(wǎng)絡(luò)上基于虛擬資源的并行處理[1-2],對(duì)于云存儲(chǔ)系統(tǒng),虛擬資源是通過IP地址訪問的存儲(chǔ)介質(zhì),即網(wǎng)絡(luò)硬盤。網(wǎng)絡(luò)硬盤可以部署在互聯(lián)網(wǎng)上,利用現(xiàn)有Hadoop軟件[3],可以極低成本搭建一個(gè)超大容量、極高速度的個(gè)人云存儲(chǔ)系統(tǒng)。2012年Marvell公司推出了第一款基于SoPC的SATA硬盤接口芯片,但是它僅支持PCIe 2.0接口,不支持網(wǎng)絡(luò)連接。目前已有針對(duì)老式ATA接口[4]設(shè)計(jì)的網(wǎng)絡(luò)硬盤,但ATA接口已經(jīng)淘汰,而針對(duì)先進(jìn)的SATA接口[5]網(wǎng)絡(luò)硬盤設(shè)計(jì)還屬商業(yè)機(jī)密,沒有相關(guān)的文獻(xiàn)報(bào)道,同時(shí)現(xiàn)有具有網(wǎng)絡(luò)接入能力的SATA硬盤使用的是FTP(File Transfer Protocol)文件傳輸協(xié)議[6],只能實(shí)現(xiàn)文件上傳、下載等操作,不能實(shí)現(xiàn)文件在線打開、編輯等功能。
1.1系統(tǒng)簡(jiǎn)介
以FPGA內(nèi)嵌的MicroBlaze處理器為核心搭建系統(tǒng),包括NFS服務(wù)組件、文件系統(tǒng)、SATA控制器、以太網(wǎng)控制器和DDR控制器5個(gè)主要部分,如圖1所示。
圖1 系統(tǒng)框圖
NFS服務(wù)組件實(shí)現(xiàn)收發(fā) RPC請(qǐng)求以及RpcBind、Mountd和Nfsd等服務(wù)器端核心功能;文件系統(tǒng)負(fù)責(zé)文件打開、讀、寫、重命名,刪除等命令操作和尋址磁盤分區(qū)的存儲(chǔ)介質(zhì);硬盤控制器通過驅(qū)動(dòng)程序與文件系統(tǒng)耦合,根據(jù)文件系統(tǒng)生成的命令和尋址參數(shù)實(shí)現(xiàn)讀、寫訪問操作;以太網(wǎng)控制器實(shí)現(xiàn)網(wǎng)絡(luò)傳輸;DDR控制器提供數(shù)據(jù)緩存。
系統(tǒng)軟硬件劃分為可編程系統(tǒng)PS和可編程邏輯PL兩個(gè)部分,其中PS包括NFS服務(wù)組件和文件系統(tǒng),PL由SATA硬盤控制器、以太網(wǎng)控制器和DDR2控制器組成,軟硬件之間通過MicroBlaze耦合,Xilinx公司提供專門的工具EDK(Embedded Development Kit)實(shí)現(xiàn)軟硬件協(xié)同設(shè)計(jì)。硬件描述語(yǔ)言設(shè)計(jì)的IP核掛載到PLB總線上,作為MicroBlaze的設(shè)備并編寫相應(yīng)的設(shè)備驅(qū)動(dòng)程序。移植操作系統(tǒng)PetaLinux到MicroBlaze,在操作系統(tǒng)上設(shè)計(jì)獨(dú)立的NFS服務(wù)組件和文件系統(tǒng)應(yīng)用程序。XUPV5_LX110T開發(fā)平臺(tái)具有可配置的以太網(wǎng)和DDR控制器,可配置使用。
1.2NFS服務(wù)組件
基于RPC中間件的NFS支持Socket編程,一次遠(yuǎn)程過程調(diào)用從RPC請(qǐng)求開始,到接收到RPC應(yīng)答結(jié)束,如圖2所示。
圖2 RPC處理過程
RPC消息解包模塊負(fù)責(zé)處理RPC消息包頭,解析出RPC請(qǐng)求參數(shù)三元組:程序號(hào),版本號(hào)和過程號(hào);RPCBind、Mountd和Nfsd 3個(gè)基本組件負(fù)責(zé)處理具體的RPC請(qǐng)求;RPC消息封包模塊將處理結(jié)果封裝成RPC應(yīng)答消息包并通過網(wǎng)絡(luò)發(fā)送模塊發(fā)送。Socket編程采用混合多端口的異步方法,按照TCP協(xié)議創(chuàng)建rpcbind、mountd和Nfsd的網(wǎng)絡(luò)套接字;指定rpcbind為知名端口111,其他為隨機(jī)端口。封解RPC消息包模塊按照PRC格式解析或封裝RPC消息,獲得請(qǐng)求參數(shù)或發(fā)送處理結(jié)果。NFS服務(wù)器的3個(gè)核心基本組件都有特定功能:RPCBind主要實(shí)現(xiàn)查詢服務(wù)主機(jī)時(shí)間、查詢服務(wù)IP地址、設(shè)置取或消服務(wù)端三元組等5個(gè)過程;Mountd掛載或卸載共享目錄、添加輸出目錄和查詢共享目錄等6個(gè)文件名操作;Nfsd主要實(shí)現(xiàn)read、write、create和remove等18個(gè)物理訪問操作。
1.3文件系統(tǒng)
參考linux_kernel的文件系統(tǒng)部分源代碼,在分析虛擬文件系統(tǒng)VFS以及邏輯文件系統(tǒng)EXT2的基礎(chǔ)上,按照EXT2文件系統(tǒng)結(jié)構(gòu)特點(diǎn),用文件系統(tǒng)管理磁盤數(shù)據(jù)資源,設(shè)計(jì)具有松耦合特性的資源管理器,為上層應(yīng)用提供文件操作基本數(shù)據(jù)服務(wù)。提取出文件的打開、關(guān)閉、讀、寫、創(chuàng)建等基本操作,按照通用的文件標(biāo)準(zhǔn)接口,用不同功能的資源管理器模塊重新描述文件操作流程,各流程通過訪問磁盤資源管理器,完成文件的基本操作。設(shè)計(jì)文件系統(tǒng)主控制器控制文件操作流程步驟,完成對(duì)磁盤文件的高效訪問管理。文件系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 文件系統(tǒng)結(jié)構(gòu)框圖
1.4SATA硬盤控制器
在SATA控制器與SATA硬盤之間通過SATA接口通信,接口協(xié)議為SATA協(xié)議,本文實(shí)現(xiàn)的是傳輸速率為3.0 Gbps的SATA2.0協(xié)議,其結(jié)構(gòu)分為物理層、鏈路層、傳輸層和命令層四層,如下頁(yè)圖4所示。
RX和TX分別與硬盤的差分收發(fā)信號(hào)線相接,文件系統(tǒng)接口通過驅(qū)動(dòng)程序和文件系統(tǒng)相連。接收數(shù)據(jù)時(shí),在物理層將碼流串/并轉(zhuǎn)換,8B10B解碼后送到鏈路層,鏈路層解幀和解擾后提取出幀信息結(jié)構(gòu)(Frame Information Structures,F(xiàn)IS)及CRC值并判斷傳輸是否有錯(cuò),同時(shí)將FIS提交傳輸層解析,得到操作狀態(tài)或數(shù)據(jù)發(fā)送到命令層,命令層通過文件系統(tǒng)接口傳送給處理器。發(fā)送過程是接收的逆過程,命令層將外部命令、參數(shù)、數(shù)據(jù)等轉(zhuǎn)換成SATA協(xié)議格式后交給傳輸層形成FIS消息,鏈路層將FIS和CRC值加擾后封裝成幀送到物理層發(fā)送。
圖4 SATA硬盤控制器結(jié)構(gòu)
系統(tǒng)搭建在EDK平臺(tái)上實(shí)現(xiàn),步驟如下:①新建一個(gè)基于XUPV5_LX110T開發(fā)平臺(tái)的EDK工程,選擇配置需要使用的資源,如DDR2_SDRAM。②在EDK工程下將本文設(shè)計(jì)SATA控制器IP核掛載到PLB總線上。③在PetaLinux中開發(fā)設(shè)備驅(qū)動(dòng)程序和NFS服務(wù)組件、文件系統(tǒng)應(yīng)用程序。④將EDK工程拷貝到PetaLinux中交叉編譯生成image. bin文件。⑤在EDK下將image.bin文件下載到DDR2_SDRAM中,最后啟動(dòng)操作系統(tǒng)及應(yīng)用程序。
圖5是EDK下PLB總線接口界面,圖中展示了所有掛載在PLB總線下的設(shè)備,其中DDR2_SDRAM、Hard_Ethernet_MAC、RS232_Uart_1 是XUPV5_LX110T開發(fā)平臺(tái)可以選擇配置的資源,sata_controler_0是所設(shè)計(jì)SATA硬盤控制器,其他為工程自動(dòng)生成。圖中沒有展開顯示的Addresses欄是設(shè)備地址欄,在這兒可以給每個(gè)設(shè)備分配地址空間,本設(shè)計(jì)分配的 sata_controler_0地址為0xcb200000-0xcb20ffff。
圖5 PLB總線接口
3.1SATA IP核的驗(yàn)證
SATA硬盤控制器性能的好壞直接影響NFS服務(wù)器的穩(wěn)定性。運(yùn)用Xilinx公司的在線調(diào)試工具ChipScope測(cè)試SATA控制器IP核,圖6是完成一次讀操作后,接收到的硬盤應(yīng)答幀。圖中SOF_det、EOF_det分別表示檢測(cè)到幀頭、幀尾,rxdata0和Rx-FISData分別是來自物理層和解擾后的數(shù)據(jù)。由圖6易知幀數(shù)據(jù)的第一個(gè)雙字為0X01500034,第一個(gè)字節(jié)是幀類型標(biāo)志號(hào),0X34說明接收到的是應(yīng)答幀,第三個(gè)字節(jié)是狀態(tài)寄存器,0X50說明讀操作無錯(cuò)且硬盤已準(zhǔn)備好接受下一個(gè)命令,其他各個(gè)字節(jié)也分別代表映射寄存器組中各個(gè)寄存器的值。
圖6 SATA硬盤控制器測(cè)試結(jié)果
3.2系統(tǒng)驗(yàn)證
NFS服務(wù)器IP地址是192.168.0.10,SATA硬盤容量為80 GB。在CentOS6.4操作系統(tǒng)下通過標(biāo)準(zhǔn)NFS客服端訪問本文設(shè)計(jì)的NFS服務(wù)器,經(jīng)測(cè)試服務(wù)器能夠完整無誤地實(shí)現(xiàn)文件的上傳、下載、刪除,新建、重命名等基本操作。一個(gè)上傳文件的操作結(jié)果顯示在圖7中,NFS服務(wù)器共享目錄掛載路徑為/ tmp/nfs,從圖看出其操作界面和本地操作完全一樣。
圖7 上傳操作結(jié)果
本文采用軟硬件協(xié)同的設(shè)計(jì)方法,基于Xilinx 的FPGA設(shè)計(jì)了一可用作云存儲(chǔ)節(jié)點(diǎn)的虛擬化SATA硬盤,并驗(yàn)證了它的功能。通過反復(fù)調(diào)試與調(diào)整,系統(tǒng)能夠成功掛載共享文件系統(tǒng),進(jìn)行基本文件操作且穩(wěn)定性良好。下一步將增加多用戶掛載功能,同時(shí)將一個(gè)SATA硬盤擴(kuò)展為多個(gè)SATA盤組,從而形成云存儲(chǔ)系統(tǒng)。
參考文獻(xiàn):
[1]李軍,勞鳳丹,鄒仁明.校園網(wǎng)云盤系統(tǒng)構(gòu)建研究[J].通信學(xué)報(bào),2013,34(Z2):133-137.
[2]戴劍偉,王剛.指揮信息系統(tǒng)云架構(gòu)[J].火力與指揮控制,2013,38(2):76-78.
[3]田秀霞,周耀君,畢忠勤,等.基于Hadoop架構(gòu)的分布式計(jì)算和存儲(chǔ)技術(shù)及其應(yīng)用[J].上海電力學(xué)院學(xué)報(bào),2011,27(1):70-74.
[4]張威.FPGA中個(gè)人云存儲(chǔ)系統(tǒng)的設(shè)計(jì)與研究[D].太原:太原理工大學(xué),2014.
[5]陳才.基于FPGA的SATA主機(jī)端控制器的設(shè)計(jì)[D].武漢:華中科技大學(xué),2011.
[6]孫韓林,金躍輝,高雪松,等.FTP協(xié)議的測(cè)試及分析[J].計(jì)算機(jī)工程,2008,34(23):133-135.
[7]王超,劉偉,張得聰.基于SATA的嵌入式直接存儲(chǔ)系統(tǒng)[J].計(jì)算機(jī)工程,2012,38(12):232-235.
[8]劉榮勝.一種基于異步回調(diào)機(jī)制的NFS服務(wù)端設(shè)計(jì)與實(shí)現(xiàn)[J].蘇州市職業(yè)大學(xué)學(xué)報(bào),2013(1):41-43.
[9]葉軍,朱華生.嵌入式Linux NFS方式下應(yīng)用程序的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(32):73-75.
[10]譚會(huì)生,張昌凡.EDA技術(shù)及應(yīng)用[M].2版.西安:西安電子科技大學(xué)出版社,2004.
[11] Xilinx Coporation.Virtex-5FPGA RocketIO GTP Transceiver User Guide[R].San Jose:Xilinx,2008.
[12]楊佳朋,張剛,郝敏.基于RocketIO的SATA物理層實(shí)現(xiàn)[J].電視技術(shù),2013,37(3):70-72.
[13]包懷忠.EXT2文件系統(tǒng)分析[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(4):1022-1024.
中圖分類號(hào):TP333
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1002-0640(2016)04-0174-03
收稿日期:2015-03-13修回日期:2015-04-15
*基金項(xiàng)目:太原理工大學(xué)校青年基金(2012L091)
作者簡(jiǎn)介:何杰(1988-),男,湖南漢壽人,碩士研究生。研究方向:SoC集成電路設(shè)計(jì)。
Virtual SATA Disk Based on SoPC and NFS
HE Jie,GUO Yan-ni,ZHANG Bo,ZHANG Gang
(College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China)
Abstract:NFS,network file system,is a mature distributed file system.It provides a solution to data storage and management in the era of big data.SoPC,a programmable on-chip system,is based on hardware and software co-design.It has a wide application prospect.The system adopts SATA as its storage media to implement a network storage architecture based on SoPC.It focuses on how to implement NFS server component and file system on the MicroBlaze processor embedded in FPGA. Also,the implementation of the IP core of SATA hard disk control is the focal point.The design is debugged on the platform of XUPV5_LX110T of Xilinx.The result certifies that SoPC network storage system works well and it can be used as the virtual resource node of cloud storage.
Key words:network file system,SATA hard disk,F(xiàn)PGA,PetaLinux