CN107168891B - 一种i/o特征识别方法以及装置 - Google Patents

一种i/o特征识别方法以及装置 Download PDF

Info

Publication number
CN107168891B
CN107168891B CN201710203870.2A CN201710203870A CN107168891B CN 107168891 B CN107168891 B CN 107168891B CN 201710203870 A CN201710203870 A CN 201710203870A CN 107168891 B CN107168891 B CN 107168891B
Authority
CN
China
Prior art keywords
storage block
historical
access
request
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710203870.2A
Other languages
English (en)
Other versions
CN107168891A (zh
Inventor
王明迪
覃伟峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710203870.2A priority Critical patent/CN107168891B/zh
Publication of CN107168891A publication Critical patent/CN107168891A/zh
Application granted granted Critical
Publication of CN107168891B publication Critical patent/CN107168891B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O

Abstract

一种I/O特征识别方法以及装置,本发明实施例公开了一种数据预取的方法以及装置,其中,所述方法包括:查找当前I/O请求所访问的数据所处的目标存储块;在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取。采用本发明,可提高系统的预取效率。

Description

一种I/O特征识别方法以及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种I/O特征识别方法以及装置。
背景技术
随着信息技术的迅速发展,网络规模随着用户数呈指数级增长,也越来越庞大,为了支持断接操作,数据要预先存储到缓存中,由于在断接过程中只能使用本地的数据,所以要提高用户的访问速度,主要采用缓存预取技术来减少网络延迟,因此这个数据预先提取的过程是必需的。
在现有技术中,可以利用全量I/O访问历史来挖掘数据间的关联关系,并通过该关联关系生成规则用于规则关联预取,由于现有技术中的规则关联预取无法区分顺序访问的I/O请求和随机访问的I/O请求,所以无论是顺序访问的I/O请求还是随机访问的I/O请求,都将使用规则关联预取,但是规则关联预取并不适用于顺序访问的I/O请求,从而降低了系统的预取效率。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据预取的方法以及装置,可提高系统的预取效率。
本发明第一方面提供了一种数据预取的方法,包括:
查找当前I/O请求所访问的数据所处的目标存储块;
在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;
当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取。
在第一种可能的实现方式中,在所述查找当前I/O请求所访问的数据所处的目标存储块的步骤之前,还包括:
识别存储块的I/O访问特征;
将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述识别存储块的I/O访问特征,包括:
当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
结合第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在所述识别存储块的I/O访问特征的步骤之前,还包括:
判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
当判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
若判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
结合第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取,包括:
当查找出所述目标存储块的I/O访问特征为随机访问特征时,在预设的二维表中查找是否存在所述目标存储块对应的关联规则;
若查找到存在所述目标存储块对应的关联规则,则下发所述当前I/O请求,并根据所述当前I/O请求以及查找到的所述关联规则生成预取请求,以根据所述预取请求进行预取;
若未查找到存在所述目标存储块对应的关联规则,则直接下发所述当前I/O请求。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,
所述关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的;
所述二维表包括与识别为随机访问特征或暂未识别的I/O访问特征的存储块对应的关联规则。
本发明第二方面提供了一种数据预取装置,包括:
第一查找模块,用于查找当前I/O请求所访问的数据所处的目标存储块;
第二查找模块,用于在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;
顺序预取模块,用于当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
随机预取模块,用于当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取。
在第一种可能的实现方式中,还包括:
特征识别模块,用于识别存储块的I/O访问特征;
添加更新模块,用于将所述特征识别模块识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述特征识别模块包括:
识别单元,用于当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
所述识别单元,还用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
标示单元,用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,
所述识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
所述识别单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
所述标示单元,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
结合第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
第一判断模块,用于判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
元数据更新模块,用于若所述第一判断模块判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
通知模块,用于当所述元数据更新模块更新后的元数据所对应的所述存储块满足启动识别条件时,通知所述特征识别模块识别存储块的I/O访问特征。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
第二判断模块,用于当所述第一判断模块判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
生成存储模块,用于若所述第二判断模块判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
删除模块,用于若所述第二判断模块判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
计算模块,用于计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
结合第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述随机预取模块包括:
规则查找单元,用于当查找出所述目标存储块的I/O访问特征为随机访问特征时,在预设的二维表中查找是否存在所述目标存储块对应的关联规则;
预取单元,用于若所述规则查找单元查找到存在所述目标存储块对应的关联规则,则下发所述当前I/O请求,并根据所述当前I/O请求以及查找到的所述关联规则生成预取请求,以根据所述预取请求进行预取;
请求下发单元,用于若所述规则查找单元未查找到存在所述目标存储块对应的关联规则,则直接下发所述当前I/O请求。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,
所述关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的;
所述二维表包括与识别为随机访问特征或暂未识别的I/O访问特征的存储块对应的关联规则。
由上可见,本发明实施例通过在预先设置的特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据预取的方法的流程示意图;
图2是本发明实施例提供的另一种数据预取的方法的流程示意图;
图3是本发明实施例提供的其中一种对元数据的处理方法的流程示意图;
图4是本发明实施例提供的其中一种随机预取的方法的流程示意图;
图5是本发明实施例提供的一种数据预取装置的结构示意图;
图6是本发明实施例提供的另一种数据预取装置的结构示意图;
图7是本发明实施例提供的一种特征识别模块的结构示意图;
图8是本发明实施例提供的一种随机预取模块的结构示意图;
图9是本发明实施例提供的又一种数据预取装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明实施例提供的一种数据预取的方法的流程示意图,所述方法可以包括:
S101,查找当前I/O请求所访问的数据所处的目标存储块;
具体的,所述存储块是通过预先对LUN空间进行均等容量划分所得到的,例如,将一个40M大小的LUN空间划分成10个4M大小的存储块,即从LUN空间的初始位置开始,每4M的连续空间对应一个存储块。由于主机发到存储系统的I/O请求中携带有请求访问地址和请求访问长度,所以存储系统可以根据主机侧所发送的当前I/O请求确定出所述当前I/O请求处于哪个存储块。在查找到当前I/O请求所处于的存储块后,还可以将该存储块作为目标存储块。
S102,在特征位图中查找出所述目标存储块的I/O访问特征;
具体的,所述特征位图包含每个存储块的I/O访问特征,所以所述特征位图用于标识所述目标存储块的I/O访问特征,所述I/O访问特征至少包括顺序访问特征和随机访问特征。根据多个历史I/O请求可以识别出存储块的I/O访问特征,例如,在1ms内,若统计出其中一个存储块中的历史I/O请求的个数超过200个,且历史I/O请求间的间距均小于8个扇区大小,则可识别出该存储块的I/O访问特征为顺序访问特征;若统计出另一个存储块中的历史I/O请求的个数少于10个,且历史I/O请求间的间距均大于8个扇区大小,则可识别出该存储块的I/O访问特征为随机访问特征。在识别出各个存储块的I/O访问特征后,可以将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。在设置好所述特征位图后,可以在所述特征位图中查找出所述目标存储块的I/O访问特征。例如,请参见如下表1所示的特征位图:
0M~4M 4M~8M 8M~12M 12M~16M 16M~20M
0 1 0 0 0
表1
在表1中,是将20M大小的LUN空间分成5个存储块,每个存储块为4M大小,其中,0表示顺序访问特征,1表示随机访问特征,若8M~12M对应的存储块为目标存储块,则可以在如表1所示的特征位图中查找出该目标存储块的I/O访问特征为顺序访问特征;若4M~8M对应的存储块为目标存储块,则可以在如表1所示的特征位图中查找出该目标存储块的I/O访问特征为随机访问特征。其中,所述特征位图可以保存在内存中,每个LUN空间对应一个特征位图,还可以使用一个链表保存所有特征位图的指针。
S103,当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
具体的,当查找出所述目标存储块的I/O访问特征为顺序访问特征时,说明所述当前I/O请求所访问的数据处于顺序流中,因此,可以根据所述当前I/O请求进行顺序预取。顺序预取的具体过程可以为:若所述当前I/O请求所访问的数据处于顺序流中,则将所述当前I/O请求所访问的数据的起始位置识别为顺序流头,并启动顺序预取,再根据预取长度查找顺序流尾,若顺序流尾所处于的存储块为随机访问特征,则将顺序流尾重新设置到所述当前I/O请求所访问的数据所处的存储块的尾部地址;若顺序流尾所处于的存储块为顺序访问特征,则不改变顺序流尾的位置;在找到顺序流头和顺序流尾之后,可以从顺序流头开始进行预取,并可以将每次预取的顺序流尾标识为预读标记,当所述顺序流尾再次被访问时,说明命中所述预读标记,此时,可以启动下一段顺序预读。
S104,当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取;
具体的,当查找出所述目标存储块的I/O访问特征为随机访问特征时,可以确定出所述当前I/O请求属于随机请求,此时,可以通过关联规则对所述当前I/O请求进行预取,本发明实施例所提供的关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的,即所挖掘的历史访问信息中不包含顺序访问特征的I/O请求。而现有技术中的关联规则是通过对全量访问历史进行挖掘所得到,所述全量访问历史包含顺序访问历史和随机访问历史,由于现有技术中会对顺序访问历史进行挖掘,所以可能会掺杂一些其他的规则而造成预取浪费,同时由于要挖掘全量记录库,所以会导致计算量大,且消耗过多的系统资源。因此,本发明实施例所提供的关联规则可以减少随机预取算法中规则挖掘的消耗,提高实用性。
由上可见,本发明实施例通过在预先设置的特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率;同时,由于只对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,所以可以减少随机预取算法中规则挖掘的消耗,提高实用性。
再请参见图2,是本发明实施例提供的另一种数据预取的方法的流程示意图,所述方法可以包括:
S201,识别存储块的I/O访问特征;
具体的,根据历史I/O请求的访问地址记录所述历史I/O请求所访问的数据所处的存储块;其中,所述历史I/O请求是指在历史访问记录中的多个I/O请求,根据历史I/O请求的访问地址可以确定出所述历史I/O请求所访问的数据所处的存储块,并记录下各个存储块中的历史I/O请求的个数、间距、覆盖率等信息。
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值;
例如,统计时间窗阈值为1ms,第一数量阈值为200,第二数量阈值为10,扇区数量阈值为8,在达到1ms时,统计所述存储块中的所述历史I/O请求个数以及各个所述历史I/O请求之间的间距,若统计出的所述历史I/O请求个数大于或等于200,且各个所述历史I/O请求之间的间距小于8个扇区大小,则可以识别出该存储块的I/O访问特征为顺序访问特征;若统计出的所述历史I/O请求个数小于10,且各个所述历史I/O请求之间的间距大于8个扇区大小,则可以识别出该存储块的I/O访问特征为随机访问特征;若统计出的所述历史I/O请求个数大于或等于10,且小于200,则标示该存储块的I/O访问特征为暂未识别。
另外,也可以当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值;
例如,统计时间窗阈值为1ms,第一覆盖率阈值为50%,第二覆盖率阈值为6%,在达到1ms时,统计所述历史I/O请求在所述存储块中的覆盖率,若统计出所述历史I/O请求在所述存储块中的覆盖率大于或等于50%,则可以识别出所述存储块的I/O访问特征为顺序访问特征;若统计出所述历史I/O请求在所述存储块中的覆盖率小于或等于6%,则可以识别出所述存储块的I/O访问特征为随机访问特征;若统计出所述历史I/O请求在所述存储块中的覆盖率大于6%,且小于50%,则标示所述存储块的I/O访问特征为暂未识别。
S202,将识别出的所述存储块的I/O访问特征添加或更新至特征位图中;
具体的,在识别出某个存储块的I/O访问特征之后,可以将识别出的所述存储块的I/O访问特征添加或更新至特征位图中,以便于后续在所述特征位图中查找目标存储块的I/O访问特征。由于是以统计时间窗阈值为周期进行循环统计,所以可以不断更新每个存储块的I/O访问特征,使得所识别出的所述存储块的I/O访问特征可以更加准确。例如,请参见如下表2所示的特征位图:
0M~4M 4M~8M 8M~12M 12M~16M 16M~20M
0 1 0 0 1
表2
在表2中,是将20M大小的LUN空间分成5个存储块,每个存储块为4M大小,其中,0表示顺序访问特征,1表示随机访问特征。由表2可见,在识别出0M~4M的存储块的I/O访问特征为顺序访问特征时,可以将该存储块的I/O访问特征添加或更新至如表2所示的特征位图中,即将0M~4M的存储块的I/O访问特征标识为0;同样的,在识别出4M~8M的存储块的I/O访问特征为随机访问特征时,可以将该存储块的I/O访问特征添加或更新至如表2所示的特征位图中,即将4M~8M的存储块的I/O访问特征标识为1。其中,所述特征位图可以保存在内存中,每个LUN空间对应一个特征位图,还可以使用一个链表保存所有特征位图的指针。其中,由于保存每个存储块的I/O访问特征所消耗的资源较少,所以保存整个LUN空间的I/O访问特征所消耗的资源也较少。
S203,查找当前I/O请求所访问的数据所处的目标存储块;
S204,在特征位图中查找出所述目标存储块的I/O访问特征;
S205,当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
S206,当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取;
本发明实施例中的S203至S206的步骤具体可以参见上述图1对应实施例中的S101至S104的步骤,这里不再进行赘述。
另外,当查找出所述目标存储块的I/O访问特征为暂未标识时,根据存储系统默认的预取算法对所述当前I/O请求进行预取,若存储系统并无默认的预取算法,则直接下发所述当前I/O请求,所述默认的预取算法可以为顺序预取或随机预取。
由上可见,本发明实施例通过在预先设置的特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率;同时,由于只对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,所以可以减少随机算法中规则挖掘的消耗,提高实用性。
进一步的,再请参见图3,是本发明实施例提供的其中一种对元数据的处理方法的流程示意图,所述方法可以在上述图2对应实施例中的S201步骤之前执行,所述方法可以包括:
S301,判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中;
具体的,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率。在识别存储块的I/O访问特征之前,可以先判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中。
S302,更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,若S301判断为在所述本地内存中,则可以更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,即在某个存储块有新增的历史I/O请求时,更新与该存储块的元数据中的所述历史I/O请求个数以及所述历史I/O请求覆盖率,以便于在后续识别存储块的I/O访问特征时,可以通过所述历史I/O请求个数或所述历史I/O请求覆盖率对存储块进行I/O访问特征识别。
S303,当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征;
具体的,所述启动识别条件可以为统计时间长度达到统计时间窗阈值,即当所述存储块满足启动识别条件时,说明对所述存储块的统计时间长度达到统计时间窗阈值,例如,设统计时间窗阈值为1ms,当对某个存储块的统计时间长度达到1ms时,则可以执行所述识别存储块的I/O访问特征的步骤。所述启动识别条件也可以为存储块中的历史I/O请求个数或历史I/O请求覆盖率达到启动识别阈值,即当所述存储块满足启动识别条件时,说明所述存储块中的历史I/O请求个数或历史I/O请求覆盖率达到启动识别阈值,此时,可以执行所述识别存储块的I/O访问特征的步骤。
S304,判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
具体的,当S301判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值。
S305,生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,在S304判断为未达到预设的元数据阈值时,说明可以继续在所述本地内存中增加新的元数据,因此,可以生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,并执行S302步骤中的更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,以及S303步骤中的当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。其中,在所述本地内存中可以保存固定个数的元数据,以控制内存使用。
S306,从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,在S304判断为达到预设的元数据阈值时,则可以从所述本地内存中删除启动识别时间戳最靠前的元数据,所述启动识别时间戳最靠前的元数据是指所述本地内存中第一个启动I/O访问特征识别的存储块所对应的元数据,由于所述本地内存中所存放的元数据个数有限,所以在达到元数据阈值时可以删除启动识别时间戳最靠前的元数据,使得可以在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,在生成并保存元数据之后,即可执行S302步骤中的更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,以及S303步骤中的当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。
S307,计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中;
具体的,在删除启动识别时间戳最靠前的元数据之后,可以计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。其计算过程与上述图2对应实施例中的S201相同,这里不再进行赘述。
由上可见,本发明实施例通过对元数据进行判断和处理,可以有序的控制存储系统对各个存储块的I/O访问特征进行识别,以得到特征位图,从而可以在后续的预取过程中通过特征位图准确地选择出对应的预取算法进行预取。
进一步的,再请参见图4,是本发明实施例提供的其中一种随机预取的方法的流程示意图。本发明实施例的所述方法可对应于上述图1对应实施例中的S104,或上述图2对应实施例中的S206。本发明实施例的所述方法具体包括:
S401,当查找出所述目标存储块的I/O访问特征为随机访问特征时,在预设的二维表中查找是否存在所述目标存储块对应的关联规则;
具体的,当查找出所述目标存储块的I/O访问特征为随机访问特征时,可以在预设的二维表中查找是否存在所述目标存储块对应的关联规则。其中,所述关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的;所述二维表包括与识别为随机访问特征或暂未识别的I/O访问特征的存储块对应的关联规则。
S402,下发所述当前I/O请求,并根据所述当前I/O请求以及查找到的所述关联规则生成预取请求,以根据所述预取请求进行预取;
具体的,若S401步骤中查找到存在所述目标存储块对应的关联规则,则可以下发所述当前I/O请求,以在所述目标存储块中请求对应的数据,同时还通过查找到的所述关联规则生成与所述当前I/O请求关联的预取请求,并根据所述预取请求进行预取。由于关联规则只与随机访问特征和暂未识别的存储块中的历史I/O请求相关,即关联规则与顺序访问特征的存储块无关,所以所挖掘出的关联规则是准确的,可以高效的运用在随机预取过程中,而且由于不用像现有技术那样挖掘全量访问历史,所以可以减少随机预取算法中规则挖掘的消耗。
S403,直接下发所述当前I/O请求。
具体的,若S401步骤中未查找到存在所述目标存储块对应的关联规则,则直接下发所述当前I/O请求,以在所述目标存储块中请求对应的数据,此时,不再进行预取。
由上可见,本发明实施例通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,可以减少随机预取算法中规则挖掘的消耗,提高实用性,而且关联规则与顺序访问特征的存储块无关,可以保证关联规则的准确性。
请参见图5,是本发明实施例提供的一种数据预取装置1的结构示意图,所述数据预取装置1可以包括:第一查找模块10、第二查找模块20、顺序预取模块30、随机预取模块40;
所述第一查找模块10,用于查找当前I/O请求所访问的数据所处的目标存储块;
具体的,所述数据预取装置1可以设置于存储系统中,所述存储块是通过预先对LUN空间进行均等容量划分所得到的,例如,将一个40M大小的LUN空间划分成10个4M大小的存储块,即从LUN空间的初始位置开始,每4M的连续空间对应一个存储块。由于主机发到存储系统的I/O请求中携带有请求访问地址和请求访问长度,所以所述第一查找模块10可以根据主机侧所发送的当前I/O请求确定出所述当前I/O请求处于哪个存储块。在所述第一查找模块10查找到当前I/O请求所处于的存储块后,还可以将该存储块作为目标存储块。
所述第二查找模块20,用于在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;
具体的,所述特征位图包含每个存储块的I/O访问特征,所以所述特征位图用于标识所述目标存储块的I/O访问特征,所述I/O访问特征至少包括顺序访问特征和随机访问特征。所述第二查找模块20可以在预先设置的特征位图中查找出所述目标存储块的I/O访问特征。在此之前,可以根据多个历史I/O请求可以识别出存储块的I/O访问特征,例如,在1ms内,若统计出其中一个存储块中的历史I/O请求的个数超过200个,且历史I/O请求间的间距均小于8个扇区大小,则可识别出该存储块的I/O访问特征为顺序访问特征;若统计出另一个存储块中的历史I/O请求的个数少于10个,且历史I/O请求间的间距均大于8个扇区大小,则可识别出该存储块的I/O访问特征为随机访问特征。在识别出各个存储块的I/O访问特征后,可以将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。在设置好所述特征位图后,所述第二查找模块20可以在所述特征位图中查找出所述目标存储块的I/O访问特征。例如,请参见如下表3所示的特征位图:
0M~4M 4M~8M 8M~12M 12M~16M 16M~20M
1 1 0 0 0
表3
在表3中,是将20M大小的LUN空间分成5个存储块,每个存储块为4M大小,其中,0表示顺序访问特征,1表示随机访问特征,若8M~12M对应的存储块为目标存储块,则所述第二查找模块20可以在如表3所示的特征位图中查找出该目标存储块的I/O访问特征为顺序访问特征;若4M~8M对应的存储块为目标存储块,则所述第二查找模块20可以在如表3所示的特征位图中查找出该目标存储块的I/O访问特征为随机访问特征。其中,所述特征位图可以保存在内存中,每个LUN空间对应一个特征位图,还可以使用一个链表保存所有特征位图的指针。
所述顺序预取模块30,用于当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
具体的,当查找出所述目标存储块的I/O访问特征为顺序访问特征时,说明所述当前I/O请求处于顺序流中,因此,所述顺序预取模块30可以根据所述当前I/O请求进行顺序预取。顺序预取的具体过程可以为:若所述当前I/O请求所访问的数据处于顺序流中,则所述顺序预取模块30将所述当前I/O请求所访问的数据的起始位置识别为顺序流头,并启动顺序预取,再根据预取长度查找顺序流尾,若顺序流尾所处于的存储块为随机访问特征,则将顺序流尾重新设置到所述当前I/O请求所访问的数据所处的存储块的尾部地址;若顺序流尾所处于的存储块为顺序访问特征,则不改变顺序流尾的位置;在找到顺序流头和顺序流尾之后,可以从顺序流头开始进行预取,并可以将每次预取的顺序流尾标识为预读标记,当所述顺序流尾再次被访问时,说明命中所述预读标记,此时,所述顺序预取模块30可以启动下一段顺序预读。
所述随机预取模块40,用于当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取。
具体的,当查找出所述目标存储块的I/O访问特征为随机访问特征时,可以确定出所述当前I/O请求属于随机请求,此时,所述随机预取模块40可以通过关联规则对所述当前I/O请求进行预取,本发明实施例所提供的关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的,即所挖掘的历史访问信息中不包含顺序访问特征的I/O请求。而现有技术中的关联规则是通过对全量访问历史进行挖掘所得到,所述全量访问历史包含顺序访问历史和随机访问历史,由于现有技术中会对顺序访问历史进行挖掘,所以可能会掺杂一些其他的规则而造成预取浪费,同时由于要挖掘全量记录库,所以会导致计算量大,且消耗过多的系统资源。因此,本发明实施例所提供的关联规则可以减少随机预取算法中规则挖掘的消耗,提高实用性。
由上可见,本发明实施例通过在预先设置的特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率;同时,由于只对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,所以可以减少随机预取算法中规则挖掘的消耗,提高实用性。
再请参见图6,是本发明实施例提供的另一种数据预取装置1的结构示意图,所述数据预取装置1可以包括上述图5对应实施例中的第一查找模块10、第二查找模块20、顺序预取模块30、随机预取模块40,进一步的,所述数据预取装置1还可以包括:特征识别模块50、添加更新模块60、第一判断模块70、元数据更新模块80、通知模块90、第二判断模块100、生成存储模块110、删除模块120、计算模块130;
所述特征识别模块50,用于识别存储块的I/O访问特征;
具体的,所述特征识别模块50可以通过各个存储块中的历史I/O请求的个数、间距、覆盖率等信息,识别出存储块的I/O访问特征。
所述添加更新模块60,用于将所述特征识别模块50识别出的所述存储块的I/O访问特征添加或更新至特征位图中;
具体的,在识别出某个存储块的I/O访问特征之后,所述添加更新模块60可以将识别出的所述存储块的I/O访问特征添加或更新至特征位图中,以便于后续在所述特征位图中查找目标存储块的I/O访问特征。
所述第一判断模块70,用于判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
具体的,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率。在所述特征识别模块50识别存储块的I/O访问特征之前,可以由所述第一判断模块70先判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中。
所述元数据更新模块80,用于若所述第一判断模块70判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,在某个存储块有新增的历史I/O请求时,所述元数据更新模块80可以更新与该存储块的元数据中的所述历史I/O请求个数以及所述历史I/O请求覆盖率,以便于在后续由所述特征识别模块50识别存储块的I/O访问特征时,可以通过所述历史I/O请求个数或所述历史I/O请求覆盖率对存储块进行I/O访问特征识别。
所述通知模块90,用于当所述元数据更新模块80更新后的元数据所对应的所述存储块满足启动识别条件时,通知所述特征识别模块50识别存储块的I/O访问特征;
具体的,所述启动识别条件可以为统计时间长度达到统计时间窗阈值,即当所述存储块满足启动识别条件时,说明对所述存储块的统计时间长度达到统计时间窗阈值,例如,设统计时间窗阈值为1ms,当对某个存储块的统计时间长度达到1ms时,则所述通知模块90可以通知所述特征识别模块50识别存储块的I/O访问特征。所述启动识别条件也可以为存储块中的历史I/O请求个数或历史I/O请求覆盖率达到启动识别阈值,即当所述存储块满足启动识别条件时,说明所述存储块中的历史I/O请求个数或历史I/O请求覆盖率达到启动识别阈值,此时,所述通知模块90可以通知所述特征识别模块50识别存储块的I/O访问特征。
所述第二判断模块100,用于当所述第一判断模块70判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
所述生成存储模块110,用于若所述第二判断模块100判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,在所述第二判断模块100判断为未达到预设的元数据阈值时,说明可以继续在所述本地内存中增加新的元数据,因此,所述生成存储模块110可以生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,并通知所述元数据更新模块80更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并通知所述通知模块90执行相应操作。其中,在所述本地内存中可以保存固定个数的元数据,以控制内存使用。
所述删除模块120,用于若所述第二判断模块100判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
具体的,在所述第二判断模块100判断为达到预设的元数据阈值时,所述删除模块120可以从所述本地内存中删除启动识别时间戳最靠前的元数据,所述启动识别时间戳最靠前的元数据是指所述本地内存中第一个启动I/O访问特征识别的存储块所对应的元数据,由于所述本地内存中所存放的元数据个数有限,所以在达到元数据阈值时所述删除模块120可以删除启动识别时间戳最靠前的元数据,使得可以在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,在生成并保存元数据之后,通知所述元数据更新模块80更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并通知所述通知模块90执行相应操作。
所述计算模块130,用于计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中;
具体的,在所述删除模块120删除启动识别时间戳最靠前的元数据之后,所述计算模块130可以计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。其计算过程与上述图2对应实施例中的S201相同,这里不再进行赘述。
进一步的,再请参见图7,是本发明实施例提供的一种特征识别模块50的结构示意图,所述特征识别模块50可以包括:识别单元501、标示单元502;
所述识别单元501,用于当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
所述识别单元501,还用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
所述标示单元502,用于当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值
例如,统计时间窗阈值为1ms,第一数量阈值为200,第二数量阈值为10,扇区数量阈值为8,在达到1ms时,统计所述存储块中的所述历史I/O请求个数以及各个所述历史I/O请求之间的间距,若统计出的所述历史I/O请求个数大于或等于200,且各个所述历史I/O请求之间的间距小于8个扇区大小,则所述识别单元501可以识别出该存储块的I/O访问特征为顺序访问特征;若统计出的所述历史I/O请求个数小于10,且各个所述历史I/O请求之间的间距大于8个扇区大小,则所述识别单元501可以识别出该存储块的I/O访问特征为随机访问特征;若统计出的所述历史I/O请求个数大于或等于10,且小于200,则所述标示单元502可以标示该存储块的I/O访问特征为暂未识别。
所述识别单元501,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
所述识别单元501,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
所述标示单元502,还用于当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值;
例如,统计时间窗阈值为1ms,第一覆盖率阈值为50%,第二覆盖率阈值为6%,在达到1ms时,统计所述历史I/O请求在所述存储块中的覆盖率,若统计出所述历史I/O请求在所述存储块中的覆盖率大于或等于50%,则所述识别单元501可以识别出所述存储块的I/O访问特征为顺序访问特征;若统计出所述历史I/O请求在所述存储块中的覆盖率小于或等于6%,则所述识别单元501可以识别出所述存储块的I/O访问特征为随机访问特征;若统计出所述历史I/O请求在所述存储块中的覆盖率大于6%,且小于50%,则所述标示单元502可以标示所述存储块的I/O访问特征为暂未识别。
进一步的,再请参见图8,是本发明实施例提供的一种随机预取模块40的结构示意图,所述随机预取模块40可以包括:规则查找单元401、预取单元402、请求下发单元403;
所述规则查找单元401,用于当查找出所述目标存储块的I/O访问特征为随机访问特征时,在预设的二维表中查找是否存在所述目标存储块对应的关联规则;
具体的,当查找出所述目标存储块的I/O访问特征为随机访问特征时,所述规则查找单元401可以在预设的二维表中查找是否存在所述目标存储块对应的关联规则。其中,所述关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的;所述二维表包括与识别为随机访问特征或暂未识别的I/O访问特征的存储块对应的关联规则。
所述预取单元402,用于若所述规则查找单元401查找到存在所述目标存储块对应的关联规则,则下发所述当前I/O请求,并根据所述当前I/O请求以及查找到的所述关联规则生成预取请求,以根据所述预取请求进行预取;
具体的,若所述规则查找单元401查找到存在所述目标存储块对应的关联规则,则所述预取单元402可以下发所述当前I/O请求,以在所述目标存储块中请求对应的数据,同时所述预取单元402还通过查找到的所述关联规则生成与所述当前I/O请求关联的预取请求,并根据所述预取请求进行预取。由于关联规则只与随机访问特征和暂未识别的存储块中的历史I/O请求相关,即关联规则与顺序访问特征的存储块无关,所以所挖掘出的关联规则是准确的,可以高效的运用在随机预取过程中,而且由于不用像现有技术那样挖掘全量访问历史,所以可以减少随机预取算法中规则挖掘的消耗。
所述请求下发单元403,用于若所述规则查找单元401未查找到存在所述目标存储块对应的关联规则,则直接下发所述当前I/O请求;
具体的,若所述规则查找单元401未查找到存在所述目标存储块对应的关联规则,则所述请求下发单元403直接下发所述当前I/O请求,以在所述目标存储块中请求对应的数据,此时,不再进行预取。
由上可见,本发明实施例通过对元数据进行判断和处理,可以有序的控制存储系统对各个存储块的I/O访问特征进行识别,以得到特征位图,并通过在所述特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率;同时,由于只对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,所以可以减少随机算法中规则挖掘的消耗,提高实用性。
本发明实施例还提供了一种计算机存储介质,其中,所述计算机存储介质可存储有程序,该程序执行时包括上述图1至图4的方法实施例中记载的数据预取的方法的部分或全部步骤。
再请参见图9,为本发明实施例提供的又一种数据预取装置1的结构示意图,所述数据预取装置1可以包括处理器1001、通信接口1002和存储器1003(数据预取装置1中的处理器1001的数量可以为一个或多个,图9中以一个处理器1001为例)。本发明的一些实施例中,处理器1001、通信接口1002和存储器1003可通过通信总线或其他方式连接,其中,图9以通过通信总线连接为例。
其中,所述通信接口1002,用于与主机进行通信;
所述存储器1003用于存储程序;
所述处理器1001用于执行所述程序,以实现
查找当前I/O请求所访问的数据所处的目标存储块;
在特征位图中查找出所述目标存储块的I/O访问特征,所述特征位图用于标识所述目标存储块的I/O访问特征;
当查找出所述目标存储块的I/O访问特征为顺序访问特征时,根据所述当前I/O请求进行顺序预取;
当查找出所述目标存储块的I/O访问特征为随机访问特征时,根据所述当前I/O请求进行随机预取。
其中,所述处理器1001还用于:
识别存储块的I/O访问特征;
将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
其中,所述处理器1001具体用于:
当达到统计时间窗阈值,且判断出所述存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一数量阈值大于所述第二数量阈值。
其中,所述处理器1001还用于:
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
其中,所述处理器1001还用于:
判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。
其中,所述处理器1001还用于:
当判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
若判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
其中,所述处理器1001具体用于:
当查找出所述目标存储块的I/O访问特征为随机访问特征时,在预设的二维表中查找是否存在所述目标存储块对应的关联规则;
若查找到存在所述目标存储块对应的关联规则,则下发所述当前I/O请求,并根据所述当前I/O请求以及查找到的所述关联规则生成预取请求,以根据所述预取请求进行预取;
若未查找到存在所述目标存储块对应的关联规则,则直接下发所述当前I/O请求。
其中,所述关联规则是通过对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘所得到的;
所述二维表包括与识别为随机访问特征或暂未识别的I/O访问特征的存储块对应的关联规则。
由上可见,本发明实施例通过对元数据进行判断和处理,可以有序的控制存储系统对各个存储块的I/O访问特征进行识别,以得到特征位图,并通过在所述特征位图中查找出目标存储块的I/O访问特征,可以确定出要对当前I/O请求进行顺序预取或随机预取,使得顺序预取和随机预取两种预取方法可以有效分离开来,以应用到对应的I/O请求,从而可以提高系统的预取效率;同时,由于只对识别为随机访问特征和暂未识别的I/O访问特征的存储块进行历史访问信息挖掘以得到关联规则,所以可以减少随机算法中规则挖掘的消耗,提高实用性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (15)

1.一种I/O特征识别的方法,其特征在于,包括:
当达到统计时间窗阈值,且判断出存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;其中,所述第一数量阈值大于所述第二数量阈值。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
4.一种I/O特征识别的方法,其特征在于,包括:
当达到统计时间窗阈值,且判断出历史I/O请求在存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
5.如权利要求4所述的方法,其特征在于,还包括:
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别。
6.如权利要求5所述的方法,其特征在于,还包括:
判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。
7.如权利要求6所述的方法,其特征在于,还包括:
当判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
若判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
8.一种I/O特征识别装置,其特征在于,所述装置包含接口和处理器,所述接口和所述处理器通信,所述处理器用于:
当达到统计时间窗阈值,且判断出存储块中的历史I/O请求个数大于或等于预设的第一数量阈值,且各个所述历史I/O请求之间的间距小于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数小于预设的第二数量阈值,且各个所述历史I/O请求之间的间距大于预设的扇区数量阈值时,识别出所述存储块的I/O访问特征为随机访问特征;其中,所述第一数量阈值大于所述第二数量阈值。
9.如权利要求8所述的装置,其特征在于,所述处理器还用于:
当达到统计时间窗阈值,且判断出所述存储块中的所述历史I/O请求个数大于或等于预设的第二数量阈值,且小于预设的第一数量阈值时,标示所述存储块的I/O访问特征为暂未识别。
10.如权利要求8或9所述的装置,其特征在于,所述处理器还用于:
将识别出的所述存储块的I/O访问特征添加或更新至特征位图中。
11.一种I/O特征识别装置,其特征在于,所述装置包含接口和处理器,所述接口和所述处理器通信,所述处理器用于:
当达到统计时间窗阈值,且判断出历史I/O请求在存储块中的覆盖率大于或等于预设的第一覆盖率阈值时,识别出所述存储块的I/O访问特征为顺序访问特征;
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率小于或等于预设的第二覆盖率阈值时,识别出所述存储块的I/O访问特征为随机访问特征;其中,所述第一覆盖率阈值大于所述第二覆盖率阈值。
12.如权利要求11所述的装置,其特征在于,所述处理器还用于:
当达到统计时间窗阈值,且判断出所述历史I/O请求在所述存储块中的覆盖率大于预设的第二覆盖率阈值,且小于预设的第一覆盖率阈值时,标示所述存储块的I/O访问特征为暂未识别。
13.如权利要求12所述的装置,其特征在于,所述处理器还用于:
判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据是否在本地内存中,所述元数据至少包括所述存储块中所述历史I/O请求个数和所述历史I/O请求的覆盖率;
若判断为在所述本地内存中,则更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
当更新后的元数据所对应的所述存储块满足启动识别条件时,执行所述识别存储块的I/O访问特征。
14.如权利要求13所述的装置,其特征在于,所述处理器还用于:
当判断所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据不在本地内存中时,则进一步判断所述本地内存中的所述元数据的个数是否达到预设的元数据阈值;
若判断为未达到预设的元数据阈值,则生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据,并将所生成的元数据存储于所述本地内存中,以便于更新所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
若判断为达到预设的元数据阈值时,则从所述本地内存中删除启动识别时间戳最靠前的元数据,以便于在所述本地内存中生成所述历史I/O请求所访问的数据所处的存储块的用于识别I/O访问特征的元数据;
计算被删除的元数据所对应的存储块的I/O访问特征,以将计算出的所述I/O访问特征添加或更新至特征位图中。
15.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序被硬件执行时,能够实现权利要求1-7任意一项所述的方法。
CN201710203870.2A 2014-07-23 2014-07-23 一种i/o特征识别方法以及装置 Active CN107168891B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710203870.2A CN107168891B (zh) 2014-07-23 2014-07-23 一种i/o特征识别方法以及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710203870.2A CN107168891B (zh) 2014-07-23 2014-07-23 一种i/o特征识别方法以及装置
CN201410353997.9A CN104156321B (zh) 2014-07-23 2014-07-23 一种数据预取的方法以及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201410353997.9A Division CN104156321B (zh) 2014-07-23 2014-07-23 一种数据预取的方法以及装置

Publications (2)

Publication Number Publication Date
CN107168891A CN107168891A (zh) 2017-09-15
CN107168891B true CN107168891B (zh) 2020-08-14

Family

ID=51881826

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710203870.2A Active CN107168891B (zh) 2014-07-23 2014-07-23 一种i/o特征识别方法以及装置
CN201410353997.9A Active CN104156321B (zh) 2014-07-23 2014-07-23 一种数据预取的方法以及装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201410353997.9A Active CN104156321B (zh) 2014-07-23 2014-07-23 一种数据预取的方法以及装置

Country Status (1)

Country Link
CN (2) CN107168891B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042773B2 (en) * 2015-07-28 2018-08-07 Futurewei Technologies, Inc. Advance cache allocator
CN105487987B (zh) * 2015-11-20 2018-09-11 深圳市迪菲特科技股份有限公司 一种处理并发顺序读io的方法及装置
KR20170109108A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
CN106557435B (zh) * 2016-11-16 2020-03-06 苏州浪潮智能科技有限公司 一种缓存模式识别的方法、缓存模块及存储系统
CN106708750B (zh) * 2016-12-22 2020-08-04 郑州云海信息技术有限公司 存储系统的缓存预读方法及系统
FR3075413B1 (fr) * 2017-12-20 2020-01-10 Bull Sas Procede de pre-chargement de donnees
CN110226158B (zh) * 2017-12-29 2021-06-29 华为技术有限公司 一种数据预取方法、装置和存储设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377788A (zh) * 2008-09-28 2009-03-04 中国科学院计算技术研究所 一种机群文件系统中缓存管理的方法及系统
CN101794259A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 数据存储方法和装置
CN102075584A (zh) * 2011-01-30 2011-05-25 中国科学院计算技术研究所 一种分布式文件系统及其访问方法
CN102163175A (zh) * 2011-04-26 2011-08-24 西安交通大学 一种基于局部性分析的混合地址映射方法
CN102298556A (zh) * 2011-08-26 2011-12-28 成都市华为赛门铁克科技有限公司 数据流识别方法及装置
CN103927136A (zh) * 2014-04-21 2014-07-16 华为技术有限公司 输入输出io类型的识别方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US7516279B2 (en) * 2006-02-28 2009-04-07 International Business Machines Corporation Method using stream prefetching history to improve data prefetching performance.
KR101570179B1 (ko) * 2008-12-08 2015-11-18 삼성전자주식회사 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템
US8407187B2 (en) * 2010-06-16 2013-03-26 Microsoft Corporation Validating files using a sliding window to access and correlate records in an arbitrarily large dataset
CN101951395B (zh) * 2010-08-30 2013-08-21 中国科学院声学研究所 一种基于访问预测的P2P VoD系统服务端的数据缓存策略
CN102073463B (zh) * 2010-12-28 2012-08-22 创新科存储技术有限公司 流预测方法和装置及预读控制方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377788A (zh) * 2008-09-28 2009-03-04 中国科学院计算技术研究所 一种机群文件系统中缓存管理的方法及系统
CN101794259A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 数据存储方法和装置
CN102075584A (zh) * 2011-01-30 2011-05-25 中国科学院计算技术研究所 一种分布式文件系统及其访问方法
CN102163175A (zh) * 2011-04-26 2011-08-24 西安交通大学 一种基于局部性分析的混合地址映射方法
CN102298556A (zh) * 2011-08-26 2011-12-28 成都市华为赛门铁克科技有限公司 数据流识别方法及装置
CN103927136A (zh) * 2014-04-21 2014-07-16 华为技术有限公司 输入输出io类型的识别方法和装置

Also Published As

Publication number Publication date
CN104156321B (zh) 2017-06-09
CN107168891A (zh) 2017-09-15
CN104156321A (zh) 2014-11-19

Similar Documents

Publication Publication Date Title
CN107168891B (zh) 一种i/o特征识别方法以及装置
CN107092439B (zh) 一种数据存储的方法及设备
CN107481762B (zh) 一种固态硬盘的trim处理方法及装置
CN103635887B (zh) 缓存数据的方法和存储系统
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
CN110226158B (zh) 一种数据预取方法、装置和存储设备
CN109086141B (zh) 内存管理方法和装置以及计算机可读存储介质
CN104572845A (zh) 文件分发方法、装置、设备及系统
CN111324556B (zh) 用于将预定数目的数据项预取到高速缓存的方法和系统
CN104134027A (zh) 一种顺序流识别的方法以及装置
CN111309267B (zh) 存储空间的分配方法、装置、存储设备及存储介质
EP2782016A1 (en) Cache memory device, information processing device, and cache memory control method
CN112540731B (zh) 数据的追加写方法、装置、设备、介质和程序产品
JPWO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
CN114817651B (zh) 数据存储方法、数据查询方法、装置和设备
CN113127382A (zh) 用于追加写的数据读取方法、装置、设备和介质
CN114996173A (zh) 一种管理存储设备写操作的方法和装置
CN116226681B (zh) 一种文本相似性判定方法、装置、计算机设备和存储介质
US11194861B2 (en) Graph partitioning method and apparatus
CN111552438A (zh) 一种对象写入的方法、装置、服务器和存储介质
KR102071072B1 (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
CN111061429A (zh) 一种数据访问方法、装置、设备、介质
CN107967306B (zh) 一种存储系统中关联块的快速挖掘方法
CN116521816A (zh) 一种数据处理方法、检索方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant