基于文件系统的nfs数据i/o加速方法

文档序号:6363647阅读:1093来源:国知局
专利名称:基于文件系统的nfs数据i/o加速方法
技术领域
本发明涉及计算机数据存储技术,特别是一种Linux的网络文件系统(NFS)数据的读写(I/o)方法。
背景技术
网络文件系统(NFS, Network File System的简写)是FreeBSD支持的文件系统中的一种,允许一个系统在网络上与他人共享目录和文件。现有Linux系统下的NFS进行数据读写是通过远程过程调用协议(RPC, Remote Procedure Call Protocol的简写,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。)请求实现的,每个RPC包中都带有NFS请求/响应包。典型的NFS数据流模型如图I所示的每个 NFS请求包都包含RPC包头信息,先经过RPC层,RPC层接收完整的RPC包,解析出NFS包, 然后传到NFS层,再解析NFS请求的指令,最后由虚拟文件系统层(Virtual File System 、VFS)执行相应的存入或读取动作。这样,每次1/0,都要从系统中分配内存,并且物理存储介质会有一次以上1/0操作,性能较低。

发明内容
本发明的目的为了克服背景技术所说的现有Linux系统NFS数据1/0的缺陷,发明一种速度更快、效率更高的I/o方法。本发明的方法是,使用连续的物理内存当作NFS的1/0缓冲区(cache) ;RPC层接收数据包时,边接收边解析,解析出每个数据包中NFS写请求的包,确定是NFS数据包开始接收其数据段时,从NFS的1/0缓冲区(cache)中分配所需的内存,并将NFS数据段接收到该缓冲区内;从NFS的1/0缓冲区分配内存时,目标地址连续的NFS数据分配连续的内存, 多个连续的NFS数据组合到一个连续的物理内存里面;当累积到如下条件之一时,一次性把一段连续物理内存的整段数据刷到物理存储介质中
(1)当缓冲区快填满时;
(2)当请求中的目标逻辑地址与缓冲区中已填入的数据地址不连续时;
(3)超过设定的时间上限,没有新的请求,而缓冲区中仍有数据时;
数据刷入物理存储介质以后清空NFS的1/0缓冲区。为了防止缓冲区正在刷数据时,外部请求暂时无法分配到缓冲区内存,优选方案是同时使用多个缓冲区,每一时刻,只有一个缓冲区处于活动状态(Active),分配内存都优先从活动状态的缓冲区分配,当该缓冲区要刷新数据时,激活下一个缓冲区,多个缓冲区依次循环使用。本发明的方法,可以明显减少物理存储设备的1/0次数,降低能耗,提高速度;同时,本发明方法将小的请求包数据通过缓冲区累积形成大块的数据进行I/o操作,可以提高性能。


图I,现有技术的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缓冲区缓冲区O (NFS CacheO)、缓冲区I (NFS Cache I)……多个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缓冲区的情况即是基于此产生。
权利要求
1.基于文件系统的NFS数据I/O加速方法,其特征是使用连续的物理内存当作NFS的 I/O缓冲区;RPC层接收数据包时,边接收边解析,解析出每个数据包中NFS写请求的包,确定是NFS数据包开始接收其数据段时,从NFS的I/O缓冲区中分配所需的内存,并将NFS数据段接收到该缓冲区内;WNFS的I/O缓冲区分配内存时,目标地址连续的NFS数据分配连续的内存,多个连续的NFS数据组合到一个连续的物理内存里面;当累积到如下条件之一时,一次性把一段连续物理内存的整段数据刷到物理存储介质中1,当缓冲区快填满时;2,当请求中的目标逻辑地址与缓冲区中已填入的数据地址不连续时;3,超过设定的时间上限,没有新的请求,而缓冲区中仍有数据时;数据刷入物理存储介质以后清空NFS的I/O缓冲区。
2.根据权利要求I所述的基于文件系统的NFS数据I/O加速方法,其特征是同时使用多个I/O缓冲区,每一时刻,只有一个I/O缓冲区处于活动状态,分配内存都优先从活动状态的I/O缓冲区分配,当该缓冲区要刷新数据时,激活下一个缓冲区,多个缓冲区依次循环使用。
全文摘要
本发明涉及一种计算机存储技术,是一种基于文件系统的NFS数据I/O加速方法,方法是在物理存储中划出一个区域作为缓冲区,在RPC层实现一个NFS解析模块,对每一个NFS请求包进行解析。对于每一个NFS写请求的包,从缓冲区中分配出相应的内存,把NFS数据包接收到缓冲区中。当缓冲区满足本方案提出的条件时,先激活缓冲区,然后开始刷新缓冲区。本发明可以减少物理存储介质的I/O次数,并且通过缓冲区保证数据地址的连续性,提高I/O性能。
文档编号G06F17/30GK102609485SQ20121001825
公开日2012年7月25日 申请日期2012年1月20日 优先权日2012年1月20日
发明者吴清秀, 张庆敏, 张衡, 胡刚, 谢海威 申请人:无锡众志和达存储技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1