[发明专利]实现分布式文件系统异步输入输出接口的系统及读写方法无效
申请号: | 200910085865.1 | 申请日: | 2009-06-03 |
公开(公告)号: | CN101576912A | 公开(公告)日: | 2009-11-11 |
发明(设计)人: | 夏舰波;彭杰;张波 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F9/46;G06F9/38 |
代理公司: | 北京银龙知识产权代理有限公司 | 代理人: | 许 静 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 分布式 文件系统 异步 输入输出 接口 系统 读写 方法 | ||
技术领域
本发明主要涉及数据存储与访问领域,特别是指一种实现分布式文件系统异步输入输出接口的系统及异步读写方法。
背景技术
分布式文件系统广泛应用于IPTV(Internet Protocol Television,交互式网络电视)、流媒体服务器等业务场合。通常业务使用分布式文件系统的同步阻塞式IO(Input/Output,输入/输出)接口进行文件的读写。在进行大量业务操作时,一个线程需要处理多个业务请求,因此需要同时读写多个文件,而同步阻塞式的IO接口很容易导致一次读写超时影响多次的读写,为了解决这个问题,需要分布式文件系统提供异步IO的能力。
POSIX(Portable Operating System Interface,可移植操作系统接口)定义的异步IO是通过用户空间的库函数实现的,因此对于底层的IO,实质上还是同步的方式。当一个进程通过异步IO方式aio_read或aio_write发起IO请求时,库函数克隆一个当前进程,然后让它的子进程触发同步的read和write操作,而父进程立即从aio_read或aio_write返回,继续执行程序中其他的代码。因此通过POSIX定义的库函数来实现异步IO时也存在性能的问题。
发明内容
本发明提出一种实现分布式文件系统异步输入输出接口的系统及异步读方法和异步写方法,能够提高分布式文件系统的大吞吐量读写的性能。
本发明的技术方案是这样实现的:
一种实现分布式文件系统异步输入输出接口的系统,包括:
动态链接库,所述动态链接库嵌入到应用进程地址空间内运行,提供给所述应用进程调用的异步输入输出IO接口;
共享内存模块,所述共享内存模块与所述动态链接库通信连接,所述共享内存模块包括至少一个异步输入输出AIO控制块,所述共享内存模块通过所述AIO控制块实现异步读写请求的提交和完成。
优选的,还包括:
代理进程模块,所述代理进程模块与所述共享内存模块通信连接,所述代理进程模块用于处理所述应用进程的请求。
优选的,还包括:
数据存储模块,所述数据存储模块与所述代理进程模块通信连接,所述数据存储模块用于存储数据。
优选的,所述共享内存模块还包括:
至少一个数据缓存块,所述数据缓存块与所述AIO控制块一一对应,所述数据缓存块用于所述应用进程与所述代理进程模块之间的数据交换,同一个数据缓存块能被多个应用进程同时使用。
优选的,所述共享内存模块包括用于存放所述AIO控制块的AIO请求队列和AIO完成队列,所述共享内存模块的所述AIO控制块通过所述AIO请求队列和AIO完成队列控制读写的异步性。
一种读写方法,包括步骤:
应用进程调用动态链接库的异步输入输出IO接口提交异步读写请求,提交读写数据的参数信息;
动态链接库解析所述参数信息,根据所述参数信息申请AIO控制块并初始化所述AIO控制块,关联所述AIO控制块和所述应用进程的异步读写请求;
所述AIO控制块通过AIO请求队列和AIO完成队列完成所述应用进程与代理进程模块之间数据的异步读写。
优选的,所述异步读写请求为异步读请求,所述AIO控制块通过AIO请求队列和AIO完成队列完成所述应用进程与代理进程模块之间数据的异步读写具体包括:
将所述AIO控制块放入所述AIO请求队列;
所述代理进程模块从所述AIO请求队列中获取所述AIO控制块,根据所述AIO控制块的信息读取对应数据到所述AIO控制块对应的数据缓存块中,并将所述AIO控制块放入所述AIO完成队列中;
所述动态链接库扫描所述AIO完成队列,获取所述AIO控制块,并将数据从所述AIO控制块对应的数据缓存块中拷贝至所述应用进程的缓冲区。
优选的,所述异步读写请求为异步写请求,所述AIO控制块通过AIO请求队列和AIO完成队列完成所述应用进程与代理进程模块之间数据的异步读写具体包括:
将待写入数据从所述应用进程的缓冲区拷贝到所述AIO控制块对应的数据缓存块中,将所述AIO控制块放入所述AIO请求队列;
所述代理进程模块从所述AIO请求队列中获取所述AIO控制块,根据所述AIO控制块的信息将所述AIO控制块对应的数据缓存块中的数据写入到相应的数据存储模块中,写操作完成后将所述AIO控制块放入所述AIO完成队列中。
优选的,将所述AIO控制块放入所述AIO完成队列中后还包括步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910085865.1/2.html,转载请声明来源钻瓜专利网。