[发明专利]一种分布式文件系统客户端的文件系统有效
申请号: | 201110326447.4 | 申请日: | 2011-10-25 |
公开(公告)号: | CN102541984A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 杨浩;马照云;马振杰;张东阳;邵宗有;刘新春;苗艳超;王勇 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/08 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 文件系统 客户端 | ||
技术领域
本发明涉及分布式文件系统中高效的元数据缓存管理机制,具体来说,涉及一种分布式文件系统客户端的文件系统。
背景技术
在目前的主流分布式文件系统,如NFS、Lustre、GPFS等,所有的模块均处于Linux内核态,由于内核态开发的难点比较多,因而相比较而言,这些文件系统的开发和维护的成本相对比较高。近几年,一些新兴的分布式文件系统,如Google FS、HDFS、MooseFS等,均将各个部分放在用户态,以降低开发难度。
对于基于用户态的分布式文件系统,如果需要支持系统标准的文件系统操作,则无法完全避开内核态,因为系统调用必须要先进入内核态。为了解决这一问题,HDFS、MooseFS等采用了目前Linux内核自带的用户空间文件系统FUSE的架构进行客户端的开发。
FUSE通过建立一个辅助设备和用户态进行通信,通过将内核态系统调用的请求传递给用户态,由用户态的守护进程完成请求处理后,再通过辅助设备通知内核态。FUSE的不足之处在于,其和用户态通信中有太多的内存拷贝,尤其是文件读写时,也需要通过数据拷贝,在内核态模块和用户态守护进程之间进行传递数据。过多的内存拷贝导致基于FUSE的客户端效率低下,实验结果表明,采用 FUSE的客户端,其性能损失在10%以上,因此在性能要求比较高的应用中,基于FUSE的分布式客户端是难以被接受的。
发明内容
本发明旨在公开一种高效的用户态分布式文件系统客户端方案,该方案能够很好地解决目前Linux内核态自带的用户态文件系统FUSE性能低下的问题。
一种分布式文件系统客户端的文件系统,
内核态模块注册一个字符设备,用户态守护进程通过系统读写调用来访问该字符设备,来读取请求以及返回请求执行的结果;
所述内核态模块采用页面的方式管理文件系统请求,当收到文件系统相关请求时,先将文件系统的请求加入到自定义的请求缓存管理区;
所述用户态的守护进程会有线程采用阻塞时读取的方式,一直尝试读取请求,如果请求缓存区中没有有效的请求,则守护进程的读线程会一直阻塞;当内核态模块接收到文件系统请求后,会将守护进程的读线程唤醒。
优选的,所述读线程被唤醒后,会在内核态将文件系统请求缓存区的相关页面映射到该进程用户态可以访问的虚拟地址,为其分配管理结构,将地址填到该管理结构中,并通过读系统调用传递给用户态守护进程,用户态守护进程读取到管理结构后,会从中取出相应的文件系统请求,进行处理。
优选的,所述管理结构分为两种,一种是文件系统请求,该类请求是变长的,来自分布式文件系统客户端的应用程序;另一种是管理请求,该类请求是文件系统请求的管理结构,用于在内核态模块和用户态守护进程之间传递消息。
优选的,所述用户态处理完请求后,会将处理结果填充到由内核态模块传递过来的虚拟地址当中,通过字符设备的写系统调用通知内核态目录,内核态模块收到该写请求后,会取出管理结构,并从中取出文件系统请求,直接拷贝给应用程序。
优选的,所述文件系统对于文件的读写,还需要将文件页面缓存中相关的页面映射到进程的虚存空间,并通过请求结构传递给用户态守护进程,用户态进程收到请求后,会直接操作文件的页面缓存,将文件缓存页面直接映射。
本发明中,客户端由内核态模块和用户态守护进程两部分组成。这两个模块通过字符设备进行通信,但是和FUSE的不同点在于,内核态在与用户态通信之前,会将需要的内存页面准备好,并映射为用户态可以访问的虚拟地址,将虚拟地址作为通信的一部分,传递给用户态守护进程。这样以来,用户态进程就可以直接操作内核态事先准备好的内存区域,而不需要再进行内存分配,同时避免了用户态和内核态之间的内存拷贝。
具体实施方式
发明中的技术方案具体描述如下:
(1)内核态模块注册一个字符设备,用户态进程通过系统读写调用来访问该字符设备,来读取请求以及返回请求执行的结果。
(2)本发明中请求的管理结构分为两种,一种是文件系统请求,该类请求是变长的,来自分布式文件系统客户端的应用程序;另一种是管理请求,该类请求是文件系统请求的管理结构,用于在内核态模块和用户态守护进程之间传递消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110326447.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:粉末成形机的传动杆
- 下一篇:一种采用喷射式热泵的回热系统