《文件预读的方法和装置.pdf》由会员分享,可在线阅读,更多相关《文件预读的方法和装置.pdf(17页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103177080 A(43)申请公布日 2013.06.26CN103177080A*CN103177080A*(21)申请号 201310049655.3(22)申请日 2013.02.07G06F 17/30(2006.01)(71)申请人华为技术有限公司地址 518129 广东省深圳市龙岗区坂田华为总部办公楼(72)发明人高文强 彭贵平 佟强(74)专利代理机构北京三高永信知识产权代理有限责任公司 11138代理人黄厚刚(54) 发明名称文件预读的方法和装置(57) 摘要本发明公开了一种文件预读的方法和装置,属于文件操作领域。所述方法包括:监听操作文件的请求;。
2、跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。所述装置包括:监听模块、跟踪模块、关联分析模块和预读处理模块。本发明实现了用户级别的文件预读,提高了预读的准确性,无需依赖上层应用,降低了局限性。(51)Int.Cl.权利要求书2页 说明书11页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书11页 附图3页(。
3、10)申请公布号 CN 103177080 ACN 103177080 A1/2页21.一种文件预读的方法,其特征在于,所述方法包括:监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。2.根据权利要求1所述的方法,其特征在于,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:根据所述请求获取用户信息;跟。
4、踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。3.根据权利要求1所述的方法,其特征在于,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:获取所述文件流的读写特征,以及所述用户流的读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。4。
5、.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。5.根据权利要求4所述的方法,其特征在于,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:解析当前监听到的所述请求,获取用户操作文件。
6、的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。8.一种文件预读的装置,其特征在于,所述装置包括:监听模块,用于监听操作文件的请求;权 利 要 求 书CN 103177080 A2/2页3跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;关联分析模块,用于检测预读文件得到文件流信。
7、息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;预读处理模块,用于根据建立的所述三元组执行预读文件的操作。9.根据权利要求8所述的装置,其特征在于,所述跟踪模块用于:根据所述请求获取用户信息;跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。10.根据权利要求8所述的装置,其特征在于,所述关联分析模块用于:获取所述文件流的读写特征,以及所述用户流的。
8、读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。11.根据权利要求8所述的装置,其特征在于,所述关联分析模块还包括:修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。12.根据权利要求11所述的装置,其特征在于,所述修正单元用于:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应。
9、的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。13.根据权利要求8所述的装置,其特征在于,所述关联分析模块还用于:解析当前监听到的所述请求,获取用户操作文件的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。14.根据权利要求8至13中任一项所述的装置,其特征在于,所述关联分析模块还用于:当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。权 利 要 求 书CN 103177080 A1/11页4文件预读的方法和装置技。
10、术领域0001 本发明涉及文件操作领域,特别涉及一种文件预读的方法和装置。背景技术0002 文件共享是服务器重要的功能。通过文件共享,有访问权限的用户可以随时访问文件。共享文件读写性能越好,用户工作的效率越高,越能发挥文件的价值。常见的文件共享方法有CIFS(Common Internet File System,通用因特网文件系统)/SMB(Server Message Block,服务消息块)共享目录形式,FTP(File Transfer Protocol,文件传输协议)上传下载,HTTP(Hypertext transfer protocol,超文本传输协议)下载,emule(电驴)共。
11、享等,其基本技术模型是在服务端为每个客户端建立一个子进程或子线程,通过新的子进程、子线程为客户端提供服务。但是,磁盘随机读写时,由于寻道时间较长,实际传输速度极少达到峰值。为了达到较高的I/O(Input Output,输入输出)带宽,文件系统读取通常采用预读取算法,预测即将访问的文件块,并提前把它们批量读入内存缓存,从而改善I/O性能。0003 现有的文件系统通常有两种预读方法。一种是启发性的预读方法(heuristic prefetching),另一种是知情的预读方法(informed prefetching)。启发性预读是在文件系统层分析文件系统缓存页的特征,将当前请求的页与刚刚过去的一。
12、个时间段内的页对比,从而发现文件读写的特征,比如顺序读写、每次读写的块大小、读写比例、顺序读与随机读的比例等,然后根据该特征进行预读。知情的预读通过使用预读API(Application Programming Interface,应用程序编程接口),由上层应用程序给予文件系统明确的预读指示,文件系统根据该预读指示进行预读。0004 但是,启发性预读对算法的要求较高,存在命中率的问题,会有预测的结果不准确的问题。知情的预读需要调用API,对上层应用依赖严重,使用比较受限,具有局限性。发明内容0005 为了提高文件预读的准确性,降低局限性,本发明提供了一种文件预读的方法和装置。所述技术方案如下:。
13、0006 第一方面,本发明提供了一种文件预读的方法,包括:0007 监听操作文件的请求;0008 跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0009 检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;0010 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0011 根据建立的所述三元组执行预读文件的操作。0012 结合第一方面,第一方面的第一种实施方式下,跟踪读写文件的进程,获取用户与说 明 书CN 103177080 A2/11页5进程的对应关系,以及进程与文件的对应关系,。
14、包括:0013 根据所述请求获取用户信息;0014 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;0015 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;0016 根据确定的所述进程处理的文件,建立进程与文件的对应关系。0017 结合第一方面,第一方面的第二种实施方式下,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:0018 获取所述文件流的读写特征,以及所述用户流的读写特征;0019 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;0020 根据。
15、所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。0021 结合第一方面,第一方面的第三种实施方式下,所述方法还包括:0022 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0023 结合上述第三种实施方式,第一方面的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:0024 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的。
16、用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0025 结合第一方面,第一方面的第五种实施方式下,所述方法还包括:0026 解析当前监听到的所述请求,获取用户操作文件的命令;0027 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。0028 结合第一方面,第一方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第一方面的第六种实施方式下,所述方法还包括:0029 在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;0030 根据重新检测得到的文件流信息和重新划分得到。
17、的用户流信息对所述三元组进行更新。0031 第二方面,本发明还提供了一种文件预读的装置,包括:0032 监听模块,用于监听操作文件的请求;0033 跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0034 关联分析模块,用于检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0035 预读处理模块,用于根据建立的所述三元组执行预读文件的操作。说 明 书CN 103177080 A3/11页60036 结合第二方面,第二方面的。
18、第一种实施方式下,所述跟踪模块用于:0037 根据所述请求获取用户信息;0038 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;0039 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;0040 根据确定的所述进程处理的文件,建立进程与文件的对应关系。0041 结合第二方面,第二方面的第二种实施方式下,所述关联分析模块用于:0042 获取所述文件流的读写特征,以及所述用户流的读写特征;0043 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;0044 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文。
19、件流和用户流建立用户、进程和文件的三元组。0045 结合第二方面,第二方面的第三种实施方式下,所述关联分析模块还包括:0046 修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0047 结合上述第三种实施方式,第二方面的第四种实施方式下,所述修正单元用于:0048 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0049 结合第二方面,第二方面的第五种实施方式下,所述。
20、关联分析模块还用于:0050 解析当前监听到的所述请求,获取用户操作文件的命令;0051 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。0052 结合第二方面,第二方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第二方面的第六种实施方式下,所述关联分析模块还用于:0053 在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;0054 根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。0055 本发明提供的技术方案带来的有益效果是:0056 通过监听操作。
21、文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。附图说明0057 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使说 明 书CN 103177080 A4。
22、/11页7用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0058 图1是本发明实施例1提供的文件预读的方法流程图;0059 图2是本发明实施例2提供的文件预读的方法流程图;0060 图3是本发明实施例3提供的文件预读的装置结构图;0061 图4是本发明实施例4提供的文件预读的装置结构图。具体实施方式0062 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。0063 实施例10064 参见图1,本实施例提供了一种文件预读的方法,包括:。
23、0065 101:监听操作文件的请求;0066 102:跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0067 103:检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;0068 104:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0069 105:根据建立的三元组执行预读文件的操作。0070 本发明中,所述预读是指在读写操作之前将待操作的文件提前读入内存中进行缓存,然后在执行读或写操作时直接对内存中的文件进行读或写操作,从而可以提高读写速度,改善I/O性能。0071 结合上述方法。
24、,上述方法的第一种实施方式下,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:0072 根据请求获取用户信息;0073 跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;0074 根据用户信息和确定的进程,建立用户与进程的对应关系;0075 根据确定的进程处理的文件,建立进程与文件的对应关系。0076 结合上述方法,上述方法的第二种实施方式下,根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:0077 获取文件流的读写特征,以及用户流的读写特征;0078 比较文件流的读写特征和用户流的。
25、读写特征,找出读写特征匹配的文件流和用户流;0079 根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。0080 结合上述方法,上述方法的第三种实施方式下,上述方法还包括:说 明 书CN 103177080 A5/11页80081 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0082 结合上述第三种实施方式,上述方法的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:0083 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文。
26、件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0084 结合上述方法,上述方法的第五种实施方式下,上述方法还包括:0085 解析当前监听到的请求,获取用户操作文件的命令;0086 当该命令完成时,将三元组中用户及文件的对应项删除。0087 结合上述方法,上述方法的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,上述方法的第六种实施方式下,上述方法还包括:0088 在建立三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为。
27、单位对请求进行划分得到用户流信息;0089 根据重新检测得到的文件流信息和重新划分得到的用户流信息对三元组进行更新。0090 本实施例提供的上述方法,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性。
28、,无需依赖上层应用,降低了局限性。0091 实施例20092 参见图2,本实施例提供了一种文件预读的方法,包括:0093 201:监听操作文件的请求;0094 本实施例中,操作文件可以为读文件,或者也可以为写文件。本实施例应用于文件共享的场景。通常,一个文件在服务器上设置为共享,多个客户端可以分别对该共享的文件进行读或写操作。0095 具体地,可以监听网卡上的TCP(Transmission Control Protocol,传输控制协议)/IP协议、CIFS/SMB服务等等,以分析是否有新的请求,如一个新的TCP链接,以及是否有数据流动,请求的读写块的大小、内容等等。0096 202:根据请。
29、求获取用户信息,跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;0097 本实施例中,服务器可以开启多个进程,每个进程内也可以开启多个线程,通常,每一个线程为一个用户服务。具体地,可以利用ps、pstree等命令来跟踪服务进程,从而可以获得目前正在运行的进程和子进程的父子关系,以及线程和子线程的父子关系等等。0098 本实施例中,所述用户信息包括客户端IP(Internet Protocol,网际协议)地址,说 明 书CN 103177080 A6/11页9或者包括客户端IP地址和端口号。当两个请求来自不同的IP时,可以将其识别为不同的用户,此时可以不用获取端口号信息;当两个请求。
30、来自相同的IP时,进一步获取请求来自的端口号,如果端口号不同,则将其识别为不同的用户。通过IP,或者IP和端口号可以识别出不同的用户。0099 本步骤中,确定为请求服务的进程,具体地,可以通过建立用户-进程的二元组来实现。例如,参见表1,为用户-进程二元组的一个示例。0100 表10101 用户进程SAMBA客户端IP/PORT SMB进程/服务端口0102 其中,当前请求来自一个SAMBA客户端,IP/PORT表示该客户端的IP地址和端口号,该当前请求服务的进程为SMB进程,将该客户端和该进程关联起来得到用户-进程二元组。0103 本步骤中,确定进程处理的文件,具体地,可以通过建立进程-文件。
31、的二元组来实现。例如,参见表2,为进程-文件二元组的一个示例。0104 表20105 进程文件SMB进程/服务端口a.doc0106 其中,处理当前请求的进程为SMB进程,该进程处理的文件为a.doc,从而可以建立如表2所示的进程-文件二元组。0107 203:根据所述用户信息和确定的进程,建立用户与进程的对应关系,并且,根据确定的进程处理的文件,建立进程与文件的对应关系;0108 204:检测预读文件得到文件流信息;0109 本实施例中,检测文件流的方法由多种,如采用顺序流检测、随机顺序流、交织流、并发流等多种流检测方法,本发明对此不做具体限定。通过流检测可以得到一个文件对应的一个或多个文件。
32、流。0110 本实施例中,每个文件的检测结果是该文件包括m个文件流,具体地,可以用数组stream_filem来表示,其中,m为自然数。一个文件对应的总的文件流可以表示为0111 205:以文件为单位对请求进行划分得到用户流信息;0112 本实施例中,一个用户可以对多个文件进行读写操作,因此,按照文件对请求进行划分得到用户流,可以用数组stream_usern来表示。如果一个用户的请求对n个文件进行读或写的操作,则划分为n个用户流,该用户对应的总的用户流可以表示为说 明 书CN 103177080 A7/11页100113 例如,将用户流中的两个读写块的内容、大小与文件进行对比,发现分别属于不。
33、同的文件,则将该用户流分拆为两个文件级别的流。0114 206:获取文件流的读写特征,以及用户流的读写特征,比较文件流的读写特征和用户流的读写特征,找出读写特征匹配的文件流和用户流;0115 207:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0116 本实施例中,读写特征包括但不限于:读写块的内容、读写块的大小、读或者写、随机程度、时序关系等等,本发明对此不做具体限定。所述读写特征匹配是指文件流的读写特征与用户流的读写特征相同。0117 本步骤中建立的用户、进程和文件的三元组可以如表3所示。0118 表30119 0120 。
34、表3中的三元组包括三项,第一项中,为用户1的请求提供服务的是进程1,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第二项中,为用户1的请求提供服务的是进程1,该请求访问的文件为b.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第三项中,为用户2的请求提供服务的是进程2,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。0121 208:根据建立的三元组执行预读文件的操作。0122 本实施例中,进一步地,还可以对已建立的三元组进行修正,上述方法还包括:0123 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文说 明 书CN 103177080 A10。