[发明专利]基于文件系统的NFS数据I/O加速方法有效
申请号: | 201210018257.0 | 申请日: | 2012-01-20 |
公开(公告)号: | CN102609485A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 张庆敏;张衡;胡刚;谢海威;吴清秀 | 申请(专利权)人: | 无锡众志和达存储技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 江苏英特东华律师事务所 32229 | 代理人: | 邵鋆 |
地址: | 214000 江苏省无锡市新区*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 文件系统 nfs 数据 加速 方法 | ||
技术领域
本发明涉及计算机数据存储技术,特别是一种Linux的网络文件系统(NFS)数据的读写(I/O)方法。
背景技术
网络文件系统(NFS,Network File System的简写)是FreeBSD支持的文件系统中的一种,允许一个系统在网络上与他人共享目录和文件。现有Linux系统下的NFS进行数据读写是通过远程过程调用协议(RPC,Remote Procedure Call Protocol的简写,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。)请求实现的,每个RPC包中都带有NFS请求/响应包。典型的NFS数据流模型如图1所示的:每个NFS请求包都包含RPC包头信息,先经过RPC层,RPC层接收完整的RPC包,解析出NFS包,然后传到NFS 层,再解析NFS请求的指令,最后由虚拟文件系统层(Virtual File System 、VFS)执行相应的存入或读取动作。这样,每次I/O,都要从系统中分配内存,并且物理存储介质会有一次以上I/O操作,性能较低。
发明内容
本发明的目的为了克服背景技术所说的现有Linux系统NFS数据I/O的缺陷,发明一种速度更快、效率更高的I/O方法。
本发明的方法是,使用连续的物理内存当作NFS的I/O缓冲区(cache);RPC层接收数据包时,边接收边解析,解析出每个数据包中NFS写请求的包,确定是NFS数据包开始接收其数据段时,从NFS的I/O缓冲区(cache)中分配所需的内存,并将NFS数据段接收到该缓冲区内;从NFS的I/O缓冲区分配内存时,目标地址连续的NFS数据分配连续的内存,多个连续的NFS数据组合到一个连续的物理内存里面;当累积到如下条件之一时,一次性把一段连续物理内存的整段数据刷到物理存储介质中:
(1) 当缓冲区快填满时;
(2) 当请求中的目标逻辑地址与缓冲区中已填入的数据地址不连续时;
(3) 超过设定的时间上限,没有新的请求,而缓冲区中仍有数据时;
数据刷入物理存储介质以后清空NFS的I/O缓冲区。
为了防止缓冲区正在刷数据时,外部请求暂时无法分配到缓冲区内存,优选方案是:同时使用多个缓冲区,每一时刻,只有一个缓冲区处于活动状态(Active),分配内存都优先从活动状态的缓冲区分配,当该缓冲区要刷新数据时,激活下一个缓冲区,多个缓冲区依次循环使用。
本发明的方法,可以明显减少物理存储设备的I/O次数,降低能耗,提高速度;同时,本发明方法将小的请求包数据通过缓冲区累积形成大块的数据进行I/O操作,可以提高性能。
附图说明
图1,现有技术的NFS数据流图示意图;
图2,本发明方法的流程模型图。
具体实施方式
本发明方法仅涉及使用标准RPC协议的网络文件系统(NFS)数据在RPC协议层的接收到存储至物理存储介质的I/O流程,而不涉及现有技术中的数据传输的其他过程。除本发明所述的这部分流程以外,其他流程照样可以使用现有方法实现而没有冲突。
如图2的原理模型,数据流依然经过RPC层、NFS层和VFS层,最后将储存到物理存储介质,本发明所述的数据I/O就在这部分完成。一个NFS数据请求包括有RPC字头(RPC Header)、NFS字头(NFS Header)和需要I/O的数据段。
在RPC层中实现了一个NFS解析模块,边接收边解析。另一方面,在物理存储介质中,分配出NFS的I/O缓冲区(NFS Cache),这里根据需要设置有多个I/O缓冲区:缓冲区0(NFS Cache0)、缓冲区1(NFS Cache1)……多个I/O缓冲区一次循环使用。接收到的I/O数据段,检查是否需要写入I/O缓冲区,是的话则写入;同时,还判断是否需要切换I/O缓冲区。连续的数据写入I/O缓冲区的连续内存地址,当满足下列三种条件之一的情况,则将积累的一段数据以直接I/O方式刷入物理存储介质。这三种情况是:1,当前I/O缓冲区填满,无法写入新数据;2,当请求中的目标逻辑地址与缓冲区中已填入的数据地址不连续时,也就是说不是连续地址数据,无法形成连续数据不能累计成大段数据;3,超过预先设定的时间上限,一直没有新的请求下来,而缓冲区中仍有数据;这是说明数据传输停止的情况。
数据刷到物理存储介质(如磁盘)以后,清空当前使用的I/O缓冲区,重新开始本发明方法的流程。
多个I/O缓冲区循环依次使用是指在数据写入I/O缓冲区的时候,其他外部请求无法使用该段分配内存造成堵塞,降低I/O效率;每次只有一个I/O缓冲区被激活(Active)使用,前述切换I/O缓冲区的情况即是基于此产生。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡众志和达存储技术有限公司,未经无锡众志和达存储技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210018257.0/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置