摘要:
项目规划一种选用“流程+引擎+构件”的SOA三层架构的网络硬盘操控器。体系选用FPGA作为体系操控器,在FPGA内部MicroBlaze软核处理器上移植PetaLinux操作体系,加载NFS网络文件体系,将扩展Int 13H标准中界说的根本硬盘操作指令封装成原子构件,并选用VHDL硬件描绘言语完结各原子构件,完结对硬盘的根本操作。规划引擎模块,依据NFS文件体系操作指令,调用相关原子操作,完结硬盘存储空间办理、文件存储操作、用户办理等功用。本文规划网络硬盘操控器可作为个人存储服务器衔接到以太网,用户可经过衔接网络的恣意主机完结对服务器硬盘的拜访办理。
1 导言
跟着电子邮箱及网络硬盘的遍及,用户可不必带着存储设备,而直接经过网络进行数据的上传和下载,完结个人数据的办理。但是,运用网络运营商供给的网络硬盘可用空间有限,且数据保密性不强。本项目旨在研讨一种适合于个人运用的网络硬盘存储设备,该网络硬盘运用RJ45接口衔接到以太网,经过以太网以TCP/IP协议,用户可用以太网上恣意主机完结对网络硬盘的办理操作,与电子邮箱及网络运营商供给的网络硬盘比较,此项目规划的个人网络存储硬盘有着存储空间容量大、运用安全、可靠性较高级长处。
2 体系原理与特色
体系结构如图2-1所示。
图2-1 体系结构
用户经过衔接网络的客户端PC机选用TCP/IP协议完结文件的上传和下载,上传文件时,用户经过客户端PC机向网络硬盘操控器发送上传文件指令,并发送文件数据,FPGA内以太网操控器模块接纳数据并由DDR2操控器模块写入到DDR2中缓存,然后依据NFS协议将数据从DDR2中读出经硬盘操控器模块写入到硬盘中保存;客户端下载文件时,用户经过客户端PC机向硬盘操控器发送下载文件指令,FPGA内以太网操控器模块接纳指令后,依据NFS协议将文件数据经过硬盘操控器模块读出并写入到DDR2缓存中,然后将数据由DDR2中读出并由以太网操控器模块,加载网络协议栈,将数据由网络发送到客户端PC。
FPGA内部调用MicroBlaze处理器,移植PetaLinux操作体系,装备TCP/IP协议栈,加载NFS网络文件体系,运用VHDL言语规划Int13H标准中界说的对硬盘操作的原子构件,并规划对原子构件调用的引擎办理模块,将原子构件与引擎办理模块以用户IP核方法增加到与MicroBlaze处理器互联的PLB片内总线,FPGA内部体系模块框图如图2-2所示。
图2-2 FPGA内功用模块
3 硬盘引擎办理模块规划
学习互联网分布式核算范畴中网格核算、云核算技术广泛选用的SOA架构为中心规划思维,首要进行事务需求剖析、依据事务用例、用例场景、事务进程的剖析进程找出对应的原子事务。依据事务原子事务映射到相应的体系需求进行体系建模,经过方法语义将场景进程序列描绘为由一系列原子构件的组合。完结“流程+引擎+构件”的三层SOA结构的文件体系规划。
3.1 文件体系事务单元
文件体系是操作体系中担任办理和存储文件信息的软件体系。首要担任对文件存储器空间进行安排和分配,文件的存储以及对存入的文件进行维护和检索。文件体系首要包含存储空间办理、文件存储操作、用户办理这三个事务单元。
存储实间办理首要包含对存储空间的安排、分配和收回。文件存储操作首要包含用户对存储空间文件的根本操作,包含文件的生成、删去、翻开、封闭、文件读、文件写等。用户办理首要包含用户的注册、登录以及用户权限办理等。
3.2 提取事务用例
在提取文件体系的事务用例时,首要是从事务主角——用户的视点动身,对文件体系的每一个事务单元进行剖析提取事务用例。
3.2.1 存储空间办理
存储空间办理事务单元的用例视图如图3-1所示。
图3-1 存储空间办理用例视图
存储空间办理该事务单元首要包含如下事务用例:初始化存储空间、分配存储空间、追加存储空间、收回存储空间、查询剩下存储空间。
3.2.2 文件存取操作
文件存取操作事务单元的事务用例视图如图3-2所示。
图3-2 文件存取操效果例视图
文件存取操作事务单元包含如下事务用例:树立文件、翻开文件、读文件、写文件、封闭文件、保存文件、删去文件、保存文件、罗列文件、检索文件、仿制文件等。
3.2.3 用户办理
用户办理用例视图如图3-3所示。
图3-3 用户办理用例视图
用户办理该事务单元包含的事务用例首要有填加用户、删去用户、用户登录、用户退出、设置用户权限、修正用户权限等。
3.3事务用例场景
3.3.1 区分事务用例场景
事务用例在实践履行的进程中或许会有多种不同的状况发生,每一种状况都称为该事务用例的一个事务用例场景,也能够说事务用例场景是指实例化的用例。经过对文件体系的事务用例进行剖析,区分出文件体系的事务用例场景如表1所示。
表3-1 文件体系事务用例场景
事务用例 |
事务用例场景 |
阐明 |
初始化存储空间 |
初始化存储空间 |
对未进行初始化设置的空间进行初始化。 |
分配存储空间 |
分配存储空间 |
为新创立的文件分配存储空间。 |
追加存储空间 |
追加存储空间 |
对现有存储空间已满的文件追加新的存储空间 |
收回存储空间 |
收回存储空间 |
文件被删去后,收回不必的存储空间 |
树立文件 |
创立文档文件 |
创立一个新的文件并存档 |
创立文件夹 |
树立文件的安排单元 |
|
翻开文件 |
翻开文档文件 |
翻开一个现已存在的文件 |
翻开文件夹 |
翻开一个现已存在的文件夹 |
|
读文件 |
次序读文件 |
从文件头次序读取文件内容 |
随机读文件 |
从指定方位处读取指定长度的文件内容 |
|
写文件 |
写文件 |
从指定方位处向已创立文件中写入内容 |
封闭文件 |
封闭文档文件 |
封闭现已翻开的文件 |
封闭文件夹 |
封闭现已翻开的文件夹 |
|
保存文件 |
保存文件 |
对文件内容或特点有过更改的文件进行存档 |
删去文件 |
删去文件内容 |
删去指定方位处指定长度的文件内容 |
删去文件 |
删去现已存在的文档性质的文件 |
|
删去文件夹 |
删去现已存在的寄存文档的文件夹 |
|
罗列文件 |
罗列当时文件夹下文件 |
罗列当时文件夹目录中的一切文件,包含文件夹和文档文件。 |
罗列存储空间的一切文件 |
罗列存储空间中的一切文件夹和文件 |
|
检索文件 |
在当时文件夹检索 |
在当时文件夹中查找指定称号的文件或文件夹 |
在整个存储空间检索 |
从整个存储空间查找指定称号的文件或文件夹 |
|
改动目录 |
进入子目录 |
进入当时目录的下级目录 |
回来父目录 |
回来当时目录的上级目录 |
|
填加用户 |
注册用户 |
挂号答应对存储空间内文件进行操作的用户信息 |
删去用户 |
删去用户 |
删去已挂号的文件体系的用户信息 |
用户登录 |
用户登录 |
用户进入文件存储空间 |
用户退出 |
用户退出 |
用户退出文件存储空间 |
修正用户信息 |
修正用户信息 |
修正已挂号的用户信息 |
设置用户权限 |
设置用户权限 |
对进入文件存储空间用户的文件操作权限进行设置 |
3.3.2 描绘事务用例
本文对文件体系事务用例描绘选用的是用例文档和UML的活动图,经过画出文件体系事务用例场景的活动图,依照所用例文档模板的格局对活动图进行描绘,树立文件体系的事务用例模型,得到文件体系的事务需求文档。
3.4 提取原子事务
前面对文件体系进行了事务建模,剖析了文件体系的事务参与者、事务用例和事务场景,在此小结中将剖析提取文件体系的原子事务。首要经过剖析事务场景的骨干流程来进行原子事务的提取。
3.4.1 存储空间办理原子事务剖析
以追加存储空间为例剖析事务流程。
前置条件:文件当时存储空间缺乏,文件剩下存储空间中有满足的闲暇空间。
后置条件:成功为文件追加闲暇存储空间。
该事务流程由如下事务进程组成:
1>.文件存储空间缺乏,恳求新的存储空间;
2>.文件定位;
3>.追加新的存储空间。
剖析上述事务进程,画出追加存储空间事务用例场景的事务流程图如图3-4所示。
图3-4 追加存储空间活动图
经剖析追加存储空间该事务用例中可提取出两个原子事务:文件定位、追加存储空间。剖析存储空间办理事务单元其它事务用例场景的事务流程后,得出该事务单元原子事务树状结构图如图3-5所示。
图3-5 存储空间办理原子事务模型结构图
3.4.2 文件存取操作原子事务剖析
以次序读文件为例剖析事务流程。
前置条件:文件存在而且可读。
后置条件:从文件指定方位处次序读取指定长度内容。
该事务流程由如下事务进程组成:
1>.确认文件地点存储空间;
2>.翻开方针文件;
3>.读取指定长度的文件内容;
4>.封闭文件。
剖析上述事务进程,画出次序读文件事务用例场景的事务流程图如图3-6所示。
经剖析次序读取文件该事务用例中可提取出四个原子事务:文件定位、翻开文件、次序读文件、封闭文件。
剖析文件存取操作事务单元其它事务用例场景的事务流程后,提取出该事务单元原子事务树状结构图如图3-7所示。
图3-6 次序读取文件事务活动图
3.4.3 用户办理原子事务剖析
以注册用户为例剖析事务流程。
前置条件:有权限成为文件体系用户。
后置条件:注册成功,分配用户名。
该事务流程由如下事务进程组成:
1>.办理员进入存储空间;
2>.挂号用户信息。
剖析上述事务进程,画出注册用户事务用例场景的事务流程图如图3-8所示。经剖析注册用户该事务用例中可提取出两个原子事务:用户登录、挂号用户信息。
剖析用户办理事务单元其它事务用例场景的事务流程后,得出该事务单元原子事务部分树状结构图如图3-9所示。
图3-9 用户办理原子事务模型结构图
经过以上对文件体系各事务单元的剖析,提取文件体系完好的原子事务及其描绘如表3-2所示。
表3-2 文件体系原子事务及其描绘
序号 |
原子事务 |
描绘 |
1 |
初始化空间(Initialize_Space) |
对文件体系的存储空间容量巨细和分区容量进行初始化设置。 |
2 |
分配空间(Allocate_Space) |
为新建文件或文件夹分配存储空间 |
3 |
文件定位(Locate_File) |
确认文件地点存储空间地址。 |
4 |
追加空间(Supplement_Space) |
文件存储空间缺乏绐文件追加新的存储空间。 |
5 |
开释空间(Free_Space) |
将存储空间改为未用。 |
6 |
查询分区容量(Inquiry_Space) |
查询分区闲暇存储空间巨细。 |
7 |
设置文件为翻开状况(Set_File_Open) |
更改文件为“翻开”状况 |
8 |
设置文件夹为打状况(Set_Folder_Open) |
更改文件夹为“翻开”状况 |
9 |
设置文件为封闭状况(Set_File_Open) |
更改文件为“封闭”状况 |
10 |
设置文件夹为封闭状况(Set_Folder_Open) |
更改文件夹为“封闭”状况 |
11 |
次序读文件(Sequence_Read_File) |
按次序读取指定长度的文件内容 |
12 |
随机读文件(Random_Read_File) |
随机读取指定长度的文件内容 |
13 |
写文件(Write_File) |
向文件内写入指定长度文件内容 |
14 |
更新文件(Update_File) |
文件进行读写后更改文年特点和内容 |
15 |
查找文件(Find_File) |
在指定空间查找指定文件名的文件 |
16 |
罗列文件(File_Enumeration) |
罗列指定空间的一切文件 |
17 |
挂号用户信息(Rsgister_User_Information) |
挂号文件体系用户信息。 |
18 |
修正用户信息(Modify_User_Information) |
修正已挂号的用户信息 |
19 |
删去用户信息 (Delete_User_Information) |
删去已挂号的文件体系用户信息 |
20 |
用户进入 (User_Enter) |
用户进入文件存储空间,查看空间内文件 |
21 |
用户退出 (User_Exit) |
用户退出存储空间 |
22 |
设置用户权限(Set_Premissions) |
设置用户拜访文件的权限。 |
4 Petalinux及NFS网络文件体系的移植
Petalinux的移植首要工作为硬件渠道树立,以及内核的裁剪与移植,其间硬件渠道的树立在windows操作体系上装置的Xilinx EDK环境中完结,挑选Virtex5-lx110t开发板,由于网络文件服务器的需求挑选以太网的IP核,DDR,串口,定时器等并增加相应的间断,成功树立工程的block diagram 如图4-1所示。
图4-1 树立工程框图
然后进行依据Petalinux软件渠道的装备,操作体系和库选项挑选Petalinux,修正首要存储空间和输入输出的当时值,软件渠道树立结束,最终生成库和板级支撑包,然后生成比特流文件下载至方针板测验工程的正确性。
Petalinux是一套开发环境,linux内核的裁剪以及移植在装置centos 5.6 操作体系的主机完结首要运用Petalinux自带的东西创立嵌入式渠道,将在windows下完结的工程拷贝到Linux体系,转换到Linux体系格局,依据开发板挑选新的渠道,然后用make menuconfig 指令进入内核裁剪的图形化界面,合理的裁剪之后进行编译将生成的image.bin文件经过下载线下载至开发板的DDR SDRAM中,在串口终端能够看到体系启动信息,如图4-2所示。
图4-2 体系启动信息
网络文件体系支撑以运用程序在客户端经过网络存取坐落服务器磁盘中数据的一种文件体系协议,大多数网络文件体系都分红客户端和文件服务器两部分。客户端以逻辑文件块的方法存取数据,文件服务器运用块映射存取真实的磁盘块,并完结磁盘格局和元数据(如目录)的办理,对客户端彻底屏蔽,一般客户端和文件服务器以TCP/IP方法通讯。NFS是网络文件体系(Network File System)的简称,是分布式核算机体系的一个组成部分,可完结在异种网络上同享和装置长途文件体系,可让不同操作体系的核算机同享数据。
NFS服务器的移植:nfs服务器的完结需求内核nfsd的支撑外加两个运用程序套件 portmap 和nfs-utils ,Petalinux中移植此运用程序,下载此运用程序的源码,增加到petalinux的usr目录下,修正makefile 和config.in 文件,重新装备内核参加nfs服务器端的支撑,一起穿插编译此运用程序,将生成的可履行文件仿制到 romfs 的bin 目录下,再在etc 目录下增加exports 文件用来设置可挂载目录,使得Petalinux 体系具有nfs服务器端的功用。
5 IDE硬盘操控器的规划
IDE(Integrated Drive Electronics,集成驱动电子设备)是由Compaq开发并由Western Digital公司出产的硬盘驱动器。IDE是在前期的ST506硬盘基础上改善而成的,选用40线的单组电缆进行衔接,数据传输的可靠性得到了增强,硬盘制作起来变得简单,由于厂商不需求再忧虑自己的硬盘是否与其他厂商出产的操控器兼容,对用户而言,硬盘装置起来也更为便利。因而IDE接口实践上是体系级接口,故也称为ATA(Advanced Technology Attachment)接口,(ATA更接近于接口的协议层标准,而IDE多用于描绘接口的物理结构)。其传输方法首要有PIO和DMA两种。ATA接口标准从开端的ATA-1版别已发展到ATA-7版别。
5.1 硬盘接口信号
ATA/ATAPI-6标准中界说的主机和设备端之间的通讯衔接信号如表5-1所示。其间,左面是对信号的描绘,中心表明信号的传输方向(由主机到设备仍是由设备到主机),右边表明信号的称号。
- CS(1:0)-:主机发送给硬盘的片选信号,完结对寄存器的挑选;
- DA(2:0):主机发送给硬盘的地址信号,用来完结对硬盘寄存器的寻址;
- DD(15:0):主机与硬盘之间的数据衔接线,当主机对硬盘寄存器进行读写时,运用该数据总线的低八位进行数据传输,当对数据寄存器进行读写时,用该总线的16位进行数据传输;
- DIOR-:HDMARDY-:HSTROBE:复用信号,表明对寄存器读信号/Ultra DMA安排妥当/Ultra DMA数据输出同步信号,DIOR-表明主机对硬盘寄存器的读信号,HDMARDY-表明Ultra DMA数据输入时,主机宣布的安排妥当信号,HSTROBE表明Ultra DMA数据输出时主机宣布的时钟同步信号,双沿有用,即在该信号的上升沿和下降沿,主机将数据输出;
- DIOW-:STOP:复用信号,表明主机写寄存器指令/主机中止Ultra DMA突发传输信号,DIOW-表明主机宣布的对硬盘寄存器的写指令信号。在Ultra DMA突发传输时,主机可经过使能STOP信号来中止Ultra DMA突发传输。
- DMACK-:在DMA开端传输时,主机对硬盘宣布的DMA传输恳求的应对信号;
- DMARQ:当硬盘准备好数据收发时,给主机宣布的DMA传输恳求信号;
- INTRQ:硬盘宣布的间断恳求信号;
- IORDY:DDMARDY-:DSTROBE:硬盘宣布的I/O通道安排妥当/Ultra DMA硬盘安排妥当/Ultra DMA数据输入同步信号。IORDY表明在PIO数据传输中,当硬盘没有准备好数据传输时,使能该信号无效以延伸主机对硬盘的拜访时刻。DDMARDY-表明在Ultra DMA数据传输中硬盘宣布的流量操控信号,该数据有用时,表明硬盘已准备好接纳Ultra DMA传输数据,硬盘使能该信号无效可暂停Ultra DMA数据传输。DSTROBE表明在Ultra DMA数据传输时,硬盘宣布的数据锁存信号,主机可在该信号的上升沿和下降沿接纳数据;
- RESET-:主机宣布的硬盘复位信号,低电平有用。
表5-1 硬盘接口信号
5.2 硬盘接口寄存器
主机对硬盘的拜访是经过对接口寄存器的拜访来完结的。ATA-6标准规则的硬盘接口寄存器如表5-2所示。这些寄存器依照功用区分为指令寄存器(Command block registers)和操控寄存器(Control block registers)。指令寄存器用来接纳主机宣布的各种指令和传送数据,包含数据寄存器、扇区计数寄存器等。操控寄存器用作操控硬盘操作,如使能硬盘间断、挑选硬盘等。
表5-2 硬盘端接口寄存器
5.3 硬盘操控器模块规划
硬盘操控器模块内部结构如图5-1所示。
图5-1 硬盘操控器模块内部结构
5.3.1 总线接口模块
总线接口模块是硬盘操控器与PLB总线的衔接模块,接纳处理器经过PLB总线发来的操作指令及读写数据。
5.3.2 硬盘复位模块
硬盘上电后需求完结一个复位进程,即ATA/ATAPI-6标准中描绘的上电及硬件复位协议。复位进程既能够经过软件编程完结也能够经过在硬盘操控器内部规划专用的逻辑来完结。体系上电后,硬盘操控器经过硬盘复位模块生成一个宽带大于25us的低电平复位信号,复位信号回到高电平2ms后,即复位操作完结。复位信号波形如图5-2所示。
图5-2 复位信号波形
5.3.3 PIO模块
该模块的功用是发生读写硬盘内部寄存器的时序,该模块发生待拜访的硬盘寄存器的地址线,并输出读写信号,依据数据传输方向,发送数据到数据线或从数据线上读取数据,操作完结后,开释地址、数据线。
依据PIO读写时序,该模块应完结以下功用:
- 发生拜访硬盘寄存器的地址信号,并具有必定有用宽带。
- 发生相应的读写信号DIOR-/DIOW-,当为写操作时,使数据具有规则的树立和坚持时刻;当为读操作时,给出读数据的机遇。
- 处理硬盘输入的IORDY信号,当IORDY无效时,应延伸对硬盘的读写周期。
5.3.4 Ultra DMA模块
Ultra DMA模块是硬盘操控器的要害模块,其首要功用是完结Ultra DMA突发数据输出时序的操控。Ultra DMA操作可分为三个阶段,分别是初始阶段、数据传输阶段、传输间断阶段。
初始阶段的时序描绘为:当硬盘宣布DMA恳求信号DMARQ,操控器经过DMACK-进行应对,比及硬盘宣布的DDMARDY-信号有用后,操控器开端输出HSTROBE信号。
数据传输阶段的时序描绘为:HSTROBE时钟的上升沿和下降沿都触发数据输出,在数据传输进程中,操控器可经过中止发生HSTROBE信号来暂停数据的输出,硬盘能够经过使DDMARDY-信号无效来暂停数据的接纳。
传输中止阶段,操控器和硬盘都可中止数据传输,中止数据传输可分为四个进程:中止恳求、中止查看、HSTROBE回来高电平、发送CRC校验值。关于操控器中止数据传输,首要中止发生HSTROBE时钟信号,宣布STOP指令信号,操控器查看硬盘的DDMARDY和DMARQ均无效后,使HSTROBE回来高电平,使DMACK-无效,并在DMACK-信号跳变沿处输出CRC校验值到数据线DD(15:0),如图5-3所示。关于硬盘中止数据传输,经过使DDMARDY和DMARQ均无效来中止数据传输,操控器需求在tL1时刻内宣布STOP信号,使HSTROBE回来高电平,使DMACK-无效,并输出CRC校验值至DD(15:0),如图5-4所示。
图5-3 操控器中止Ultra DMA数据传输时序
图5-4 硬盘中止Ultra DMA数据传输时序
5.3.5 操控器模块
操控模块是硬盘操控器的中心,该模块的首要功用是完结CPU对硬盘操控器中寄存器的装备,并依据相关寄存器的写入信息完结对应的操控操作。
6 总结
项目规划一种依据“流程+引擎+构件”SOA三层架构的网络硬盘操控器。选用FPGA作为体系操控器,在MicroBlaze软核处理器上移植PetaLinux操作体系,加载NFS网络文件体系,将扩展Int 13H标准中界说的根本硬盘操作指令封装成原子构件,选用VHDL硬件描绘言语完结各原子构件操作。规划引擎办理模块,依据NFS文件体系操作指令,调用相关原子操作,完结硬盘存储空间办理、文件存储操作、用户办理等功用。