一种存储系统中预读的方法、系统、设备及介质技术方案

技术编号:24573671 阅读:24 留言:0更新日期:2020-06-21 00:04
本发明专利技术公开了一种存储系统中预读的方法、系统、设备和存储介质,方法包括以下步骤:响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求;响应于哈希表中存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求,对哈希表进行更新;判断更新后的哈希表中的权重值是否大于零;以及响应于更新后的哈希表中的权重值大于零,将新的IO请求的长度与权重值的乘积作为预读大小进行预读。本发明专利技术提出的存储系统中预读的方法、系统、设备及介质通过判断哈希表中是否存在与当前IO请求连续的IO请求来识别多路并发访问的数据流,提升缓存的命中率,有效降低系统访问时延。

A method, system, device and medium of pre reading in storage system

【技术实现步骤摘要】
一种存储系统中预读的方法、系统、设备及介质
本专利技术涉及存储系统领域,更具体地,特别是指一种存储系统中预读的方法、系统、计算机设备及可读介质。
技术介绍
由于机械磁盘的访问速度与内存的访问速度差异大,所以对于全机械盘阵的存储系统,会把经常被访问的数据提取到缓存中,对于读请求,如果要访问数据在缓存中命中,那直接访问缓存中的数据;如果未命中,再从后端磁盘读取。所以缓存的命中率越高,系统访问的时延越低。为了提升缓存的命中率,对于顺序的读请求,会通过预读的方式,把后续可能被访问的数据提前提取到缓存中,以提升缓存的命中率。现在一般都是先确定当前是顺序的读请求,才进行预读,所以顺序流判定的准确性决定了预读的有效性。当前的实现方法都是按照历史读请求LBA(LogicalBlockAddress,逻辑区块地址)是否连续来判定是否是顺序读请求,但是对于多路的顺序访问,当前方法就不适用了。例如:用户A顺序访问LBA1,LBA2,LBA3,…;用户B顺序访问LBA1000,LBA1001,LBA1002,…;用户A和用户B并发的进行访问,LBA的访问顺序可能为LBA1,LBA1000,LBA2,LBA1001,…,这样当前的实现方法会把这种访问类型识别为随机访问,就不触发预读操作,导致缓存命中率降低,访问时延增大。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提出一种存储系统中预读的方法、系统、计算机设备及计算机可读存储介质,通过判断哈希表中是否存在与当前IO请求连续的IO请求来识别多路并发访问的数据流,提升缓存的命中率,有效降低系统访问时延。基于上述目的,本专利技术实施例的一方面提供了一种存储系统中预读的方法,包括如下步骤:响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求;响应于所述哈希表中存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,对所述哈希表进行更新;判断更新后的所述哈希表中的权重值是否大于零;以及响应于更新后的所述哈希表中的权重值大于零,将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读。在一些实施方式中,所述对所述哈希表进行更新包括:将所述历史IO请求的最后逻辑区块地址替换为所述新的IO请求的最后逻辑区块地址。在一些实施方式中,所述将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读包括:判断所述权重值是否小于阈值;以及响应于所述权重值小于阈值,将所述权重值加一。在一些实施方式中,还包括:响应于所述哈希表中不存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,将所述新的IO请求的信息写到第一链表的最后。在一些实施方式中,所述将所述新的IO请求的信息写到第一链表的最后包括:判断所述第一链表的IO请求个数是否超过第二阈值;以及响应于所述第一链表的IO请求个数超过第二阈值,将所述新的IO请求替换所述第一链表中的头部IO请求,并将替换后的头部IO请求移动到所述第一链表的最后。本专利技术实施例的另一方面,还提供了一种存储系统中预读的系统,包括:查找模块,配置用于响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求;更新模块,配置用于响应于所述哈希表中存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,对所述哈希表进行更新;判断模块,配置用于判断更新后的所述哈希表中的权重值是否大于零;以及预读模块,配置用于响应于更新后的所述哈希表中的权重值大于零,将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读。在一些实施方式中,所述对所述哈希表进行更新包括:将所述历史IO请求的最后逻辑区块地址替换为所述新的IO请求的最后逻辑区块地址。在一些实施方式中,所述预读模块还配置用于:判断所述权重值是否小于阈值;以及响应于所述权重值小于阈值,将所述权重值加一。本专利技术实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。本专利技术实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。本专利技术具有以下有益技术效果:通过判断哈希表中是否存在与当前IO请求连续的IO请求来识别多路并发访问的数据流,提升缓存的命中率,有效降低系统访问时延。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本专利技术提供的存储系统中预读的方法的实施例的示意图;图2为本专利技术提供的存储系统中预读的方法的实施例的硬件结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术实施例进一步详细说明。需要说明的是,本专利技术实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本专利技术实施例的限定,后续实施例对此不再一一说明。基于上述目的,本专利技术实施例的第一个方面,提出了一种存储系统中预读的方法的实施例。图1示出的是本专利技术提供的存储系统中预读的方法的实施例的示意图。如图1所示,本专利技术实施例包括如下步骤:S1、响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求;S2、响应于哈希表中存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求,对哈希表进行更新;S3、判断更新后的哈希表中的权重值是否大于零;以及S4、响应于更新后的哈希表中的权重值大于零,将新的IO请求的长度与权重值的乘积作为预读大小进行预读。本专利技术实施例最大可以支持256路IO(输入输出)流的顺序检测,通过一个包含256个元素的数据保存IO流的历史信息,其中lastLba字段是IO访问的最后逻辑区块地址,例如一个IO访问的其实LBA是10,长度是32,那么最后逻辑区块地址为42;hashChain为hash(哈希)链表的链接字段,为了能够快速查找,会把这256个历史数据组织成hash表的形式,其中hashkey为数组元素的lastLba字段。响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求。新的IO请求到来,用最先逻辑区块地址查找hash表,判断当前IO是否与历史IO连续。也即是判断是否存在最后逻辑区块地址等于新的IO请求的最先逻辑区块地址的历史IO请求。新的IO请本文档来自技高网...

【技术保护点】
1.一种存储系统中预读的方法,其特征在于,包括以下步骤:/n响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求;/n响应于所述哈希表中存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,对所述哈希表进行更新;/n判断更新后的所述哈希表中的权重值是否大于零;以及/n响应于更新后的所述哈希表中的权重值大于零,将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读。/n

【技术特征摘要】
1.一种存储系统中预读的方法,其特征在于,包括以下步骤:
响应于接收到新的IO请求,在哈希表中查找是否存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求;
响应于所述哈希表中存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,对所述哈希表进行更新;
判断更新后的所述哈希表中的权重值是否大于零;以及
响应于更新后的所述哈希表中的权重值大于零,将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读。


2.根据权利要求1所述的方法,其特征在于,所述对所述哈希表进行更新包括:
将所述历史IO请求的最后逻辑区块地址替换为所述新的IO请求的最后逻辑区块地址。


3.根据权利要求1所述的方法,其特征在于,所述将所述新的IO请求的长度与权重值的乘积作为预读大小进行预读包括:
判断所述权重值是否小于阈值;以及
响应于所述权重值小于阈值,将所述权重值加一。


4.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述哈希表中不存在最后逻辑区块地址等于所述新的IO请求的最先逻辑区块地址的历史IO请求,将所述新的IO请求的信息写到第一链表的最后。


5.根据权利要求4所述的方法,其特征在于,所述将所述新的IO请求的信息写到第一链表的最后包括:
判断所述第一链表的IO请求个数是否超过第二阈值;以及
响应于所述第一链表的IO请求个数超过第二阈值,将所述新的IO请求替换所述第一链表中的头部IO...

【专利技术属性】
技术研发人员:王永刚
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1