文件预读的方法和装置.pdf

上传人:54 文档编号:1556620 上传时间:2018-06-24 格式:PDF 页数:17 大小:2.28MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310049655.3

申请日:

2013.02.07

公开号:

CN103177080A

公开日:

2013.06.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20130207|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

华为技术有限公司

发明人:

高文强; 彭贵平; 佟强

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

北京三高永信知识产权代理有限责任公司 11138

代理人:

黄厚刚

PDF下载: PDF下载
内容摘要

本发明公开了一种文件预读的方法和装置,属于文件操作领域。所述方法包括:监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。所述装置包括:监听模块、跟踪模块、关联分析模块和预读处理模块。本发明实现了用户级别的文件预读,提高了预读的准确性,无需依赖上层应用,降低了局限性。

权利要求书

权利要求书
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中任一项所述的装置,其特征在于,所述关联分析模块还用于:
当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;
根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。

说明书

说明书文件预读的方法和装置
技术领域
本发明涉及文件操作领域,特别涉及一种文件预读的方法和装置。
背景技术
文件共享是服务器重要的功能。通过文件共享,有访问权限的用户可以随时访问文件。共享文件读写性能越好,用户工作的效率越高,越能发挥文件的价值。常见的文件共享方法有CIFS(Common Internet File System,通用因特网文件系统)/SMB(Server Message Block,服务消息块)共享目录形式,FTP(File Transfer Protocol,文件传输协议)上传下载,HTTP(Hypertext transfer protocol,超文本传输协议)下载,emule(电驴)共享等,其基本技术模型是在服务端为每个客户端建立一个子进程或子线程,通过新的子进程、子线程为客户端提供服务。但是,磁盘随机读写时,由于寻道时间较长,实际传输速度极少达到峰值。为了达到较高的I/O(Input Output,输入输出)带宽,文件系统读取通常采用预读取算法,预测即将访问的文件块,并提前把它们批量读入内存缓存,从而改善I/O性能。
现有的文件系统通常有两种预读方法。一种是启发性的预读方法(heuristic prefetching),另一种是知情的预读方法(informed prefetching)。启发性预读是在文件系统层分析文件系统缓存页的特征,将当前请求的页与刚刚过去的一个时间段内的页对比,从而发现文件读写的特征,比如顺序读写、每次读写的块大小、读写比例、顺序读与随机读的比例等,然后根据该特征进行预读。知情的预读通过使用预读API(Application Programming 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,为用户‑进程二元组的一个示例。
表1
用户进程SAMBA客户端IP/PORTSMB进程/服务端口
其中,当前请求来自一个SAMBA客户端,IP/PORT表示该客户端的IP地址和端口号,该当前请求服务的进程为SMB进程,将该客户端和该进程关联起来得到用户‑进程二元组。
本步骤中,确定进程处理的文件,具体地,可以通过建立进程‑文件的二元组来实现。例如,参见表2,为进程‑文件二元组的一个示例。
表2
进程文件SMB进程/服务端口a.doc
其中,处理当前请求的进程为SMB进程,该进程处理的文件为a.doc,从而可以建立如表2所示的进程‑文件二元组。
203:根据所述用户信息和确定的进程,建立用户与进程的对应关系,并且,根据确定的进程处理的文件,建立进程与文件的对应关系;
204:检测预读文件得到文件流信息;
本实施例中,检测文件流的方法由多种,如采用顺序流检测、随机顺序流、交织流、并发流等多种流检测方法,本发明对此不做具体限定。通过流检测可以得到一个文件对应的一个或多个文件流。
本实施例中,每个文件的检测结果是该文件包括m个文件流,具体地,可以用数组stream_file[m]来表示,其中,m为自然数。一个文件对应的总的文件流可以表示为 <mrow> <MUNDEROVER><MI>Σ</MI> <MN>1</MN> <MI>m</MI> </MUNDEROVER><MI>stream</MI> <MO>_</MO> <MI>file</MI> <MO>[</MO> <MI>i</MI> <MO>]</MO> <MO>.</MO> </MROW>]]&gt;</MATH></MATHS> <BR>205:以文件为单位对请求进行划分得到用户流信息; <BR>本实施例中,一个用户可以对多个文件进行读写操作,因此,按照文件对请求进行划分得到用户流,可以用数组stream_user[n]来表示。如果一个用户的请求对n个文件进行读或写的操作,则划分为n个用户流,该用户对应的总的用户流可以表示为<MATHS num="0002"><MATH><![CDATA[ <mrow> <MUNDEROVER><MI>Σ</MI> <MN>1</MN> <MI>n</MI> </MUNDEROVER><MI>stream</MI> <MO>_</MO> <MI>user</MI> <MO>[</MO> <MI>i</MI> <MO>]</MO> <MO>.</MO> </MROW>]]&gt;</MATH></MATHS> <BR>例如,将用户流中的两个读写块的内容、大小与文件进行对比,发现分别属于不同的文件,则将该用户流分拆为两个文件级别的流。 <BR>206:获取文件流的读写特征,以及用户流的读写特征,比较文件流的读写特征和用户流的读写特征,找出读写特征匹配的文件流和用户流; <BR>207:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组; <BR>本实施例中,读写特征包括但不限于:读写块的内容、读写块的大小、读或者写、随机程度、时序关系等等,本发明对此不做具体限定。所述读写特征匹配是指文件流的读写特征与用户流的读写特征相同。 <BR>本步骤中建立的用户、进程和文件的三元组可以如表3所示。 <BR>表3 <BR></TABLES> <BR>表3中的三元组包括三项,第一项中,为用户1的请求提供服务的是进程1,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第二项中,为用户1的请求提供服务的是进程1,该请求访问的文件为b.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第三项中,为用户2的请求提供服务的是进程2,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。 <BR>208:根据建立的三元组执行预读文件的操作。 <BR>本实施例中,进一步地,还可以对已建立的三元组进行修正,上述方法还包括: <BR>对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。 <BR>这种按照用户流的读写特征对文件流进行修正的方式,充分考虑了用户的请求,基于用户请求关联文件流,进一步地提高了预读的准确性。 <BR>具体地,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括: <BR>对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。 <BR>例如,根据用户流可以得知文件a.doc对应用户1和用户2,而根据文件流可以得知文件a.doc包括3个文件流,分别对应用户1、2和3,则可以将其中用户3对应的文件流合并到用户1对应的文件流中,或者合并到用户2对应的文件流中,从而保证了文件流与用户流的匹配。 <BR>再如,根据用户流可以得知文件b.doc对应用户1、2和3,而根据文件流可以得知文件b.doc包括2个文件流,分别对应用户2和3,则可以将其中用户2或用户3对应的文件流拆分为两个文件流,其中一个对应用户1,从而保证了文件流与用户流的匹配。 <BR>另外,本实施例中,上述方法还可以包括: <BR>解析当前监听到的请求,获取用户操作文件的命令;当该命令完成时,将三元组中用户及文件的对应项删除。例如,解析出get命令,可以判断读操作是否完成,解析出put命令,可以判断写操作是否完成等等。 <BR>这种根据命令调整三元组的方式,可以应用于FTP、HTTP等常用协议,因为这类协议用户流的特点通常是大块顺序读写。或者,也可以应用于CIFS/SMB等服务,这类服务的特点是通常为大量顺序读写,少量随机读写。在上述各类应用中,根据读写命令是否结束来调整三元组,删除三元组中不必要的项,可以提高三元组的精度,释放相关资源,避免资源浪费,尤其是针对多个客户端读同一个文件的场景,这个方法更加有效。 <BR>本实施例中,上述方法还包括: <BR>在建立三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对三元组进行更新。 <BR>所述指定的次数或时长可以根据需要设置,本发明对具体数值不做限定。在请求次数达到该指定的次数或时长时,对已建立的三元组进行更新,能够做到及时地调整已建立的三元组,从而保证了三元组的可靠性,也使得预读的准确性得到了可靠的保障。 <BR>本实施例提供的上述方法,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。 <BR>实施例3 <BR>参见图3,本实施例提供了一种文件预读的装置,包括: <BR>监听模块301,用于监听操作文件的请求; <BR>跟踪模块302,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系; <BR>关联分析模块303,用于检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组; <BR>预读处理模块304,用于根据建立的三元组执行预读文件的操作。 <BR>结合上述装置,上述装置的第一种实施方式下,跟踪模块302用于: <BR>根据请求获取用户信息; <BR>跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件; <BR>根据用户信息和确定的进程,建立用户与进程的对应关系; <BR>根据确定的进程处理的文件,建立进程与文件的对应关系。 <BR>结合上述装置,上述装置的第二种实施方式下,关联分析模块303用于: <BR>获取文件流的读写特征,以及用户流的读写特征; <BR>比较文件流的读写特征和用户流的读写特征,找出读写特征匹配的文件流和用户流; <BR>根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。 <BR>结合上述装置,上述装置的第三种实施方式下,关联分析模块303还包括: <BR>修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。 <BR>结合上述第三种实施方式,上述装置的第四种实施方式下,修正单元用于: <BR>对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。 <BR>结合上述装置,上述装置的第五种实施方式下,关联分析模块303还用于: <BR>解析当前监听到的请求,获取用户操作文件的命令; <BR>当命令完成时,将三元组中用户及文件的对应项删除。 <BR>结合上述装置,上述第一种、第二种、第三种、第四种、第五种实施方式中的任一种,上述装置的第六种实施方式下,关联分析模块303还用于: <BR>在建立三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息; <BR>根据重新检测得到的文件流信息和重新划分得到的用户流信息对三元组进行更新。 <BR>本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。所述装置可以应用于服务器中。 <BR>本实施例提供的上述装置,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。 <BR>实施例4 <BR>参见图4,本实施例提供了一种文件预读的装置,包括: <BR>处理器401,用于监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作; <BR>存储器402,用于存储预读操作的文件。 <BR>结合上述装置,上述装置的第一种实施方式下,处理器401用于: <BR>根据所述请求获取用户信息; <BR>跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件; <BR>根据所述用户信息和确定的所述进程,建立用户与进程的对应关系; <BR>根据确定的所述进程处理的文件,建立进程与文件的对应关系。 <BR>结合上述装置,上述装置的第二种实施方式下,处理器401用于: <BR>获取所述文件流的读写特征,以及所述用户流的读写特征; <BR>比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流; <BR>根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。 <BR>结合上述装置,上述装置的第三种实施方式下,处理器401还用于: <BR>对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。 <BR>结合上述第三种实施方式,上述装置的第四种实施方式下,处理器401用于: <BR>对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。 <BR>结合上述装置,上述装置的第五种实施方式下,处理器401还用于: <BR>解析当前监听到的所述请求,获取用户操作文件的命令; <BR>当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。 <BR>结合上述装置,上述第一种、第二种、第三种、第四种、第五种实施方式中的任一种,上述装置的第六种实施方式下,处理器401还用于: <BR>在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息; <BR>根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。 <BR>本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。所述装置可以应用于服务器中。 <BR>本实施例提供的上述装置,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。 <BR>本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。 <BR>以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。</p></div> </div> </div> </div> <div class="tempdiv cssnone" style="line-height:0px;height:0px; overflow:hidden;"> </div> <div id="page"> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/f5e4559e-60d0-48c0-b3a4-63874a19c0ad/f5e4559e-60d0-48c0-b3a4-63874a19c0ad1.gif' alt="文件预读的方法和装置.pdf_第1页" width='100%'/></div><div class="pageSize">第1页 / 共17页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/f5e4559e-60d0-48c0-b3a4-63874a19c0ad/f5e4559e-60d0-48c0-b3a4-63874a19c0ad2.gif' alt="文件预读的方法和装置.pdf_第2页" width='100%'/></div><div class="pageSize">第2页 / 共17页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/f5e4559e-60d0-48c0-b3a4-63874a19c0ad/f5e4559e-60d0-48c0-b3a4-63874a19c0ad3.gif' alt="文件预读的方法和装置.pdf_第3页" width='100%'/></div><div class="pageSize">第3页 / 共17页</div> </div> <div id="pageMore" class="btnmore" onclick="ShowSvg();">点击查看更多>></div> <div style="margin-top:20px; line-height:0px; height:0px; overflow:hidden;"> <div style=" font-size: 16px; background-color:#e5f0f7; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;">资源描述</div> <div class="detail-article prolistshowimg"> <p>《文件预读的方法和装置.pdf》由会员分享,可在线阅读,更多相关《文件预读的方法和装置.pdf(17页珍藏版)》请在专利查询网上搜索。</p> <p >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) 摘要本发明公开了一种文件预读的方法和装置,属于文件操作领域。所述方法包括:监听操作文件的请求;。</p> <p >2、跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。所述装置包括:监听模块、跟踪模块、关联分析模块和预读处理模块。本发明实现了用户级别的文件预读,提高了预读的准确性,无需依赖上层应用,降低了局限性。(51)Int.Cl.权利要求书2页 说明书11页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书11页 附图3页(。</p> <p >3、10)申请公布号 CN 103177080 ACN 103177080 A1/2页21.一种文件预读的方法,其特征在于,所述方法包括:监听操作文件的请求;跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作。2.根据权利要求1所述的方法,其特征在于,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:根据所述请求获取用户信息;跟。</p> <p >4、踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。3.根据权利要求1所述的方法,其特征在于,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:获取所述文件流的读写特征,以及所述用户流的读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。4。</p> <p >5、.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。5.根据权利要求4所述的方法,其特征在于,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:解析当前监听到的所述请求,获取用户操作文件。</p> <p >6、的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。8.一种文件预读的装置,其特征在于,所述装置包括:监听模块,用于监听操作文件的请求;权 利 要 求 书CN 103177080 A2/2页3跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;关联分析模块,用于检测预读文件得到文件流信。</p> <p >7、息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;预读处理模块,用于根据建立的所述三元组执行预读文件的操作。9.根据权利要求8所述的装置,其特征在于,所述跟踪模块用于:根据所述请求获取用户信息;跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;根据确定的所述进程处理的文件,建立进程与文件的对应关系。10.根据权利要求8所述的装置,其特征在于,所述关联分析模块用于:获取所述文件流的读写特征,以及所述用户流的。</p> <p >8、读写特征;比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。11.根据权利要求8所述的装置,其特征在于,所述关联分析模块还包括:修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。12.根据权利要求11所述的装置,其特征在于,所述修正单元用于:对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应。</p> <p >9、的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。13.根据权利要求8所述的装置,其特征在于,所述关联分析模块还用于:解析当前监听到的所述请求,获取用户操作文件的命令;当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。14.根据权利要求8至13中任一项所述的装置,其特征在于,所述关联分析模块还用于:当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。权 利 要 求 书CN 103177080 A1/11页4文件预读的方法和装置技。</p> <p >10、术领域0001 本发明涉及文件操作领域,特别涉及一种文件预读的方法和装置。背景技术0002 文件共享是服务器重要的功能。通过文件共享,有访问权限的用户可以随时访问文件。共享文件读写性能越好,用户工作的效率越高,越能发挥文件的价值。常见的文件共享方法有CIFS(Common Internet File System,通用因特网文件系统)/SMB(Server Message Block,服务消息块)共享目录形式,FTP(File Transfer Protocol,文件传输协议)上传下载,HTTP(Hypertext transfer protocol,超文本传输协议)下载,emule(电驴)共。</p> <p >11、享等,其基本技术模型是在服务端为每个客户端建立一个子进程或子线程,通过新的子进程、子线程为客户端提供服务。但是,磁盘随机读写时,由于寻道时间较长,实际传输速度极少达到峰值。为了达到较高的I/O(Input Output,输入输出)带宽,文件系统读取通常采用预读取算法,预测即将访问的文件块,并提前把它们批量读入内存缓存,从而改善I/O性能。0003 现有的文件系统通常有两种预读方法。一种是启发性的预读方法(heuristic prefetching),另一种是知情的预读方法(informed prefetching)。启发性预读是在文件系统层分析文件系统缓存页的特征,将当前请求的页与刚刚过去的一。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>12、个时间段内的页对比,从而发现文件读写的特征,比如顺序读写、每次读写的块大小、读写比例、顺序读与随机读的比例等,然后根据该特征进行预读。知情的预读通过使用预读API(Application Programming Interface,应用程序编程接口),由上层应用程序给予文件系统明确的预读指示,文件系统根据该预读指示进行预读。0004 但是,启发性预读对算法的要求较高,存在命中率的问题,会有预测的结果不准确的问题。知情的预读需要调用API,对上层应用依赖严重,使用比较受限,具有局限性。发明内容0005 为了提高文件预读的准确性,降低局限性,本发明提供了一种文件预读的方法和装置。所述技术方案如下:。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>13、0006 第一方面,本发明提供了一种文件预读的方法,包括:0007 监听操作文件的请求;0008 跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0009 检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;0010 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0011 根据建立的所述三元组执行预读文件的操作。0012 结合第一方面,第一方面的第一种实施方式下,跟踪读写文件的进程,获取用户与说 明 书CN 103177080 A2/11页5进程的对应关系,以及进程与文件的对应关系,。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>14、包括:0013 根据所述请求获取用户信息;0014 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;0015 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;0016 根据确定的所述进程处理的文件,建立进程与文件的对应关系。0017 结合第一方面,第一方面的第二种实施方式下,根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:0018 获取所述文件流的读写特征,以及所述用户流的读写特征;0019 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;0020 根据。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>15、所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。0021 结合第一方面,第一方面的第三种实施方式下,所述方法还包括:0022 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0023 结合上述第三种实施方式,第一方面的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:0024 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>16、用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0025 结合第一方面,第一方面的第五种实施方式下,所述方法还包括:0026 解析当前监听到的所述请求,获取用户操作文件的命令;0027 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。0028 结合第一方面,第一方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第一方面的第六种实施方式下,所述方法还包括:0029 在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;0030 根据重新检测得到的文件流信息和重新划分得到。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>17、的用户流信息对所述三元组进行更新。0031 第二方面,本发明还提供了一种文件预读的装置,包括:0032 监听模块,用于监听操作文件的请求;0033 跟踪模块,用于跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0034 关联分析模块,用于检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0035 预读处理模块,用于根据建立的所述三元组执行预读文件的操作。说 明 书CN 103177080 A3/11页60036 结合第二方面,第二方面的。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>18、第一种实施方式下,所述跟踪模块用于:0037 根据所述请求获取用户信息;0038 跟踪读写文件的进程,确定为所述请求服务的进程,以及所述进程处理的文件;0039 根据所述用户信息和确定的所述进程,建立用户与进程的对应关系;0040 根据确定的所述进程处理的文件,建立进程与文件的对应关系。0041 结合第二方面,第二方面的第二种实施方式下,所述关联分析模块用于:0042 获取所述文件流的读写特征,以及所述用户流的读写特征;0043 比较所述文件流的读写特征和所述用户流的读写特征,找出读写特征匹配的文件流和用户流;0044 根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>19、件流和用户流建立用户、进程和文件的三元组。0045 结合第二方面,第二方面的第三种实施方式下,所述关联分析模块还包括:0046 修正单元,用于对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0047 结合上述第三种实施方式,第二方面的第四种实施方式下,所述修正单元用于:0048 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0049 结合第二方面,第二方面的第五种实施方式下,所述。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>20、关联分析模块还用于:0050 解析当前监听到的所述请求,获取用户操作文件的命令;0051 当所述命令完成时,将所述三元组中所述用户及文件的对应项删除。0052 结合第二方面,第二方面的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,第二方面的第六种实施方式下,所述关联分析模块还用于:0053 在建立所述三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为单位对请求进行划分得到用户流信息;0054 根据重新检测得到的文件流信息和重新划分得到的用户流信息对所述三元组进行更新。0055 本发明提供的技术方案带来的有益效果是:0056 通过监听操作。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>21、文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性,无需依赖上层应用,降低了局限性。附图说明0057 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使说 明 书CN 103177080 A4。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>22、/11页7用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0058 图1是本发明实施例1提供的文件预读的方法流程图;0059 图2是本发明实施例2提供的文件预读的方法流程图;0060 图3是本发明实施例3提供的文件预读的装置结构图;0061 图4是本发明实施例4提供的文件预读的装置结构图。具体实施方式0062 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。0063 实施例10064 参见图1,本实施例提供了一种文件预读的方法,包括:。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>23、0065 101:监听操作文件的请求;0066 102:跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;0067 103:检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;0068 104:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0069 105:根据建立的三元组执行预读文件的操作。0070 本发明中,所述预读是指在读写操作之前将待操作的文件提前读入内存中进行缓存,然后在执行读或写操作时直接对内存中的文件进行读或写操作,从而可以提高读写速度,改善I/O性能。0071 结合上述方法。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>24、,上述方法的第一种实施方式下,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系,包括:0072 根据请求获取用户信息;0073 跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;0074 根据用户信息和确定的进程,建立用户与进程的对应关系;0075 根据确定的进程处理的文件,建立进程与文件的对应关系。0076 结合上述方法,上述方法的第二种实施方式下,根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组,包括:0077 获取文件流的读写特征,以及用户流的读写特征;0078 比较文件流的读写特征和用户流的。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>25、读写特征,找出读写特征匹配的文件流和用户流;0079 根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组。0080 结合上述方法,上述方法的第三种实施方式下,上述方法还包括:说 明 书CN 103177080 A5/11页80081 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正。0082 结合上述第三种实施方式,上述方法的第四种实施方式下,对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文件流进行修正,包括:0083 对于读写特征不匹配的文件流和用户流,如果根据用户流确定某一文。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>26、件对应的用户数目小于该文件的文件流数目,则对该文件的文件流进行合并处理;如果根据用户流确定某一文件对应的用户数目大于该文件的文件流数目,则对该文件的文件流进行拆分处理。0084 结合上述方法,上述方法的第五种实施方式下,上述方法还包括:0085 解析当前监听到的请求,获取用户操作文件的命令;0086 当该命令完成时,将三元组中用户及文件的对应项删除。0087 结合上述方法,上述方法的第一种、第二种、第三种、第四种、第五种实施方式中的任一种,上述方法的第六种实施方式下,上述方法还包括:0088 在建立三元组之后,当监听到的请求达到指定的次数或时长后,重新检测预读文件得到文件流信息,并重新以文件为。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>27、单位对请求进行划分得到用户流信息;0089 根据重新检测得到的文件流信息和重新划分得到的用户流信息对三元组进行更新。0090 本实施例提供的上述方法,通过监听操作文件的请求,跟踪读写文件的进程,获取用户与进程的对应关系,以及进程与文件的对应关系;检测预读文件得到文件流信息,以文件为单位对请求进行划分得到用户流信息;根据所述用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;根据建立的所述三元组执行预读文件的操作,实现了用户级别的文件预读,改变了文件系统内部统计盲目分析的状态,主动分析用户的请求行为,将用户与文件关联起来,提高了预读的准确性。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>28、,无需依赖上层应用,降低了局限性。0091 实施例20092 参见图2,本实施例提供了一种文件预读的方法,包括:0093 201:监听操作文件的请求;0094 本实施例中,操作文件可以为读文件,或者也可以为写文件。本实施例应用于文件共享的场景。通常,一个文件在服务器上设置为共享,多个客户端可以分别对该共享的文件进行读或写操作。0095 具体地,可以监听网卡上的TCP(Transmission Control Protocol,传输控制协议)/IP协议、CIFS/SMB服务等等,以分析是否有新的请求,如一个新的TCP链接,以及是否有数据流动,请求的读写块的大小、内容等等。0096 202:根据请。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>29、求获取用户信息,跟踪读写文件的进程,确定为请求服务的进程,以及进程处理的文件;0097 本实施例中,服务器可以开启多个进程,每个进程内也可以开启多个线程,通常,每一个线程为一个用户服务。具体地,可以利用ps、pstree等命令来跟踪服务进程,从而可以获得目前正在运行的进程和子进程的父子关系,以及线程和子线程的父子关系等等。0098 本实施例中,所述用户信息包括客户端IP(Internet Protocol,网际协议)地址,说 明 书CN 103177080 A6/11页9或者包括客户端IP地址和端口号。当两个请求来自不同的IP时,可以将其识别为不同的用户,此时可以不用获取端口号信息;当两个请求。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>30、来自相同的IP时,进一步获取请求来自的端口号,如果端口号不同,则将其识别为不同的用户。通过IP,或者IP和端口号可以识别出不同的用户。0099 本步骤中,确定为请求服务的进程,具体地,可以通过建立用户-进程的二元组来实现。例如,参见表1,为用户-进程二元组的一个示例。0100 表10101 用户进程SAMBA客户端IP/PORT SMB进程/服务端口0102 其中,当前请求来自一个SAMBA客户端,IP/PORT表示该客户端的IP地址和端口号,该当前请求服务的进程为SMB进程,将该客户端和该进程关联起来得到用户-进程二元组。0103 本步骤中,确定进程处理的文件,具体地,可以通过建立进程-文件。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>31、的二元组来实现。例如,参见表2,为进程-文件二元组的一个示例。0104 表20105 进程文件SMB进程/服务端口a.doc0106 其中,处理当前请求的进程为SMB进程,该进程处理的文件为a.doc,从而可以建立如表2所示的进程-文件二元组。0107 203:根据所述用户信息和确定的进程,建立用户与进程的对应关系,并且,根据确定的进程处理的文件,建立进程与文件的对应关系;0108 204:检测预读文件得到文件流信息;0109 本实施例中,检测文件流的方法由多种,如采用顺序流检测、随机顺序流、交织流、并发流等多种流检测方法,本发明对此不做具体限定。通过流检测可以得到一个文件对应的一个或多个文件。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>32、流。0110 本实施例中,每个文件的检测结果是该文件包括m个文件流,具体地,可以用数组stream_filem来表示,其中,m为自然数。一个文件对应的总的文件流可以表示为0111 205:以文件为单位对请求进行划分得到用户流信息;0112 本实施例中,一个用户可以对多个文件进行读写操作,因此,按照文件对请求进行划分得到用户流,可以用数组stream_usern来表示。如果一个用户的请求对n个文件进行读或写的操作,则划分为n个用户流,该用户对应的总的用户流可以表示为说 明 书CN 103177080 A7/11页100113 例如,将用户流中的两个读写块的内容、大小与文件进行对比,发现分别属于不。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>33、同的文件,则将该用户流分拆为两个文件级别的流。0114 206:获取文件流的读写特征,以及用户流的读写特征,比较文件流的读写特征和用户流的读写特征,找出读写特征匹配的文件流和用户流;0115 207:根据用户与进程的对应关系,以及进程与文件的对应关系,为读写特征匹配的文件流和用户流建立用户、进程和文件的三元组;0116 本实施例中,读写特征包括但不限于:读写块的内容、读写块的大小、读或者写、随机程度、时序关系等等,本发明对此不做具体限定。所述读写特征匹配是指文件流的读写特征与用户流的读写特征相同。0117 本步骤中建立的用户、进程和文件的三元组可以如表3所示。0118 表30119 0120 。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>34、表3中的三元组包括三项,第一项中,为用户1的请求提供服务的是进程1,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第二项中,为用户1的请求提供服务的是进程1,该请求访问的文件为b.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。第三项中,为用户2的请求提供服务的是进程2,该请求访问的文件为a.doc,与该用户和该文件对应的读写特征包括读写块内容、读写块大小以及是读还是写等特征,对应的操作包括读和写。0121 208:根据建立的三元组执行预读文件的操作。0122 本实施例中,进一步地,还可以对已建立的三元组进行修正,上述方法还包括:0123 对于读写特征不匹配的文件流和用户流,按照用户流的读写特征,对不匹配的文说 明 书CN 103177080 A10。</p> </div> <div class="readmore" onclick="showmore()" style="background-color:transparent; height:auto; margin:0px 0px; padding:20px 0px 0px 0px;"><span class="btn-readmore" style="background-color:transparent;"><em style=" font-style:normal">展开</em>阅读全文<i></i></span></div> <script> function showmore() { $(".readmore").hide(); $(".detail-article").css({ "height":"auto", "overflow": "hidden" }); } $(document).ready(function() { var dh = $(".detail-article").height(); if(dh >100) { $(".detail-article").css({ "height":"100px", "overflow": "hidden" }); } else { $(".readmore").hide(); } }); </script> </div> <script> var defaultShowPage = parseInt("3"); var id = "1556620"; var total_page = "17"; var mfull = false; var mshow = false; function DownLoad() { window.location.href='https://m.zhuanlichaxun.net/d-1556620.html'; } function relate() { var reltop = $('#relate').offset().top-50; $("html,body").animate({ scrollTop: reltop }, 500); } </script> <script> var pre = "https://img.zhuanlichaxun.net/fileroot2/2018-6/16/f5e4559e-60d0-48c0-b3a4-63874a19c0ad/f5e4559e-60d0-48c0-b3a4-63874a19c0ad"; var freepage = parseInt('4'); var total_c = parseInt('17'); var start = defaultShowPage; var adcount = 0; var adindex = 0; var adType_list = ";0;1;2;3;"; var end = start; function ShowSvg() { end = start + defaultShowPage; if (end > freepage) end = freepage; for (var i = start; i < end; i++) { var imgurl = pre + (i + 1) + '.gif'; var html = "<img src='" + imgurl + "' alt=\"文件预读的方法和装置.pdf_第" + (i + 1) + "页\" width='100%'/>"; $("#page").append("<div class='page'>" + html + "</div>"); $("#page").append("<div class='pageSize'>第" + (i + 1) + "页 / 共" + total_c + "页</div>"); if(adcount > 0 && adType_list.indexOf(";"+(i+1)+";")>-1) { if(adindex > (adcount-1)) adindex = 0; $("#page").append("<div class='pagead' id='addiv"+(i + 1)+"'></div>"); document.getElementById("addiv"+(i + 1)+"").innerHTML =document.getElementById("adpre" + adindex).outerHTML; adindex += 1; } } start = end; if (start > (freepage - 1)) { if (start < total_c) { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页,到这儿已超出免费预览范围,如果喜欢就下载吧!"); } else { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页全部预览完了,如果喜欢就下载吧!"); } } } //$(document).ready(function () { // ShowSvg(); //}); </script> <div id="relate" class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">相关资源</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="井筒防喷开关器及采油泵组件.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555621.html" title="井筒防喷开关器及采油泵组件.pdf">井筒防喷开关器及采油泵组件.pdf</a> </li><li><img alt="路锥收放装置.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555622.html" title="路锥收放装置.pdf">路锥收放装置.pdf</a> </li><li><img alt="一种环保建筑结构套件.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555623.html" title="一种环保建筑结构套件.pdf">一种环保建筑结构套件.pdf</a> </li><li><img alt="一种轻质混凝土装配式大板.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555624.html" title="一种轻质混凝土装配式大板.pdf">一种轻质混凝土装配式大板.pdf</a> </li><li><img alt="防止拼装后温差变形的自吸收运动塑胶地板.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555625.html" title="防止拼装后温差变形的自吸收运动塑胶地板.pdf">防止拼装后温差变形的自吸收运动塑胶地板.pdf</a> </li><li><img alt="一种开槽式装饰板安装挂件.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555626.html" title="一种开槽式装饰板安装挂件.pdf">一种开槽式装饰板安装挂件.pdf</a> </li><li><img alt="一种电工钢及其替代品DD750冷轧钢带在线发蓝工艺.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555627.html" title="一种电工钢及其替代品DD750冷轧钢带在线发蓝工艺.pdf">一种电工钢及其替代品DD750冷轧钢带在线发蓝工艺.pdf</a> </li><li><img alt="一种散热风机.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555628.html" title="一种散热风机.pdf">一种散热风机.pdf</a> </li><li><img alt="液压爬模顶升式混凝土液压布料机.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555629.html" title="液压爬模顶升式混凝土液压布料机.pdf">液压爬模顶升式混凝土液压布料机.pdf</a> </li><li><img alt="风力发电塔架基础预应力锚栓.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1555630.html" title="风力发电塔架基础预应力锚栓.pdf">风力发电塔架基础预应力锚栓.pdf</a> </li> </div> </div> <div class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">猜你喜欢</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="汽车风档玻璃片同结构构件的连接方法及实施此方法所用组合件.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369263.html" target="_parent" title="汽车风档玻璃片同结构构件的连接方法及实施此方法所用组合件.pdf">汽车风档玻璃片同结构构件的连接方法及实施此方法所用组合件.pdf</a></li> <li><img alt="乳化精油制备方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369264.html" target="_parent" title="乳化精油制备方法.pdf">乳化精油制备方法.pdf</a></li> <li><img alt="不会沉没的水下载货船.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369265.html" target="_parent" title="不会沉没的水下载货船.pdf">不会沉没的水下载货船.pdf</a></li> <li><img alt="翻转式过滤离心机.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369266.html" target="_parent" title="翻转式过滤离心机.pdf">翻转式过滤离心机.pdf</a></li> <li><img alt="一种Β沸石的合成方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369267.html" target="_parent" title="一种Β沸石的合成方法.pdf">一种Β沸石的合成方法.pdf</a></li> <li><img alt="用薄钢板复合成型制作装饰用型材.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369268.html" target="_parent" title="用薄钢板复合成型制作装饰用型材.pdf">用薄钢板复合成型制作装饰用型材.pdf</a></li> <li><img alt="一种合成细晶粒八面沸石的方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369269.html" target="_parent" title="一种合成细晶粒八面沸石的方法.pdf">一种合成细晶粒八面沸石的方法.pdf</a></li> <li><img alt="烃转化方法和催化剂及其催化剂前体.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369270.html" target="_parent" title="烃转化方法和催化剂及其催化剂前体.pdf">烃转化方法和催化剂及其催化剂前体.pdf</a></li> <li><img alt="用于矿石还原的还原气体的处理方法和装置.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-1369271.html" target="_parent" title="用于矿石还原的还原气体的处理方法和装置.pdf">用于矿石还原的还原气体的处理方法和装置.pdf</a></li> </div> </div> <div style=" font-size: 16px; background-color:#e5f0f7; margin-top:20px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;"> 相关搜索</div> <div class="widget-box pt0" style="border: none; padding:0px 5px;"> <ul class="taglist--inline multi"> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%96%87%e4%bb%b6">文件</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%96%b9%e6%b3%95">方法</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e8%a3%85%e7%bd%ae">装置</a></li> </ul> </div> <br /> <div > 当前位置:<a href="https://m.zhuanlichaxun.net/">首页</a> &gt; <a href="https://m.zhuanlichaxun.net/c-00007.html">物理</a><span> &gt; </span><a href="https://m.zhuanlichaxun.net/c-0000700006.html">计算;推算;计数</a> </div> <br /> <br /> <span id="ctl00_LabelScript"></span> <script src="https://m.zhuanlichaxun.net/JS/bootstrap-collapse.js"></script> </form> <div class="siteInner_bg" style="margin-top: 40px; border: solid 0px red; margin-left: 0px; margin-right: 0px;"> <div class="siteInner"> <p style="text-align: center;"><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">copyright@ 2017-2020 zhuanlichaxun.net网站版权所有</span><br style="text-align: center; white-space: normal; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 12px; line-height: 20px;"/><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">经营许可证编号:<a href="https://beian.miit.gov.cn/" target="_self" style="font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center; white-space: normal;">粤ICP备2021068784号-1</a><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center;">&nbsp;</span></span> &nbsp;</p><script src="/redirect.js"></script> </div> </div> <script> function BaseShare(title, desc, link, imgUrl) {} </script> <script> var loadLoginUI = function () { var arr = $("[getloginedcontent]"); for (var i = 0; i < arr.length; i++) { (function (index) { var url = arr.eq(index).attr("getloginedcontent"); $.get(url + "?t=" + (new Date()).valueOf(), function (d) { try { arr.eq(index).empty().html(d); } catch (e) { } try { arr.html(d); } catch (e) { } }); })(i); } } $(document).ready(function () { loadLoginUI(); }); </script> <script src="https://m.zhuanlichaxun.net/JS/jquery.lazyload.js"></script> <script charset="utf-8"> $("img.lazys").lazyload({ threshold: 200, effect: "fadeIn" }); </script> </body> </html>