一种顺序流识别的方法以及装置制造方法

文档序号:6621043阅读:287来源:国知局
一种顺序流识别的方法以及装置制造方法
【专利摘要】本发明实施例公开了一种顺序流识别的方法以及装置,其中,所述方法包括:查找当前I/O请求所访问的数据所处的目标存储块;在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/O请求所访问的数据的起始位置为顺序流头,并根据所述当前I/O请求查找顺序流尾。采用本发明,可快速对顺序流进行识别,并且可以减少预取浪费。
【专利说明】一种顺序流识别的方法以及装置

【技术领域】
[0001 ] 本发明涉及计算机【技术领域】,尤其涉及一种顺序流识别的方法以及装置。

【背景技术】
[0002]现有技术中的顺序流识别一般是通过前后请求的距离进行判断,且每个请求都进行判断,这种方法虽然现实简单,但是容易出现误识别,且对顺序流识别不够及时,即无法快速找到顺序流头,从而造成了更多的磁盘访问负载;同时,现有技术中的存储系统也无法及时的识别出顺序流尾,从而容易造成预取浪费的现象。


【发明内容】

[0003]本发明实施例所要解决的技术问题在于,提供一种顺序流识别的方法以及装置,可快速对顺序流进行识别,并且可以减少预取浪费。
[0004]本发明第一方面提供了一种顺序流识别的方法,包括:
[0005]查找当前I/O请求所访问的数据所处的目标存储块;
[0006]在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/o访问特征;
[0007]当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/O请求所访问的数据的起始位置为顺序流头,并根据所述当前I/o请求查找顺序流尾。
[0008]在第一种可能的实现方式中,所述当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头,并根据所述当前I/o请求查找顺序流尾,包括:
[0009]当查找出所述目标存储块的I/o访问特征为顺序访问特征时,识别所述当前I/O请求所访问的数据的起始位置为顺序流头;
[0010]根据所述当前I/O请求所访问的数据长度加上预设的预取长度查找初始顺序流尾;
[0011]当检测到所述初始顺序流尾不处于所述目标存储块中时,判断所述初始顺序流尾所处于的存储块是否与所述目标存储块为连续关系;
[0012]若判断为是,则确定所述初始顺序流尾为当前顺序流中的顺序流尾;
[0013]否则,将所述初始顺序流尾重新定位至所述目标存储块的尾部地址,并确定重新定位后的初始顺序流尾为当前顺序流中的顺序流尾。
[0014]结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0015]对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取;
[0016]其中,所述对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取,具体包括:
[0017]从所述顺序流头开始预取,并将当前顺序流的所述顺序流尾标识为预读标记,所述当前顺序流包括所述顺序流头和所述顺序流尾;
[0018]当命中所述预读标记时,判断在所述顺序流尾的位置上加上所述预设的预取长度后是否存在新的顺序流尾;
[0019]若判断为是,则根据所述新的顺序流尾确定新的当前顺序流,并对所述新的当前顺序流进行顺序预取;
[0020]若判断为否,则停止对所述当前顺序流进行顺序预取。
[0021]结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述查找当前I/o请求所访问的数据所处的目标存储块的步骤之前,还包括:
[0022]识别存储块的I/O访问特征;
[0023]将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
[0024]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述识别存储块的I/o访问特征,包括:
[0025]当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/o请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为顺序访问特征;
[0026]当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/o请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为随机访问特征;
[0027]当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
[0028]结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
[0029]当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/o访问特征为顺序访问特征;
[0030]当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/o访问特征为随机访问特征;
[0031]当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
[0032]结合第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:
[0033]在识别出所述存储块的I/O访问特征后,记录所述存储块的头部地址的最新访问时间戳和所述存储块的尾部地址的最新访问时间戳;
[0034]当检测到两个相邻的存储块的I/O访问特征均为顺序访问特征时,进一步判断先被访问的存储块的尾部地址的最新访问时间戳与后被访问的存储块的头部地址的最新访问时间戳之间的时长是否小于预设的时长阈值;
[0035]若判断为是,则确定所述两个相邻的存储块之间为连续关系;
[0036]若判断为否,则确定所述两个相邻的存储块之间为不连续关系。
[0037]结合第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,或第一方面的第六种可能的实现方式,在第七种可能的实现方式中,在所述识别存储块的I/O访问特征的步骤之前,还包括:
[0038]判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/o请求个数和所述历史I/o请求的覆盖率;
[0039]若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据;
[0040]当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/o访问特征。
[0041]结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,还包括:
[0042]当判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
[0043]若判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
[0044]若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据;
[0045]计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
[0046]本发明第二方面提供了一种顺序流识别的装置,包括:
[0047]存储块查找模块,用于查找当前I/O请求所访问的数据所处的目标存储块;
[0048]访问特征查找模块,用于在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/o访问特征;
[0049]识别查找模块,用于当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头,并根据所述当前I/O请求查找顺序流尾。
[0050]在第一种可能的实现方式中,所述识别查找模块包括:
[0051]顺序流头识别单元,用于当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头;
[0052]顺序流尾查找单元,用于根据所述当前I/O请求所访问的数据长度加上预设的预取长度查找初始顺序流尾;
[0053]顺序流尾判断单元,用于当检测到所述初始顺序流尾不处于所述目标存储块中时,判断所述初始顺序流尾所处于的存储块是否与所述目标存储块为连续关系;
[0054]第一确定单元,用于若所述顺序流尾判断单元判断为是,则确定所述初始顺序流尾为当前顺序流中的顺序流尾;
[0055]第二确定单元,用于若所述顺序流尾判断单元判断为否,则将所述初始顺序流尾重新定位至所述目标存储块的尾部地址,并确定重新定位后的初始顺序流尾为当前顺序流中的顺序流尾。
[0056]结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0057]预取模块,用于对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取;
[0058]其中,所述预取模块包括:
[0059]预读标识单元,用于从所述顺序流头开始预取,并将当前顺序流的所述顺序流尾标识为预读标记,所述当前顺序流包括所述顺序流头和所述顺序流尾;
[0060]更新判断单元,用于当命中所述预读标记时,判断在所述顺序流尾的位置上加上所述预设的预取长度后是否存在新的顺序流尾;
[0061]顺序流更新单元,用于若所述更新判断单元判断为是,则根据所述新的顺序流尾确定新的当前顺序流,并对所述新的当前顺序流进行顺序预取;
[0062]停止单元,用于若所述更新判断单元判断为否,则停止对所述当前顺序流进行顺序预取。
[0063]结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0064]访问特征识别模块,用于识别存储块的I/O访问特征;
[0065]添加更新模块,用于将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
[0066]结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述访问特征识别模块包括:
[0067]特征识别单元,用于当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/o请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为顺序访问特征;
[0068]所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/o请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为随机访问特征;
[0069]特征标示单元,用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
[0070]结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,
[0071]所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/o访问特征为顺序访问特征;
[0072]所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/o访问特征为随机访问特征;
[0073]所述特征标示单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
[0074]结合第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:
[0075]记录模块,用于在识别出所述存储块的I/O访问特征后,记录所述存储块的头部地址的最新访问时间戳和所述存储块的尾部地址的最新访问时间戳;
[0076]时长判断模块,用于当检测到两个相邻的存储块的I/O访问特征均为顺序访问特征时,进一步判断先被访问的存储块的尾部地址的最新访问时间戳与后被访问的存储块的头部地址的最新访问时间戳之间的时长是否小于预设的时长阈值;
[0077]关系确定模块,用于若所述时长判断模块判断为是,则确定所述两个相邻的存储块之间为连续关系;
[0078]所述关系确定模块,还用于若所述时长判断模块判断为否,则确定所述两个相邻的存储块之间为不连续关系。
[0079]结合第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,或第二方面的第六种可能的实现方式,在第七种可能的实现方式中,还包括:
[0080]元数据判断模块,用于判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/o请求个数和所述历史I/O请求的覆盖率;
[0081]元数据更新模块,用于若所述元数据判断模块判断为在所述本地内存中,则更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
[0082]通知模块,用于当所述元数据更新模块更新后的元数据所对应的所述存储块满足启动识别条件时,通知所述访问特征识别模块识别存储块的I/o访问特征。
[0083]结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,还包括:
[0084]个数判断模块,用于当所述元数据判断模块判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
[0085]生成存储模块,用于若所述个数判断模块判断为未达到预设的元数据阈值,则生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据;
[0086]删除模块,用于若所述个数判断模块判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
[0087]特征计算模块,用于计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
[0088]由上可见,本发明实施例在查找出当前I/O请求所访问的数据所处的目标存储块的I/O访问特征为顺序访问特征时,可以快速识别出所述当前I/O请求所访问的数据的起始位置为顺序流头,并可以根据所述当前I/o请求查找顺序流尾,即可提前感知顺序流的结束,以减少预取浪费。

【专利附图】

【附图说明】
[0089]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0090]图1是本发明实施例提供的一种顺序流识别的方法的流程示意图;
[0091]图2是本发明实施例提供的另一种顺序流识别的方法的流程示意图;
[0092]图3是本发明实施例提供的其中一种识别方法的流程示意图;
[0093]图4是本发明实施例提供的其中一种顺序预取的方法的流程示意图;
[0094]图5是本发明实施例提供的其中一种对元数据的处理方法的流程示意图;
[0095]图6是本发明实施例提供的一种顺序流识别的装置的结构示意图;
[0096]图7是本发明实施例提供的另一种顺序流识别的装置的结构示意图;
[0097]图8是本发明实施例提供的一种识别查找模块的结构示意图;
[0098]图9是本发明实施例提供的一种预取模块的结构示意图;
[0099]图10是本发明实施例提供的一种访问特征识别模块的结构示意图;
[0100]图11是本发明实施例提供的又一种顺序流识别的装置的结构示意图。

【具体实施方式】
[0101]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0102]请参见图1,是本发明实施例提供的一种顺序流识别的方法的流程示意图,所述方法包括:
[0103]S101,查找当前I/O请求所访问的数据所处的目标存储块;
[0104]具体的,所述存储块是通过预先对LUN空间进行均等容量划分所得到的,例如,将一个40M大小的LUN空间划分成10个4M大小的存储块,即从LUN空间的初始位置开始,每4M的连续空间对应一个存储块。由于主机发到存储系统的I/O请求中携带有请求访问地址和请求访问长度,所以存储系统可以根据主机侧所发送的当前I/O请求确定出所述当前I/O请求所访问的数据处于哪个存储块。在查找到当前I/O请求所访问的数据所处的存储块后,还可以将该存储块作为目标存储块。
[0105]S102,在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/o访问特征;
[0106]具体的,所述特征位图包含每个存储块的I/O访问特征,所以所述特征位图可以用于标识所述目标存储块的I/o访问特征,所述I/O访问特征至少包括顺序访问特征和随机访问特征。根据多个历史I/o请求可以识别出存储块的I/O访问特征,例如,在Ims内,若统计出其中一个存储块中的历史I/O请求的个数超过200个,且历史I/O请求间的间距均小于8个扇区大小,则可识别出该存储块的I/O访问特征为顺序访问特征;若统计出另一个存储块中的历史I/O请求的个数少于10个,且历史I/O请求间的间距均大于8个扇区大小,则可识别出该存储块的I/O访问特征为随机访问特征。在识别出各个存储块的I/O访问特征后,可以将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。在设置好所述特征位图后,可以在所述特征位图中查找出所述目标存储块的I/O访问特征。例如,请参见如下表1所示的特征位图:
[0107]

【权利要求】
1.一种顺序流识别的方法,其特征在于,包括: 查找当前I/o请求所访问的数据所处的目标存储块; 在特征位图中查找出所述目标存储块的I/o访问特征,所述特征位图用于标识所述目标存储块的I/o访问特征; 当查找出所述目标存储块的I/o访问特征为顺序访问特征时,识别所述当前I/O请求所访问的数据的起始位置为顺序流头,并根据所述当前I/o请求查找顺序流尾。
2.如权利要求1所述的方法,其特征在于,所述当查找出所述目标存储块的I/O访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头,并根据所述当前I/o请求查找顺序流尾,包括: 当查找出所述目标存储块的I/o访问特征为顺序访问特征时,识别所述当前I/O请求所访问的数据的起始位置为顺序流头; 根据所述当前I/o请求所访问的数据长度加上预设的预取长度查找初始顺序流尾;当检测到所述初始顺序流尾不处于所述目标存储块中时,判断所述初始顺序流尾所处于的存储块是否与所述目标存储块为连续关系; 若判断为是,则确定所述初始顺序流尾为当前顺序流中的顺序流尾; 否则,将所述初始顺序流尾重新定位至所述目标存储块的尾部地址,并确定重新定位后的初始顺序流尾为当前顺序流中的顺序流尾。
3.如权利要求1或2所述的方法,其特征在于,还包括: 对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取; 其中,所述对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取,具体包括: 从所述顺序流头开始预取,并将当前顺序流的所述顺序流尾标识为预读标记,所述当前顺序流包括所述顺序流头和所述顺序流尾; 当命中所述预读标记时,判断在所述顺序流尾的位置上加上所述预设的预取长度后是否存在新的顺序流尾; 若判断为是,则根据所述新的顺序流尾确定新的当前顺序流,并对所述新的当前顺序流进行顺序预取; 若判断为否,则停止对所述当前顺序流进行顺序预取。
4.如权利要求1至3任一项所述的方法,其特征在于,在所述查找当前I/O请求所访问的数据所处的目标存储块的步骤之前,还包括: 识别存储块的I/O访问特征; 将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
5.如权利要求4所述的方法,其特征在于,所述识别存储块的I/O访问特征,包括: 当达到统计时间窗阈值,且判断出所述存储块中的历史I/o请求个数大于或等于预设的第一数量阈值,且各个所述历史I/o请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为顺序访问特征; 当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/o请求个数小于预设的第二数量阈值,且各个所述历史I/o请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为随机访问特征; 当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/o请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
6.如权利要求5所述的方法,其特征在于,还包括: 当达到统计时间窗阈值,且判断出所述历史I/o请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/o访问特征为顺序访问特征; 当达到统计时间窗阈值,且判断出所述历史I/o请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/o访问特征为随机访问特征; 当达到统计时间窗阈值,且判断出所述历史I/o请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
7.如权利要求5或6所述的方法,其特征在于,还包括: 在识别出所述存储块的I/o访问特征后,记录所述存储块的头部地址的最新访问时间戳和所述存储块的尾部地址的最新访问时间戳; 当检测到两个相邻的存储块的I/o访问特征均为顺序访问特征时,进一步判断先被访问的存储块的尾部地址的最新访问时间戳与后被访问的存储块的头部地址的最新访问时间戳之间的时长是否小于预设的时长阈值; 若判断为是,则确定所述两个相邻的存储块之间为连续关系; 若判断为否,则确定所述两个相邻的存储块之间为不连续关系。
8.如权利要求4至7任一项所述的方法,其特征在于,在所述识别存储块的I/O访问特征的步骤之前,还包括: 判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率; 若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据; 当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/o访问特征。
9.如权利要求8所述的方法,其特征在于,还包括: 当判断所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值; 若判断为未达到预设的元数据阈值,则生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据; 若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据; 计算被删除的元数据所对应的存储块的I/o访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
10.一种顺序流识别的装置,其特征在于,包括: 存储块查找模块,用于查找当前I/o请求所访问的数据所处的目标存储块; 访问特征查找模块,用于在特征位图中查找出所述目标存储块的I/o访问特征,所述特征位图用于标识所述目标存储块的I/o访问特征; 识别查找模块,用于当查找出所述目标存储块的I/o访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头,并根据所述当前I/O请求查找顺序流尾。
11.如权利要求10所述的装置,其特征在于,所述识别查找模块包括: 顺序流头识别单元,用于当查找出所述目标存储块的I/o访问特征为顺序访问特征时,识别所述当前I/o请求所访问的数据的起始位置为顺序流头; 顺序流尾查找单元,用于根据所述当前I/o请求所访问的数据长度加上预设的预取长度查找初始顺序流尾; 顺序流尾判断单元,用于当检测到所述初始顺序流尾不处于所述目标存储块中时,判断所述初始顺序流尾所处于的存储块是否与所述目标存储块为连续关系; 第一确定单元,用于若所述顺序流尾判断单元判断为是,则确定所述初始顺序流尾为当前顺序流中的顺序流尾; 第二确定单元,用于若所述顺序流尾判断单元判断为否,则将所述初始顺序流尾重新定位至所述目标存储块的尾部地址,并确定重新定位后的初始顺序流尾为当前顺序流中的顺序流尾。
12.如权利要求10或11所述的装置,其特征在于,还包括: 预取模块,用于对包含有所述顺序流头和所述顺序流尾的当前顺序流进行顺序预取; 其中,所述预取模块包括: 预读标识单元,用于从所述顺序流头开始预取,并将当前顺序流的所述顺序流尾标识为预读标记,所述当前顺序流包括所述顺序流头和所述顺序流尾; 更新判断单元,用于当命中所述预读标记时,判断在所述顺序流尾的位置上加上所述预设的预取长度后是否存在新的顺序流尾; 顺序流更新单元,用于若所述更新判断单元判断为是,则根据所述新的顺序流尾确定新的当前顺序流,并对所述新的当前顺序流进行顺序预取; 停止单元,用于若所述更新判断单元判断为否,则停止对所述当前顺序流进行顺序预取。
13.如权利要求10至12任一项所述的装置,其特征在于,还包括: 访问特征识别模块,用于识别存储块的I/o访问特征; 添加更新模块,用于将识别出的所述存储块的I/o访问特征添加或更新至特征位图中。
14.如权利要求13所述的装置,其特征在于,所述访问特征识别模块包括: 特征识别单元,用于当达到统计时间窗阈值,且判断出所述存储块中的历史I/o请求个数大于或等于预设的第一数量阈值,且各个所述历史I/o请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为顺序访问特征; 所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/o请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/o访问特征为随机访问特征; 特征标示单元,用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
15.如权利要求14所述的装置,其特征在于, 所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征; 所述特征识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/o请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/o访问特征为随机访问特征; 所述特征标示单元,还用于当达到统计时间窗阈值,且判断出所述历史I/o请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/o访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
16.如权利要求14或15所述的装置,其特征在于,还包括: 记录模块,用于在识别出所述存储块的I/o访问特征后,记录所述存储块的头部地址的最新访问时间戳和所述存储块的尾部地址的最新访问时间戳; 时长判断模块,用于当检测到两个相邻的存储块的I/o访问特征均为顺序访问特征时,进一步判断先被访问的存储块的尾部地址的最新访问时间戳与后被访问的存储块的头部地址的最新访问时间戳之间的时长是否小于预设的时长阈值; 关系确定模块,用于若所述时长判断模块判断为是,则确定所述两个相邻的存储块之间为连续关系; 所述关系确定模块,还用于若所述时长判断模块判断为否,则确定所述两个相邻的存储块之间为不连续关系。
17.如权利要求13至16任一项所述的装置,其特征在于,还包括: 元数据判断模块,用于判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率; 元数据更新模块,用于若所述元数据判断模块判断为在所述本地内存中,则更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据; 通知模块,用于当所述元数据更新模块更新后的元数据所对应的所述存储块满足启动识别条件时,通知所述访问特征识别模块识别存储块的I/o访问特征。
18.如权利要求17所述的装置,其特征在于,还包括: 个数判断模块,用于当所述元数据判断模块判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值; 生成存储模块,用于若所述个数判断模块判断为未达到预设的元数据阈值,则生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据; 删除模块,用于若所述个数判断模块判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/o请求所访问的数据所处的存储块的用于识别I/o访问特征的元数据; 特征计算模块,用于计算被删除的元数据所对应的存储块的I/o访问特征,以将计算出的所述I/o访问特征添加或更新至特征位图中。
【文档编号】G06F21/32GK104134027SQ201410352520
【公开日】2014年11月5日 申请日期:2014年7月23日 优先权日:2014年7月23日
【发明者】王明迪, 覃伟峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1