一种用于大数据量的存储系统_第1页
一种用于大数据量的存储系统_第2页
一种用于大数据量的存储系统_第3页
一种用于大数据量的存储系统_第4页
一种用于大数据量的存储系统_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一种用于大数据量的存储系统随着嵌入式的发展,越来越多的嵌入式平台对于存储性能的要求也越来越高。大数据量的存储,高速率的读写已经成为越来越多嵌入式用户的基本需求了。在嵌入式领域,串行RapidIO(简称SRIQ作为一种高可靠、高性能、基于包交换的新一代高速互联技术,已经成为嵌入式系统互联的最佳选择之一。在嵌入式领域,很多产品都是在一个相对复杂的环境(震动、噪音等)下工作,老式的机械硬盘无法在这种环境下工作,而由NANDA成的固态盘克服了这些缺点,所以本文介绍的存储系统,就是通过SRIO进行互联,本地采用NAND车列进行数据存储,以实现高速的读写。而用户在编程的过程中,只需要调用编程API即可,屏

2、蔽了底层的协议以及数据传输。1 存储系统存储系统为用户提供远程的文件访问服务,其基本功能有文件的读写、文件的创建以及删除、文件系统的格式化、服务的连接与断开等。存储系统和用户之间采用请求-应答的模式进行通信,用户向存储系统发送请求,而存储系统则执行用户的请求,对本地的文件进行操作并将操作的结果以及数据返还给用户。系统对外有2种通信链路,分别是千兆以太网以及SRIQ以太网在系统中用作协议的传输,SRIO则用作数据传输,通过这种方式将数据与协议进行分离,同时确保SRIO只进行单纯的数据传输从而提高SRIO的传输速率。存储系统的对外通信功能由以太网和SRIO组成,其本地存储功能是由NAND车列和文件

3、系统组成。NAND车列是通过PCIe与系统互连的。NAND车列作为存储介质的优势在于其容量大、性价比高、没有机械特性(可以在震动环境下工作)。文件系统用于管理NAND车列,为系统提供文件管理服务。2 系统实现存储系统可以分为2各部分来实现,本地文件系统和服务程序。本地文件系统在实现过程中,主要有2方面的考虑,NAND驱动以及文件系统的类型选择。一个大容量的存储系统,其容量应该在10TB以上,对于这个容量并不是所有的文件系统都可以支持的。本文选择使用Linux下的EXT4文件系统,该文件系统可以支持的容量达到1EB,而文件大小也由16TB。采用该文件系统,在后期可以对系统的容量进行较大的扩充,同

4、时对于大型文件的支持也是相当不错。拥有了一个文件系统后,则是考虑如何接收用户的请求并将用户的请求转换为本地操作,这就是服务程序。服务程序的功能是将用户的请求转换为本地操作并将操作结果以及数据传输给用户。服务程序需要关注的2个方面,分别是通信和数据传输。用户与存储系统通信时,是请求-应答的模式。这种模式下,存储系统完成本地的初始化后,就开始被动地等待用户请求,一旦接收到用户的请求就开始工作。图1示了服务程序的基本流程,服务程序从接收到一个连接请求,到服务结束的基本流程。主线程在程序中的角色,是请求的接收者与分发者,从外部接收请求,将请求的内容分发给子线程来处理,主线程不处理请求。而子线程则是请求

5、的执行者,完成用户的请求,当请求执行完,子线程也就结束消亡了。在服务程序运行的过程中,需要保证各个子线程之间使用的资源是互斥的。以避免出现读写不一致、SRIO发送失败的情况。下面对单用户以及多用户的情况进行分析。单用户连接时,系统资源都被该用户所占有,并不会有其他用户或程序来抢占资源,所以单用户情况下系统在逻辑上不会有问题。当有多个用户连接时,服务程序中将有多个子线程。当他们不操作同一个文件时,这些子线程是独立运行的。如果有2个用户同时打开某个文件时,其中有个用户必然会打开失败。那么该用户只能等待这个文件被关闭后再打开,这时子线程会通知用户文件打开失败。这样子线程对于文件的操作是互斥的。再考虑

6、2个子线程同时向用户发送数据的情况,这时必然发生资源抢占的问题。因此要为SRIO发送创建一个信号量,所有需要使用SRIO的子线程都必须先获取该信号量,才能使用SRIO来发送数据。这样做,在所有子线程都需要使用SRIO发送数据时,会使得多数子线程进入等待,但SRIO速率高,子线程的等待时间不会过长,应该在可以接受的范围内。所以对于SRIO发送,采用一个信号量来互斥多个子线程的操作。可以看出,在单用户和多用户的情况下,通过信号量以及一些特殊的限制使得系统资源对于用户都是互斥的。当一个用户占有了该资源后,其他用户无法获取该资源,只能等待该资源被释放后,才能获得。图2双方通信的包格式,其中用户ID用于

7、区别不同的用户,是存储系统分配给用户的;包属性是保留字段;命令字用于表示用户请求的类型或者系统回应的类型;参数是命令字的后续部分。本通信协议是建立在tcp/ip协议之上,因此协议在传输过程中的可靠性不需要系统考虑。拥有了通信协议后,考虑存储系统的数据传输。数据传输的协议是SRIQ而在SRIO中传输模式中,速率最高的是DIO/DMA(DirectIO/DirectMemoryAccess),所以本文采用这种模式来进行数据传输。在DIO/DMA莫式下,SRIO传输数据是直接向对方的内存中写入数据,这就需要在模块初始化的时候对内存进行一定的规划,以避免数据混乱。在内存规划时,主要是考虑为不同的用户分

8、配不同的内存空间,对不同用户的数据进行隔离以保证数据的正确性以及安全性。在存储系统工作中,数据传输应该是占据了大部分的时间,所以在系统实现时,应该尽可能的取出一些不必要的操作,以保证数据传输的占有比。存储系统在处理读文件操作时,读出的数据应该是考虑对齐的问题,以避免SRIO发送时的2次拷贝3系统瓶颈存储系统的瓶颈主要表现在存储总容量以及读写速率上。存储总容量可以通过增加NAND&片的容量以及数量来改善。存储系统的读写速率瓶颈,主要有三方面,硬件传输速率的限制、软件数据转发的速率、网络通信延迟造成的速率降低。1)硬件传输速率的限制是由PCIe的速率以及SRIO的速率决定的,两者中速率较慢

9、的成为瓶颈;2) 软件转发的速率是指文件读写过程中需要将数据写入到内存中才能传输,例如存储系统从文件系统中读出一段数据,它不会直接通过SRIO发送,而是先存放在内存中,再通过SRIO发送,这样就使得文件在读写过程需要更多的时间;3) 网络通信的延时一般都在几十微秒以上,如果在文件读写过程中,存在较多的协议通信,必然会造成整体的速率降低。对于存储系统的读写速率瓶颈,除了硬件造成的瓶颈是软件无法改善的,其余2个都可以通过一定的手段进行改善。1) 软件转发速率,可以通过一个二级流水线加快转发的速度。当内存中写入的数据达到了一次的传输量后,就开始传输同时继续写入,形成一个二级的流水线。这种模式需要2个并行的线程来支持,并且只对数据量较大的情况适用。而该存储系统就是为大数据量的存储而设计的,所以采用该方式对于提高性能有一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论