APP下载

基于SoPC和NFS的虚拟SATA硬盘*

2016-08-03郭燕妮

火力与指挥控制 2016年4期

何 杰,郭燕妮,张 博,张 刚

(太原理工大学信息工程学院,太原 030024)

基于SoPC和NFS的虚拟SATA硬盘*

何杰,郭燕妮,张博,张刚

(太原理工大学信息工程学院,太原030024)

摘要:大数据背景下,网络文件系统NFS作为一种成熟的分布式文件系统,为数据存储、管理提供了良好解决方案;SoPC是基于软硬件协同设计的片上可编程系统,应用前景十分广泛。系统以SATA硬盘为存储介质实现了一个基于SoPC的完整网络存储结构。重点介绍了如何在FPGA内嵌MicroBlaze处理器上设计实现NFS服务组件、文件系统软件,以及如何设计实现SATA硬盘控制硬件IP核。经Xilinx的XUPV5_LX110T开发平台调试验证,SoPC网络存储软硬件系统工作正常,可以用作云存储的虚拟资源节点。

关键词:网络文件系统,SATA硬盘,FPGA,PetaLinux

0 引言

大数据时代,云存储呈现越来越强大的生命力。云计算是网络上基于虚拟资源的并行处理[1-2],对于云存储系统,虚拟资源是通过IP地址访问的存储介质,即网络硬盘。网络硬盘可以部署在互联网上,利用现有Hadoop软件[3],可以极低成本搭建一个超大容量、极高速度的个人云存储系统。2012年Marvell公司推出了第一款基于SoPC的SATA硬盘接口芯片,但是它仅支持PCIe 2.0接口,不支持网络连接。目前已有针对老式ATA接口[4]设计的网络硬盘,但ATA接口已经淘汰,而针对先进的SATA接口[5]网络硬盘设计还属商业机密,没有相关的文献报道,同时现有具有网络接入能力的SATA硬盘使用的是FTP(File Transfer Protocol)文件传输协议[6],只能实现文件上传、下载等操作,不能实现文件在线打开、编辑等功能。

1 系统设计

1.1系统简介

以FPGA内嵌的MicroBlaze处理器为核心搭建系统,包括NFS服务组件、文件系统、SATA控制器、以太网控制器和DDR控制器5个主要部分,如图1所示。

图1 系统框图

NFS服务组件实现收发 RPC请求以及RpcBind、Mountd和Nfsd等服务器端核心功能;文件系统负责文件打开、读、写、重命名,删除等命令操作和寻址磁盘分区的存储介质;硬盘控制器通过驱动程序与文件系统耦合,根据文件系统生成的命令和寻址参数实现读、写访问操作;以太网控制器实现网络传输;DDR控制器提供数据缓存。

系统软硬件划分为可编程系统PS和可编程逻辑PL两个部分,其中PS包括NFS服务组件和文件系统,PL由SATA硬盘控制器、以太网控制器和DDR2控制器组成,软硬件之间通过MicroBlaze耦合,Xilinx公司提供专门的工具EDK(Embedded Development Kit)实现软硬件协同设计。硬件描述语言设计的IP核挂载到PLB总线上,作为MicroBlaze的设备并编写相应的设备驱动程序。移植操作系统PetaLinux到MicroBlaze,在操作系统上设计独立的NFS服务组件和文件系统应用程序。XUPV5_LX110T开发平台具有可配置的以太网和DDR控制器,可配置使用。

1.2NFS服务组件

基于RPC中间件的NFS支持Socket编程,一次远程过程调用从RPC请求开始,到接收到RPC应答结束,如图2所示。

图2 RPC处理过程

RPC消息解包模块负责处理RPC消息包头,解析出RPC请求参数三元组:程序号,版本号和过程号;RPCBind、Mountd和Nfsd 3个基本组件负责处理具体的RPC请求;RPC消息封包模块将处理结果封装成RPC应答消息包并通过网络发送模块发送。Socket编程采用混合多端口的异步方法,按照TCP协议创建rpcbind、mountd和Nfsd的网络套接字;指定rpcbind为知名端口111,其他为随机端口。封解RPC消息包模块按照PRC格式解析或封装RPC消息,获得请求参数或发送处理结果。NFS服务器的3个核心基本组件都有特定功能:RPCBind主要实现查询服务主机时间、查询服务IP地址、设置取或消服务端三元组等5个过程;Mountd挂载或卸载共享目录、添加输出目录和查询共享目录等6个文件名操作;Nfsd主要实现read、write、create和remove等18个物理访问操作。

1.3文件系统

参考linux_kernel的文件系统部分源代码,在分析虚拟文件系统VFS以及逻辑文件系统EXT2的基础上,按照EXT2文件系统结构特点,用文件系统管理磁盘数据资源,设计具有松耦合特性的资源管理器,为上层应用提供文件操作基本数据服务。提取出文件的打开、关闭、读、写、创建等基本操作,按照通用的文件标准接口,用不同功能的资源管理器模块重新描述文件操作流程,各流程通过访问磁盘资源管理器,完成文件的基本操作。设计文件系统主控制器控制文件操作流程步骤,完成对磁盘文件的高效访问管理。文件系统结构如图3所示。

图3 文件系统结构框图

1.4SATA硬盘控制器

在SATA控制器与SATA硬盘之间通过SATA接口通信,接口协议为SATA协议,本文实现的是传输速率为3.0 Gbps的SATA2.0协议,其结构分为物理层、链路层、传输层和命令层四层,如下页图4所示。

RX和TX分别与硬盘的差分收发信号线相接,文件系统接口通过驱动程序和文件系统相连。接收数据时,在物理层将码流串/并转换,8B10B解码后送到链路层,链路层解帧和解扰后提取出帧信息结构(Frame Information Structures,FIS)及CRC值并判断传输是否有错,同时将FIS提交传输层解析,得到操作状态或数据发送到命令层,命令层通过文件系统接口传送给处理器。发送过程是接收的逆过程,命令层将外部命令、参数、数据等转换成SATA协议格式后交给传输层形成FIS消息,链路层将FIS和CRC值加扰后封装成帧送到物理层发送。

图4 SATA硬盘控制器结构

2 系统搭建

系统搭建在EDK平台上实现,步骤如下:①新建一个基于XUPV5_LX110T开发平台的EDK工程,选择配置需要使用的资源,如DDR2_SDRAM。②在EDK工程下将本文设计SATA控制器IP核挂载到PLB总线上。③在PetaLinux中开发设备驱动程序和NFS服务组件、文件系统应用程序。④将EDK工程拷贝到PetaLinux中交叉编译生成image. bin文件。⑤在EDK下将image.bin文件下载到DDR2_SDRAM中,最后启动操作系统及应用程序。

图5是EDK下PLB总线接口界面,图中展示了所有挂载在PLB总线下的设备,其中DDR2_SDRAM、Hard_Ethernet_MAC、RS232_Uart_1 是XUPV5_LX110T开发平台可以选择配置的资源,sata_controler_0是所设计SATA硬盘控制器,其他为工程自动生成。图中没有展开显示的Addresses栏是设备地址栏,在这儿可以给每个设备分配地址空间,本设计分配的 sata_controler_0地址为0xcb200000-0xcb20ffff。

图5 PLB总线接口

3 设计验证

3.1SATA IP核的验证

SATA硬盘控制器性能的好坏直接影响NFS服务器的稳定性。运用Xilinx公司的在线调试工具ChipScope测试SATA控制器IP核,图6是完成一次读操作后,接收到的硬盘应答帧。图中SOF_det、EOF_det分别表示检测到帧头、帧尾,rxdata0和Rx-FISData分别是来自物理层和解扰后的数据。由图6易知帧数据的第一个双字为0X01500034,第一个字节是帧类型标志号,0X34说明接收到的是应答帧,第三个字节是状态寄存器,0X50说明读操作无错且硬盘已准备好接受下一个命令,其他各个字节也分别代表映射寄存器组中各个寄存器的值。

图6 SATA硬盘控制器测试结果

3.2系统验证

NFS服务器IP地址是192.168.0.10,SATA硬盘容量为80 GB。在CentOS6.4操作系统下通过标准NFS客服端访问本文设计的NFS服务器,经测试服务器能够完整无误地实现文件的上传、下载、删除,新建、重命名等基本操作。一个上传文件的操作结果显示在图7中,NFS服务器共享目录挂载路径为/ tmp/nfs,从图看出其操作界面和本地操作完全一样。

图7 上传操作结果

4 结论

本文采用软硬件协同的设计方法,基于Xilinx 的FPGA设计了一可用作云存储节点的虚拟化SATA硬盘,并验证了它的功能。通过反复调试与调整,系统能够成功挂载共享文件系统,进行基本文件操作且稳定性良好。下一步将增加多用户挂载功能,同时将一个SATA硬盘扩展为多个SATA盘组,从而形成云存储系统。

参考文献:

[1]李军,劳凤丹,邹仁明.校园网云盘系统构建研究[J].通信学报,2013,34(Z2):133-137.

[2]戴剑伟,王刚.指挥信息系统云架构[J].火力与指挥控制,2013,38(2):76-78.

[3]田秀霞,周耀君,毕忠勤,等.基于Hadoop架构的分布式计算和存储技术及其应用[J].上海电力学院学报,2011,27(1):70-74.

[4]张威.FPGA中个人云存储系统的设计与研究[D].太原:太原理工大学,2014.

[5]陈才.基于FPGA的SATA主机端控制器的设计[D].武汉:华中科技大学,2011.

[6]孙韩林,金跃辉,高雪松,等.FTP协议的测试及分析[J].计算机工程,2008,34(23):133-135.

[7]王超,刘伟,张得聪.基于SATA的嵌入式直接存储系统[J].计算机工程,2012,38(12):232-235.

[8]刘荣胜.一种基于异步回调机制的NFS服务端设计与实现[J].苏州市职业大学学报,2013(1):41-43.

[9]叶军,朱华生.嵌入式Linux NFS方式下应用程序的实现[J].微计算机信息,2007,23(32):73-75.

[10]谭会生,张昌凡.EDA技术及应用[M].2版.西安:西安电子科技大学出版社,2004.

[11] Xilinx Coporation.Virtex-5FPGA RocketIO GTP Transceiver User Guide[R].San Jose:Xilinx,2008.

[12]杨佳朋,张刚,郝敏.基于RocketIO的SATA物理层实现[J].电视技术,2013,37(3):70-72.

[13]包怀忠.EXT2文件系统分析[J].计算机工程与设计,2005,26(4):1022-1024.

中图分类号:TP333

文献标识码:A

文章编号:1002-0640(2016)04-0174-03

收稿日期:2015-03-13修回日期:2015-04-15

*基金项目:太原理工大学校青年基金(2012L091)

作者简介:何杰(1988-),男,湖南汉寿人,硕士研究生。研究方向:SoC集成电路设计。

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,FPGA,PetaLinux