存储系统的内存数据查找方法、装置、设备及存储介质与流程

文档序号:18214105发布日期:2019-07-19 22:30阅读:291来源:国知局
存储系统的内存数据查找方法、装置、设备及存储介质与流程

本发明涉及数据访问技术领域,更具体地说,涉及一种基于存储系统的内存数据查找方法、装置、设备及计算机可读存储介质。



背景技术:

随着数据的逐渐增多,在存储系统中,为了提升数据的访问的性能,降低访问时延,需要把部分数据缓存在内存中,在访问数据时,如果这部分数据在缓存中,则只需要访问内存就可以。对于在内存中缓存的数据,在后端磁盘阵列的存储地址跟在内存中的存储地址,形成了一一映射关系,对这些映射关系信息,作为元数据在存储系统的缓存模块组织管理,用于数据访问时,查找访问的数据是否在缓存中,这部分数据的查找效率影响数据访问的性能。



技术实现要素:

本发明的目的在于提供一种基于存储系统的内存数据查找方法、装置、设备及计算机可读存储介质,以实现从内存数据中快速查找对应的缓存数据。

为实现上述目的,本发明实施例提供了如下技术方案:

一种基于存储系统的内存数据查找方法,包括:

接收对目标数据的查找指令;其中,所述查找指令中携带了目标逻辑卷信息及目标地址偏移信息;

利用所述目标逻辑卷信息及所述目标地址偏移信息确定目标hashkey值;

查找与所述目标hashkey值相同的目标hash冲突链;其中,每个hash冲突链包括与本hash冲突链的key值相同的缓存块,且每个缓存块中存储有与本缓存块对应的逻辑卷信息及地址偏移信息;

从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块,并确定与所述目标缓存块对应的目标数据。

其中,从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块,包括:

通过缓存块内的连接字段依次遍历所述目标hash冲突链的每个缓存块,查找目标缓存块;

其中,所述目标缓存块内存储的逻辑卷信息与所述目标逻辑卷信息相同,所述目标缓存块内存储的地址偏移信息与所述目标地址偏移信息相同。

其中,所述确定与所述目标缓存块对应的目标数据,包括:

根据所述目标缓存块中存储的存储地址信息,查找目标数据。

其中,所述接收对目标数据的查找指令之前,还包括:

获取内存大小信息以及每个缓存块大小信息;

根据所述内存大小信息及所述缓存块大小信息确定hash冲突链的数量;

根据所述hash冲突链的数量初始化hash冲突链。

一种基于存储系统的内存数据查找装置,包括:

接收模块,用于接收对目标数据的查找指令;其中,所述查找指令中携带了目标逻辑卷信息及目标地址偏移信息;

第一确定模块,用于利用所述目标逻辑卷信息及所述目标地址偏移信息确定目标hashkey值;

目标hash冲突链查找模块,用于查找与所述目标hashkey值相同的目标hash冲突链;其中,每个hash冲突链包括与本hash冲突链的key值相同的缓存块,且每个缓存块中存储有与本缓存块对应的逻辑卷信息及地址偏移信息;

目标缓存块查找模块,用于从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块;

第二确定模块,用于确定与所述目标缓存块对应的目标数据。

其中,所述目标缓存块查找模块,具体用于:通过缓存块内的连接字段依次遍历所述目标hash冲突链的每个缓存块,查找目标缓存块;

其中,所述目标缓存块内存储的逻辑卷信息与所述目标逻辑卷信息相同,所述目标缓存块内存储的地址偏移信息与所述目标地址偏移信息相同。

其中,所述第二确定模块,具体用于:根据所述目标缓存块中存储的存储地址信息,查找目标数据。

其中,还包括:

信息获取模块,用于获取内存大小信息以及每个缓存块大小信息;

数量确定模块,用于根据所述内存大小信息及所述缓存块大小信息确定hash冲突链的数量;

hash冲突链初始化模块,用于根据所述hash冲突链的数量初始化hash冲突链。

一种内存数据查找设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述内存数据查找方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内存数据查找方法的步骤。

通过以上方案可知,本发明实施例提供的一种基于存储系统的内存数据查找方法,包括:接收对目标数据的查找指令;其中,所述查找指令中携带了目标逻辑卷信息及目标地址偏移信息;利用所述目标逻辑卷信息及所述目标地址偏移信息确定目标hashkey值;查找与所述目标hashkey值相同的目标hash冲突链;其中,每个hash冲突链包括与本hash冲突链的key值相同的缓存块,且每个缓存块中存储有与本缓存块对应的逻辑卷信息及地址偏移信息;从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块,并确定与所述目标缓存块对应的目标数据。

可见,在本方案中,为了提升内存数据的查找效率,将所有内存数据采用hash冲突链进行组织,通过逻辑卷信息及地址偏移信息可快速确定包含内存数据的hash冲突链,进而从hash冲突链中快速查找内存数据;本发明还公开了一种基于存储系统的内存数据查找装置、设备及计算机可读存储介质,同样能实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种基于存储系统的内存数据查找方法流程示意图;

图2为本发明实施例公开的一种hash冲突链结构示意图;

图3为本发明实施例公开的一种基于存储系统的内存数据查找装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种基于存储系统的内存数据查找方法、装置、设备及计算机可读存储介质,以实现从内存数据中快速查找对应的缓存数据。

参见图1,本发明实施例提供的一种基于存储系统的内存数据查找方法,包括:

s101、接收对目标数据的查找指令;其中,所述查找指令中携带了目标逻辑卷信息及目标地址偏移信息;

具体的,在数据访问时,需要查找待访问的目标数据是否缓存在内存中,因此需要发送查询目标数据的查找指令,该查找指令中携带了目标数据的目标逻辑卷信息及目标地址偏移信息。逻辑卷信息为lun_id(logicalunitnumberidentification),缓存块的逻辑卷信息用来表示该缓存块中缓存的数据属于哪个逻辑卷,地址偏移为lba(logicalblockaddress),地址偏移表示该数据在逻辑卷中的地址偏移,(lun_id,lba)表示数据在后端存储阵列的地址,而memory_addr表示数据在内存中的存储地址。

并且,本方案为了查询目标数据是否在内存中,需要根据缓存数据块映射信息来确定,该缓存数据块映射信息为:在内存中缓存的数据,通过后端磁盘阵列中的存储地址(lun_id,lba)与在内存中的存储地址memory_addr形成了一一映射关系,对这些映射关系信息,便为缓存数据块映射信息。

s102、利用所述目标逻辑卷信息及所述目标地址偏移信息确定目标hashkey值;

在本方案中,需要把缓存的存储空间,按照一定的粒度进行划分,划分出的等粒度的存储空间成为缓存块,该粒度可根据实际情况进行自定义,例如:32kb,该粒度即为缓存块大小信息;进一步,将缓存的数据都存储在其中,缓存块用如下数据接口进行描述。

从该接口可以看出,对于每个缓存块中,包括缓存数据的逻辑卷信息lun_id,地址偏移lba,数据在后端存储阵列的地址(lun_id,lba),数据在内存中的存储地址memory_addr,以及hash_link,hash_link为该缓存块连接到hash表中的连接字段,以便在查找数据块时,根据该连接字段遍历链表中每个缓存块,查找到目标缓存块。

s103、查找与所述目标hashkey值相同的目标hash冲突链;其中,每个hash冲突链包括与本hash冲突链的key值相同的缓存块,且每个缓存块中存储有与本缓存块对应的逻辑卷信息及地址偏移信息;

在本实施例中,为了快速查找对应的缓存块,需要把所有的缓存块都通过hash链表进行组织,如图2所示,图2为本发明实施例公开的一种hash冲突链结构示意图,其中lun_id和lba共同组成hashkey,对于每个缓存块,均需要根据该缓存块的lun_id和lba计算对应的hashkey,每个hash冲突链的hlist_head的下标表示该hash冲突链的hashkey值,对于每个hash冲突链来说,该链表中的每个缓存块的hashkey值均与该hash冲突链的下标hashkey值相同。

例如,存在16个缓存块,这16个缓存块通过各自的逻辑卷信息及地址偏移信息计算得到的hashkey值共有4个,即hashkey1、hashkey2、hashkey3和hashkey4,那么本方案中的hash冲突链的数量变为4个,每个hash冲突链的下标分别为hashkey1、hashkey2、hashkey3和hashkey4,并分别将hashkey值相同的4个缓存块加入相同hashkey值的hash冲突链,也即参见图2,每个缓存块的hashkey值均与该缓存块的hlist_head的下标表示的hashkey值相同。

因此在查找目标数据时,需要根据查找指令中的目标逻辑卷信息及目标地址偏移信息计算目标hashkey值,进而通过该目标hashkey值与每个hash冲突链的hashkey值进行比较,将与目标hashkey值相同的hash冲突链作为可能包括目标缓存块的目标hash冲突链。

s104、从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块,并确定与所述目标缓存块对应的目标数据。

其中,所述确定与所述目标缓存块对应的目标数据,包括:

根据所述目标缓存块中存储的存储地址信息,查找目标数据。

具体的,当目标hash冲突链确定后,便从该目标hash冲突链中查找与目标逻辑卷信息及目标地址偏移信息均相同的目标缓存块,该目标数据块中包括内存的存储地址信息,通过缓存块与该存储地址信息memory_addr之间的指针,访问缓存块的缓存数据,该缓存数据即为待查找的目标数据;如果从该目标hash冲突链中没有查找到与目标逻辑卷信息及目标地址偏移信息均相同的目标缓存块,则说明该查找指令对应的数据并未存储在内存中,这时需要返回未查找到目标数据的提示信息。

可以看出,如果按照相关技术中查找目标数据,则需要遍历每个缓存数据块映射信息,而通过本方案所述的内存数据查找方式,只需要查找到目标hash冲突链后,仅仅遍历该目标hash冲突链中的每个缓存块便可;以缓存块为16个为例,在相关技术中,需要遍历16个缓存数据块映射信息才可能确定目标数据是否在内存中,而通过本方案,仅仅需要计算一次key值,便可从与该key值对应的4个缓存块中查找目标数据,遍历缓存数据块映射信息的次数仅仅为4次。也就是说,本方案将所有内存数据采用hash冲突链进行组织,通过逻辑卷信息及地址偏移信息可快速确定包含内存数据的hash冲突链,进而从hash冲突链中快速查找内存数据,提升了内存数据的查找效率。

基于上述实施例,在本实施例中,从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块,包括:

通过缓存块内的连接字段依次遍历所述目标hash冲突链的每个缓存块,查找目标缓存块;其中,所述目标缓存块内存储的逻辑卷信息与所述目标逻辑卷信息相同,所述目标缓存块内存储的地址偏移信息与所述目标地址偏移信息相同。

具体的,参见图2,目标hash冲突链的链表中包括多个缓存块,每个缓存块之间通过连接字段连接,在查找目标缓存块时,遍历每个缓存块,也即:查找该链表中的第一个缓存块中的逻辑卷信息与目标逻辑卷信息是否相同,以及地址偏移信息与目标地址偏移是否相同,如果相同,则将该缓存块作为目标缓存块;如果不相同,则继续访问该链表中下一个缓存块,直至找到目标缓存块;如果在该链表中没有找到目标缓存块,则返回查找失败的提示信息,代表该目标数据未存储在内存中。可见,通过这种方式,可以快速的查找数据,以快速的执行访问操作。

基于上述任意实施例,在本实施例中,所述接收对目标数据的查找指令之前,还包括:

获取内存大小信息以及每个缓存块大小信息;

根据所述内存大小信息及所述缓存块大小信息确定hash冲突链的数量;

根据所述hash冲突链的数量初始化hash冲突链。

需要说明的是,由于缓存块是通过缓存空间划分得到,不同的缓存规格,缓存块的数量是不同的,如果不同规格的内存的hash冲突链采用相同的hash桶数量(hash桶数量与hash冲突链数量相同),那么对于大规格的缓存规格,hash冲突会比小规格缓存大,导致查询次数变多,查询效率低下。例如:缓存块的数量为100个,如果hash桶数量为10个,则需要在每个hash冲突链中查找10次,如果hash桶数量为5个,则需要在每个hash冲突链中查找20次;因此,为了根据缓存规格动态确定hash冲突链的hash桶数量,则需要对于不同的缓存规格,设定不同的hash桶数量。

在本实施例中,提出一种hash冲突链设定方法:

(1)缓存模块初始阶段,获取内存规格;

(2)根据内存规格,计算hash桶数量,计算方法为:内存大小/缓存块大小;

(3)根据hash桶数量初始化hash链表。

可以看出,本方案对于缓存中维护的地址映射信息,采用hash链表的形式进行组织,并且,本方案能够根据不同系统缓存规格的差异,自适应确定hash链表中hash桶的数量,从而降低hash冲突链的长度,提升查找效率,提升系统性能。

下面对本发明实施例提供的内存数据查找装置进行介绍,下文描述的内存数据查找装置与上文描述的内存数据查找方法可以相互参照。

参见图3,本发明实施例提供的一种基于存储系统的内存数据查找装置,包括:

接收模块100,用于接收对目标数据的查找指令;其中,所述查找指令中携带了目标逻辑卷信息及目标地址偏移信息;

第一确定模块200,用于利用所述目标逻辑卷信息及所述目标地址偏移信息确定目标hashkey值;

目标hash冲突链查找模块300,用于查找与所述目标hashkey值相同的目标hash冲突链;其中,每个hash冲突链包括与本hash冲突链的key值相同的缓存块,且每个缓存块中存储有与本缓存块对应的逻辑卷信息及地址偏移信息;

目标缓存块查找模块400,用于从所述目标hash冲突链中查找与所述目标逻辑卷信息及所述目标地址偏移信息相同的目标缓存块;

第二确定模块500,用于确定与所述目标缓存块对应的目标数据。

其中,所述目标缓存块查找模块,具体用于:通过缓存块内的连接字段依次遍历所述目标hash冲突链的每个缓存块,查找目标缓存块;

其中,所述目标缓存块内存储的逻辑卷信息与所述目标逻辑卷信息相同,所述目标缓存块内存储的地址偏移信息与所述目标地址偏移信息相同。

其中,所述第二确定模块,具体用于:根据所述目标缓存块中存储的存储地址信息,查找目标数据。

其中,本方案还包括:

信息获取模块,用于获取内存大小信息以及每个缓存块大小信息;

数量确定模块,用于根据所述内存大小信息及所述缓存块大小信息确定hash冲突链的数量;

hash冲突链初始化模块,用于根据所述hash冲突链的数量初始化hash冲突链。

综上可以看出,本方案把缓存的地址空间按照等粒度划分为缓存块,按照缓存块中缓存数据所在后端存储阵列的地址为hashkey,缓存块组织到hash表中,便于快速查找。并且,对不同缓存规格的系统能自适应确定hash链表中hash桶的数量,降低hash冲突链的长度,提升查找效率。

本发明实施例还提供一种内存数据查找设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一方法实施例中所述内存数据查找方法的步骤。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例中所述内存数据查找方法的步骤。

其中,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

综上可以看出,本方案对于缓存中维护的地址映射信息,采用hash链表的形式进行组织,并能够根据不同系统缓存规格的差异自适应确定hash链表中hash桶的数量,降低hash冲突链的长度。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1