文件预读的方法和装置的制作方法

文档序号:6399322阅读:123来源:国知局
专利名称:文件预读的方法和装置的制作方法
技术领域
本发明涉及文件操作领域,特别涉及一种文件预读的方法和装置。
背景技术
文件共享是服务器重要的功能。通过文件共享,有访问权限的用户可以随时访问文件。共享文件读写性能越好,用户工作的效率越高,越能发挥文件的价值。常见的文件共享方法有CIFS (Common Internet File System,通用因特网文件系统)/SMB (ServerMessage Block,服务消息块)共享目录形式,FTP (File Transfer Protocol,文件传输协议)上传下载,HTTP (Hypertext transfer protocol,超文本传输协议)下载,emuIe (电驴)共享等,其基本技术模型是在服务端为每个客户端建立一个子进程或子线程,通过新的子进程、子线程为客户端提供服务。但是,磁盘随机读写时,由于寻道时间较长,实际传输速度极少达到峰值。为了达到较高的1/0 (Input Output,输入输出)带宽,文件系统读取通常采用预读取算法,预测即将访问的文件块,并提前把它们批量读入内存缓存,从而改善I/O性能。现有的文件系统通常有两种预读方法。一种是启发性的预读方法(heuristicprefetching),另一种是知情的预读方法(informed prefetching)。启发性预读是在文件系统层分析文件系统缓存页的特征,将当前请求的页与刚刚过去的一个时间段内的页对t匕,从而发现文件读写的特征,比如顺序读写、每次读写的块大小、读写比例、顺序读与随机读的比例等,然后根据该特征进行预读。知情的预读通过使用预读API (ApplicationProgramming Interface,应用程序编程接口),由上层应用程序给予文件系统明确的预读指示,文件系统根据该预读指示进行预读。但是,启发性预读对算法的要求较高,存在命中率的问题,会有预测的结果不准确的问题。知情的预读需要调用API,对上层应用依赖严重,使用比较受限,具有局限性。

发明内容
为了提高文件预读的准确性,降低局限性,本发明提供了一种文件预读的方法和装置。所述技术方案如下:第一方面,本发明提供了一种文件预读的方法,包括:监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组; 根据建立的所述三元组执行预读文件的操作。结合第一方面,第一方面的第一种实施方式下,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:根据所述请求获取用户信息;跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。结合第一方面,第一方面的第二种实施方式下,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:获取所述文件流的读写特征,以及所述用户流的读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。结合第一方面,第一方面的第三种实施方式下,所述方法还包括:对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。结合上述第三种实施方式,第一方面的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。结合第一方面,第一方面的第五种实施方式下,所述方法还包括:解析当前监听到的所述请求,获取用户操作文件的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。结合第一方面,第一方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第一方面的第六种实施方式下,所述方法还包括:在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。第二方面,本发明还提供了一种文件预读的装置,包括:监听模块,用于监听操作文件的请求;跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;关联分析模块,用于检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;预读处理模块,用于根据建立的所述三元组执行预读文件的操作。
结合第二方面,第二方面的第一种实施方式下,所述跟踪模块用于:根据所述请求获取用户信息;跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。结合第二方面,第二方面的第二种实施方式下,所述关联分析模块用于:获取所述文件流的读写特征,以及所述用户流的读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。结合第二方面,第二方面的第三种实施方式下,所述关联分析模块还包括:修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。结合上述第三种实施方式,第二方面的第四种实施方式下,所述修正单元用于:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。结合第二方面,第二方面的第五种实施方式下,所述关联分析模块还用于:解析当前监听到的所述请求,获取用户操作文件的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。结合第二方面,第二方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第二方面的第六种实施方式下,所述关联分析模块还用于:在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。本发明提供的技术方案带来的有益效果是:通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例1提供的文件预读的方法流程图;图2是本发明实施例2提供的文件预读的方法流程图;图3是本发明实施例3提供的文件预读的装置结构图;图4是本发明实施例4提供的文件预读的装置结构图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例1参见图1,本实施例提供了一种文件预读的方法,包括:101:监听操作文件的请求;102:跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;103:检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;104:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;105:根据建立的三元组执行预读文件的操作。本发明中,所述预读是指在读写操作之前将待操作的文件提前读入内存中进行缓存,然后在执行读或写操作时直接对内存中的文件进行读或写操作,从而可以提高读写速度,改善I/O性能。结合上述方法,上述方法的第一种实施方式下,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:根据请求获取用户信息;跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;根据用户信息和确定的进程,建立用户与进程的对应关系;根据确定的进程处理的文件,建立进程与文件的对应关系。结合上述方法,上述方法的第二种实施方式下,根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:获取文件流的读写特征,以及用户流的读写特征;比较文件流的读写特征和用户流的读写特征,找出读写特征匹配的文件流和用户流;根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。结合上述方法,上述方法的第三种实施方式下,上述方法还包括:
对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。结合上述第三种实施方式,上述方法的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。结合上述方法,上述方法的第五种实施方式下,上述方法还包括:解析当前监听到的请求,获取用户操作文件的命令;当该命令完成时,将三元组中用户及文件的对应项删除。结合上述方法,上述方法的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,上述方法的第六种实施方式下,上述方法还包括:在建立三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对三元组进行更新。本实施例提供的上述方法,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。实施例2参见图2,本实施例提供了一种文件预读的方法,包括:201:监听操作文件的请求;本实施例中,操作文件可以为读文件,或者也可以为写文件。本实施例应用于文件共享的场景。通常,一个文件在服务器上设置为共享,多个客户端可以分别对该共享的文件进行读或写操作。具体地,可以监听网卡上的TCP (Transmission Control Protocol,传输控制协议)/IP协议、CIFS/SMB服务等等,以分析是否有新的请求,如一个新的TCP链接,以及是否有数据流动,请求的读写块的大小、内容等等。202:根据请求获取用户信息,跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;本实施例中,服务器可以开启多个进程,每个进程内也可以开启多个线程,通常,每一个线程为一个用户服务。具体地,可以利用ps、pstree等命令来跟踪服务进程,从而可以获得目前正在运行的进程和子进程的父子关系,以及线程和子线程的父子关系等等。本实施例中,所述用户信息包括客户端IP (Internet Protocol,网际协议)地址,或者包括客户端IP地址和端口号。当两个请求来自不同的IP时,可以将其识别为不同的用户,此时可以不用获取端口号信息;当两个请求来自相同的IP时,进一步获取请求来自的端口号,如果端口号不同,则将其识别为不同的用户。通过IP,或者IP和端口号可以识别出不同的用户。本步骤中,确定为请求服务的进程,具体地,可以通过建立用户-进程的二元组来实现。例如,参见表1,为用户-进程二元组的一个示例。表I
权利要求
1.一种文件预读的方法,其特征在于,所述方法包括: 监听操作文件的请求; 跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系; 检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息; 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组; 根据建立的所述三元组执行预读文件的操作。
2.根据权利要求1所述的方法,其特征在于,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括: 根据所述请求获取用户信息; 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件; 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系; 根据确定的所述进程处理的文件,建立进程与文件的对应关系。
3.根据权利要求1所述的方法,其特征在于,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括: 获取所述文件流的读写特征,以及所述用户流的读写特征; 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流; 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。
5.根据权利要求4所述的方法,其特征在于,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括: 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括: 解析当前监听到的所述请求,获取用户操作文件的命令; 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括: 当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息; 根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。
8.一种文件预读的装置,其特征在于,所述装置包括: 监听模块,用于监听操作文件的请求;跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系; 关联分析模块,用于检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组; 预读处理模块,用于根据建立的所述三元组执行预读文件的操作。
9.根据权利要求8所述的装置,其特征在于,所述跟踪模块用于: 根据所述请求获取用户信息; 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件; 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系; 根据确定的所述进程处理的文件,建立进程与文件的对应关系。
10.根据权利要求8所述的装置,其特征在于,所述关联分析模块用于: 获取所述文件流的读写特征,以及所述用户流的读写特征; 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流; 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。
11.根据权利要求8所述的装置,其特征在于,所述关联分析模块还包括: 修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。
12.根据权利要求11所述的装置,其特征在于,所述修正单元用于: 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。
13.根据权利要求8所述的装置,其特征在于,所述关联分析模块还用于: 解析当前监听到的所述请求,获取用户操作文件的命令; 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。
14.根据权利要求8至13中任一项所述的装置,其特征在于,所述关联分析模块还用于: 当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息; 根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。
全文摘要
本发明公开了一种文件预读的方法和装置,属于文件操作领域。所述方法包括监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。所述装置包括监听模块、跟踪模块、关联分析模块和预读处理模块。本发明实现了用户级别的文件预读,提高了预读的准确性,无需依赖上层应用,降低了局限性。
文档编号G06F17/30GK103177080SQ20131004965
公开日2013年6月26日 申请日期2013年2月7日 优先权日2013年2月7日
发明者高文强, 彭贵平, 佟强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1