数据块的缓存方法、装置、设备及存储介质与流程

文档序号:16528887发布日期:2019-01-05 10:34阅读:165来源:国知局
本申请涉及存储
技术领域
:,特别涉及一种数据块的缓存方法、装置、设备及存储介质。
背景技术
::数据存储系统包括:存储空间和缓存空间。存储空间存储有全量数据块,缓存空间用于存储被频繁访问的热度数据块。热度数据块是全量数据块的子集。在数据存储系统中采用缓存算法来移入或移出缓存空间中的热度数据块。在缓存空间中已经存储满的场景下,对于缓存空间中每个未命中的数据块,缓存算法将该数据块从存储空间中读取后,作为新的热度数据块与缓存空间中的一个旧热度数据块进行交换。由于典型的使用场景下,存在很多热度数据块的重复访问在很长时间后才能发生。如果缓存算法只是简单的在每次未命中时替换缓存空间中的热度数据块,新存入的热度数据块会污染缓存空间,而这个热度数据块在将来的缓存过程中可能永远不会被命中,从而降低缓存空间的使用效率。技术实现要素:本申请实施例提供了一种数据块的缓存方法、装置、设备及存储介质,可以解决在缓存空间中每个未命中的数据块均进行替换时,新存入的热度数据块会污染缓存空间,而这个热度数据块在将来的缓存过程中可能永远不会被命中,从而降低缓存空间的使用效率的问题。所述技术方案如下:根据本申请的一个方面,提供了一种数据块的缓存方法,用于存储系统中,所述存储系统包括存储空间和缓存空间,所述方法包括:获取访问请求,所述访问请求用于请求访问第一数据块;当所述第一数据块未在所述缓存空间中命中时,检测第二数据块是否满足懒惰条件,所述第二数据块是所述缓存空间中的备选剔除块,所述懒惰条件是用于衡量所述第一数据块的重新访问概率的条件;当所述第二数据块满足所述懒惰条件时,从所述存储空间读取所述第一数据块且不将所述第一数据块添加至所述缓存空间中;当所述第二数据块不满足所述懒惰条件时,使用所述第二数据块替换所述缓存空间中的第二数据块。根据本申请的另一方面,提供了一种数据块的缓存装置,应用于存储系统中,所述存储系统包括存储空间和缓存空间,所述装置包括:获取模块,用于获取访问请求,所述访问请求用于请求访问第一数据块;检测模块,用于当所述第一数据块未在所述缓存空间中命中时,检测所述第一数据块是否满足懒惰条件,所述懒惰条件是用于衡量所述第一数据块的重新访问概率的条件;读取模块,用于当所述第一数据块满足所述懒惰条件时,从所述存储空间读取所述第一数据块且不将所述第一数据块添加至所述缓存空间中。根据本申请的另一方面,提供了一种应用于存储系统中的计算机设备,所述存储系统包括存储空间和缓存空间,所述计算机设备包括:处理器;与所述处理器相连的收发器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为加载并执行所述可执行指令以实现如上所述的数据块的缓存方法。根据本申请的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的数据块的缓存方法。本申请实施例提供的技术方案带来的有益效果至少包括:通过当第一数据块在缓存空间中未命中时,检测缓存空间中的第二数据块是否满足懒惰条件,当第二数据块满足懒惰条件时,从存储空间读取第一数据块且暂不将第二数据块替换出缓存空间中,能够极大地延长第二数据块在缓存空间中的停留时长,提高有用数据块的命中率,从而提升存储系统的读写性能。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请一个示例性实施例提供的存储系统的结构示意图;图2是本申请一个示例性实施例提供的数据块的缓存方法的流程图;图3是本申请另一个示例性实施例提供的数据块的缓存方法的流程图;图4是本申请另一个示例性实施例提供的数据块的缓存方法的流程图;图5是本申请一个示例性实施例提供的索引表、元数据区和数据区的结构示意图;图6是本申请一个示例性实施例提供的第一懒惰条件的示意图;图7是本申请一个示例性实施例提供的第二懒惰条件的示意图;图8是本申请一个示例性实施例提供的数据块的缓存方法的实施示意图;图9是本申请一个示例性实施例提供的数据块的缓存装置的结构框图;图10是本申请一个示例性实施例提供的数据块的缓存装置的结构框图;图11是本申请另一个示例性实施例提供的计算机设备的结构框图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。首先对本申请涉及的若干个术语进行介绍:懒惰替换:是指第一数据块在缓存空间中未命中时,条件性的将该第一数据块与缓存空间中的第二数据块(也称备选剔除块)进行替换的方式。这里的“懒惰”是相对于相关技术中,在缓存空间中每次未命中数据块时,均强制对缓存空间中的备选剔除块进行强制替换而言的。重用距离:是对同一个数据块的两次连续访问之间的唯一数据块的计数,或,对同一个数据块的两次连续访问之间的数据块的计数。例如,历史访问的数据块序列包括:1-2-4-5-4-3-3-2,当采用唯一数据块的计数方式时,数据块2的重用距离是3,因为在数据块的两次连续访问之间的唯一数据块集合是{3,4,5};当采用数据块的计数方式时,数据块的重用距离是5。连续访问也称重新访问,是指同一个数据块再次被访问的事件。在存储系统中,数据块的重用距离对缓存命中率有很大的影响。通常,不同的存储系统具有不同的重用距离特性。例如,在传统的片上高速缓存环境中,平均重用距离可能远远短于云块存储系统。索引表:是一种用于加速数据查找的数据结构,常见的索引表结构包括:b树、b+树、哈希散列表以及红黑树等。命中:当一个数据块被访问时,若该数据块存在于缓存空间中,即认为在缓存空间中命中了该数据块。图1示出了本申请一个示例性实施例提供的存储系统100的结构框图。该存储系统100包括:控制设备120、缓存空间140和存储空间160。控制设备120是用于控制缓存空间140对被频繁访问的数据块142进行存储的计算机设备。可选地,控制设备120中运行有缓存算法,该缓存算法用于实现本申请各个实施例中提供的数据块的缓存方法。缓存空间140是用于对存储空间160中被频繁访问的数据块142进行缓存的存储逻辑单元。缓存空间140的读写性能优于存储空间160的读写性能。缓存空间140可采用非易失性缓存设备来构建。非易失性缓存设备包括:固态硬盘(solidstatedrives,ssd)、相变存储(phase-changememory,pcm)、自旋转移扭矩磁随机存取器(sharedtransistortechnologymagneticrandomaccessmemory,stt-mram)及电阻式内存(reram)等。存储空间160是用于对全量的数据块164进行存储的存储逻辑单元。存储空间160可采用非易失性存储设备来构建。常见的非易失性存储设备为机械硬盘。在存储空间160中存在多个存储卷162,每个存储卷162中存储有多个数据块164。可选地,数据块的大小是相同或不同的,比如数据块的大小可以是4kb、8kb、16kb、32kb等。每个存储卷162对应有各自的卷id,每个数据块164对应有各自的块id。在一些可选的实施例中,存储系统100还包括接入设备110,该接入设备110用于接收各个终端180发送的数据块的访问请求,并将各个访问请求按照接收时间由早到晚的顺序存储在请求列表112中。示意性,各个客户端180可以向接入设备110发送数据块的访问请求,该数据块的访问请求可以是读请求或写请求。控制设备120根据该访问请求对缓存空间140和存储空间160中的数据块进行访问。当缓存空间140中命中该数据块时,控制设备120优先从缓存空间140访问该数据块;当缓存空间140中未命中该数据块时,控制设备120从存储空间160访问该数据块。在相关技术中,若客户端向存储系统请求访问数据块,而该数据块在缓存空间中未命中时,缓存算法会将每个未命中的数据块从存储空间移入缓存空间中(若缓存空间已经满,则需要将相应的备选剔除块移出缓存空间)。但是这种简单地将每个未命中的数据块替换至缓存空间中的方式,会使得一些重新访问可能性很低的数据块进入缓存空间,从而污染缓存空间,但将来可能永远都不会被命中。另外,由于新型的非易失性缓存介质都具有写次数限制的特性,当写次数达到一定次数后即会寿命耗尽,因此当缓存空间采用这种新型的非易失性缓存介质构建时,上述缓存算法也会很快地耗尽缓存介质的寿命。本申请实施例希望提供一种尽可能将有价值的数据块保留在缓存空间的技术方案。本申请实施例提供的数据块的缓存方法,可以应用于具有缓存空间和存储空间的存储系统中。典型的,该存储系统是云块存储系统。云块存储系统为用户提供一种弹性的块级别云存储服务,云块存储系统将同时服务于拥有多种工作负载的数万个租户。图2示出了本申请一个示例性实施例提供的数据块的缓存方法的流程图。本实施例以该方法应用于图1所示的存储系统中来举例说明。该方法包括:在步骤201中,获取访问请求,该访问请求用于请求访问第一数据块;控制设备从请求列表中读取一个访问请求,请求列表中按序存储有多个访问请求。示例性的,控制设备从请求列表中读取接收时间最早的访问请求,该访问请求用于请求访问第一数据块。示意地,该访问请求中携带有第一数据块的标识信息,该标识信息包括:卷id和块id,或者,块id。控制设备根据标识信息检测第一数据块是否存在于缓存空间中。当第一数据块在缓存空间中命中时,控制设备在缓存空间中访问该第一数据块。当第一数据块在缓存空间中未命中时,执行步骤202。在步骤202中,当第一数据块在缓存空间中未命中时,检测第二数据块是否满足懒惰条件,第二数据块是缓存空间中的备选剔除块,懒惰条件是根据重新访问概率确定将第二数据块延迟替换出缓存空间的条件;示意性的,当缓存空间中的各个数据块采用链表按照重新访问概率进行排序存储时,第二数据块是位于链表尾部的数据块。懒惰条件又称为懒惰替换条件。可选地,懒惰条件是根据第二数据块的重新访问概率,决策是否要将第二数据块延迟替换出缓存空间中的条件;可选地,懒惰条件是当第二数据块的重新访问概率高于期望阈值时,确定将第二数据块延迟替换出缓存空间中的条件;可选地,懒惰条件是根据第二数据块的重新访问分值和/或重用距离来确定第二数据块的重新访问概率,根据第二数据块的重新访问概率决策是否要将第二数据块延迟替换出缓存空间中的条件。在步骤203中,当第二数据块满足懒惰条件时,从存储空间访问第一数据块且不将第二数据块替换出缓存空间中;当第二数据块满足懒惰条件时,代表第二数据块的重新访问概率较高,控制设备从存储空间中读取第一数据块,暂不将第二数据块替换出缓存空间中。在步骤204中,当第二数据块不满足懒惰条件时,使用第一数据块替换缓存空间中的第二数据块。当第二数据块不满足懒惰条件时,代表第二数据块的重新访问概率较低,控制设备从存储空间读取第一数据块后,使用第一数据块替换缓存空间中的第二数据块。综上所述,本实施例提供的方法,通过当第一数据块在缓存空间中未命中时,检测第二数据块是否满足懒惰条件,当第二数据块满足懒惰条件时,从存储空间读取第一数据块且暂不将第二数据块替换出缓存空间中,能够极大地延长第二数据块在缓存空间中的停留时长,提高有用数据块的命中率,从而提升存储系统的读写性能。在基于图2的可选实施例中,当缓存空间中未命中第一数据块时,如果缓存空间的第二数据块满足懒惰条件,则暂不将第二数据块替换出缓存空间,从而延长第二数据块在缓存空间中的停留时长。对于未替换入缓存空间的第一数据块,使用数据块标识列表(blockidentifierlist,bil)记录该第一数据块的历史访问情况。对于存储在bil中的第一数据块,在下一次被访问时具有更高的概率被替换入缓存空间中。通过该方式,能够更加高效的筛选出对缓存空间更有益的数据块,同时也可以避免对缓存设备不必要的写入。图3示出了本申请一个示例性实施例提供的数据块的缓存方法的流程图。本实施例以该方法由图1中的控制设备120执行来举例说明。该方法包括:在步骤301中,获取访问请求,该访问请求用于请求访问第一数据块;控制设备从请求列表中读取一个访问请求,请求列表中按序存储有多个访问请求。示例性的,控制设备从请求列表中读取接收时间最早的第i个访问请求,该第i个访问请求用于请求访问第一数据块。在步骤302中,检测第一数据块是否存在于缓存空间中;示意地,该访问请求中携带有第一数据块的标识信息,该标识信息包括:卷id和块id,或者,块id。控制设备根据标识信息检测第一数据块是否存在于缓存空间中。当存在于缓存空间时,即为在缓存空间中命中该第一数据块。当第一数据块在缓存空间中命中时,控制设备在缓存空间中访问该第一数据块。当第一数据块在缓存空间中未命中时,执行步骤303。在步骤303中,当第一数据块在缓存空间中未命中时,检测第一数据块是否存在于bil中;bil存储有历史访问的n个数据块的块元数据。可选地,块元数据包括但不限于:数据块的块id、数据块所在存储卷的卷id、数据块的重用距离、数据块的标记(flag)值、数据块在缓存空间中的停留时长中的至少一项。其中,flag值是用于表示数据块在重新访问维度的重要性的分值,也称重新访问分值,由控制设备根据数据块的历史重新访问数据动态维护。停留时长是按照数据块在缓存空间中存储后,经历的数据块访问次数来计量的。比如一个数据块2在缓存空间中存储后,后续的数据块访问序列为:1-2-3-6-7-5-4-7,则该数据块的停留时长为8。控制设备根据第一数据块的块id,查询第一数据块是否存储于bil中。当第一数据块不存在于bil中时,进入步骤304;当第一数据块存在于bil中时,进入步骤305。本实施例中提供有两个懒惰条件:第一懒惰条件和第二懒惰条件,第一懒惰条件所指示的重新访问概率小于第二懒惰条件所指示的重新访问概率。也即,第二懒惰条件比第一懒惰条件具有更强的限定,第二数据块需要具有更大的重新访问概率,才能继续停留在缓存空间中。在步骤304中,当第一数据块不存在于bil中时,检测第二数据块是否满足第一懒惰条件;示意性的,第一懒惰条件包括:1、第二数据块的flag值大于预设值(比如0)。当第二数据块满足第一懒惰条件时,进入步骤306;当第二数据块不满足第一懒惰条件时,进入步骤307。在步骤305中,当第一数据块存在于bil中时,检测第二数据块是否满足第二懒惰条件;示意性的,第二懒惰条件包括:1、第二数据块的flag值大于预设值(比如0);且,2、第二数据块在缓存空间中的停留时长大于k倍的数据块平均重用距离。可选地,k为可变参数,随存储系统的负载大小变化而变化。在步骤306中,从存储空间访问第一数据块且不将第二数据块替换出缓存空间中;控制设备从存储空间访问第一数据块,对第一数据块进行读取或写入。但暂不将第一数据块存入缓存空间,也不将第二数据块替换出缓存空间中。将第二数据块继续保留在缓存空间中进行缓存。在步骤307中,使用第一数据块替换缓存空间中的第二数据块。控制设备从存储空间访问第一数据块,对第一数据块进行读取或写入。同时将第二数据块移出缓存空间,并将第一数据块存入缓存空间中进行缓存。然后,控制设备更新相应数据块的块元数据。综上所述,本实施例提供的方法,通过提供两个懒惰条件来进行数据块的重新访问可能性判断,当第一数据块存在于bil时,第一数据块具有更高的概率被换入缓存空间中,从而使得更有价值的数据块存入缓存空间中,减少缓存空间中的数据块被替换出的可能性,从而提高缓存空间的利用率,也减少对缓存空间的写入次数。在基于图3的可选实施例中,存储系统中提供有两个列表:懒惰替换列表(lazyevictionlist,lel)和bil。lel用于存储位于缓存空间的数据块的实体以及块元数据,数据块的实体也即数据块的数据本身。块元数据是用于描述数据块的元数据,包括但不限于:数据块的块id、数据块所在存储卷的卷id、数据块的重用距离、数据块的flag值、数据块在缓存空间中的停留时长中的至少一项。其中:块id用于在整个存储系统或所在存储卷中唯一标识数据块。块id可以采用数字、字母和字符中的至少一种来表示。卷id用于在整个存储系统中唯一标识存储卷。重用距离是对同一个数据块的两次连续访问之间的唯一数据块(或数据块)的计数。flag值是用于表示数据块在重新访问维度的重要性的分值,也称重新访问分值,由控制设备根据数据块的历史重新访问数据动态维护。在一个可能的实施例中,当一个数据块在缓存空间中被命中时,按照第一幅度增加flag值;当一个数据块在缓存空间中作为备选剔除块且因满足懒惰条件未被替换时,按照第二幅度减少flag值。可选地,第一幅度小于第二幅度,比如,flag的初始值为0,当数据块在缓存空间中命中时,flag值加1;当数据块作为备选剔除块,却由于满足懒惰条件而未被替换出缓存空间时,flag值将被减半。停留时长是按照数据块在缓存空间中存储后,经历的数据块访问次数来计量的。比如一个数据块2在缓存空间中存储后,后续的数据块访问序列为:1-2-3-6-7-5-4-7,则该数据块的停留时长为8。bil用于存储历史访问过的n个数据块。bil是一个影子链表,bil可以仅存储数据块的卷id以及块id等块元信息,不需要存储数据块的实体。可选地,lel和bil具有相同的列表长度。lel和bil的两条链表都包含列表头部和列表尾部两个端点,数据块总是从列表头部插入链表中,从列表尾部删除。图4是本申请另一个示意性实施例提供的数据块的缓存方法的流程图。本实施例以该方法应用于图1所示的存储系统的控制设备中来举例说明。该方法包括:步骤401,从请求列表中读取一个访问请求,该访问请求用于请求访问第一数据块;控制设备从请求列表中读取一个访问请求,请求列表中按序存储有多个访问请求。示例性的,控制设备从请求列表中读取一个访问请求,比如接收时间最早的访问请求,该访问请求用于请求访问第一数据块。示意地,该访问请求中携带有第一数据块的标识信息,该标识信息包括:卷id和块id,或者,块id。本实施例以卷id和块id来唯一标识数据块进行举例说明。步骤402,在索引表中查询第一数据块;索引表中存储有每个数据块的卷id、块id、以及数据块的链指针。该数据块的链指针可以指向lel,还可以指向bil。示意性的参考图5,缓存空间中存储有索引表50、元数据区51和数据区52。索引表50存储有每个数据块的卷id、块id和链指针。当数据块存在于lel链表中时,链指针指向lel链表中的某一个链表元素;当数据块存在于bil链表中时,链指针指向bil链表中的某一个链表元素。链表是一种数据结构,移入链表的数据从链表头部进入链表,移出链表的数据从链表尾部移出链表。在其它实施例中,lel和bil也可采用队列等数据结构,本实施例对此不加以限定。比如,卷m中的块n位于lel链表中的链表头部,也即存在于lel中;卷8中的块4位于bil链表中的链表尾部,也即存在于lel中。lel链表中存储有每个数据块的块元数据以及每个数据块在数据区52中的指针(可认为是数据块的实体)。bil链表中存储有每个数据块的块元数据。每个数据块的数据内容存储在数据区52中。控制设备根据第一数据块的卷id和块id,在索引表中查询第一数据块的存储信息。步骤403,判断第一数据块是否存在于lel;控制设备判断第一数据块的链指针是否指向lel链表中的某个链表元素。当第一数据块存在于lel时,认为在缓存空间中命中第一数据块,进入步骤404;当第一数据块不存在于lel时,认为在缓存空间中未命中第二数据块,进入步骤406。步骤404,从lel访问第一数据块;由于缓存空间中存储有第一数据块,控制设备从lel链表中获取第一数据块在数据区中的存储位置,根据该存储位置对第一数据块进行读取操作或写入操作。步骤405,将第一数据块的块元数据移动至lel的列表头部;控制设备在缓存空间中命中第一数据块时,还会将第一数据块的块元数据移动至lel的列表头部,降低第一数据块被替换出缓存空间的可能性。步骤406,判断第一数据块是否存在于bil;当在缓存空间中未命中第一数据块时,控制设备判断第一数据块的链指针是否指向bil链表中的某个链表元素。当第一数据块未存在于bil时,表示第一数据块是最近一段时间内的首次访问数据块,采用相对宽松的第一懒惰条件对位于lel的列表尾部的第二数据块进行懒惰替换评估,进入步骤407。当第一数据块存在于bil时,表示第一数据块是最近一段时间内历史访问过的数据块,采用更为严苛的第二懒惰条件对位于lel的列表尾部的第二数据块进行懒惰替换评估,以便增大第一数据块被替换入缓存空间的可能性,进入步骤408。步骤407,判断第二数据块是否满足第一懒惰条件;示意性的,第一懒惰条件包括:第二数据块的flag值大于0。当第二数据块满足第一懒惰条件时,进入步骤409;当第二数据块不满足第一懒惰条件时,进入步骤412。步骤408,判断第二数据块是否满足第二懒惰条件;示意性的,第二懒惰条件包括:第二数据块的flag值大于0,且第二数据块在lel中的停留时长大于k倍的块平均重用距离,k为可变参数,k可以随着存储系统的负载变化而变化。比如,当负载较重时,增大k来减少替换次数;当负载较轻时,减少k来增加替换次数。当第二数据块满足第二懒惰条件时,进入步骤415;当第二数据块不满足第二懒惰条件时,进入步骤417。步骤409,从存储空间访问第一数据块,暂不将第二数据块替换出缓存空间;当第二数据块满足第一懒惰条件时,控制设备从存储空间读取或写入第一数据块,暂不将第一数据块插入lel中,也即暂不采用第一数据块将第二数据块替换出缓存空间。步骤410,将第一数据块的块元数据移动至bil的列表头部;控制设备还将第一数据块的块元数据插入至bil的列表头部,以便在bil中记录本次对第一数据块的访问。步骤411,将位于bil的列表尾部的第三数据块的块元数据删除;控制设备还将第三数据块的块元数据从bil的列表尾部删除,以保证bil中的链表元素的总数为n个。步骤412,使用第一数据块替换第二数据块;当第二数据块不满足第一懒惰条件时,控制设备在lel中使用第一数据块替换第二数据块,也即将第一数据块插入lel,且将第二数据块从lel中删除。步骤413,将第一数据块的块元数据移动至lel的列表头部;在使用第一数据块替换第二数据块后,控制设备将第一数据块的块元数据插入lel的列表头部。步骤414,将位于lel的列表尾部的第二数据块的块元数据删除;控制设备还将第二数据块的块元数据从lel的列表尾部删除,以保证lel中的链表元素的总数为n个。参考图6,当第一数据块是首次访问块x时,若第二数据块满足第一懒惰条件,则将第一数据块的块元数据插入bil的列表头部;若第二数据块不满足第一懒惰条件,则将第一数据块的块元数据插入lel的列表头部。步骤415,从存储空间访问第一数据块,暂不将第二数据块替换出缓存空间;当第二数据块满足第二懒惰条件时,控制设备从存储空间读取或写入第一数据块,暂不将第一数据块插入lel中,也即暂不采用第一数据块将第二数据块替换出缓存空间。步骤416,将第一数据块的块元数据移动至bil的列表头部;由于第一数据块的块元数据已经存在于bil中,因此控制设备将第一数据块的块元数据移动至bil的列表头部。步骤417,使用第一数据块替换第二数据块;当第二数据块不满足第二懒惰条件时,控制设备在lel中使用第一数据块替换第二数据块,也即将第一数据块插入lel,且将第二数据块从lel中删除。步骤418,将第一数据块的块元数据移动至lel的列表头部;在使用第一数据块替换第二数据块后,控制设备将第一数据块的块元数据插入lel的列表头部。步骤419,将位于lel列表尾部的第二数据块的块元数据移动至bil的列表头部;控制设备还将第二数据块的块元数据从lel的列表尾部删除,以保证lel中的链表元素的总数为n个。控制设备还将第二数据块的块元数据插入至bil的列表头部,这样能够保证第二数据块被下一次重新访问时,具有更高的概率被替换回lel中。参考图7,当第一数据块在bil链表中命中时,若第二数据块满足第二懒惰条件时,将第一数据块的块元数据插入bil的列表头部;若第二数据块不满足第二懒惰条件时,将第一数据块的块元数据插入lel的列表头部,并将第二数据块的块元数据从lel的列表尾部移动至bil的列表头部。步骤420,更新相关数据块的块元数据;在每一次数据块的访问请求结束后,需要更新相关数据块的块元数据。更新的内容包括但不限于:全部或部分数据块的重用距离、位于缓存空间中的各个数据块的停留时长、第一数据块的flag值、第二数据块的flag值中的至少一种。可选地,若停留时长是采用上一次访问时间来间接表示时,仅更新第一数据块的上一次访问时间即可。步骤421,所有访问请求是否已处理完毕;控制设备检测请求列表中的每个访问请求是否已经处理完毕。若已经处理完毕,则结束;若请求列表中还存在未处理的访问请求,则进入步骤422。步骤422,在请求列表中获取下一个访问请求。控制设备从请求列表中获取下一个访问请求,重新进入步骤402进行处理。如图8所示,综上所述,本实施例提供的方法,通过提供两个懒惰条件来进行数据块的重新访问可能性判断,当第一数据块存在于bil时,第一数据块具有更高的概率被换入缓存空间中,从而使得更有价值的数据块存入缓存空间中,减少缓存空间中的数据块被替换出的可能性,从而提高缓存空间的利用率,也减少对缓存空间的写入次数。本实施例提供的方法,通过在第一数据块为首次访问块且第二数据块符合懒惰条件时,将第一数据块的块元数据移入bil中,使得第一数据块在下一次被访问时,具有更高的概率被替换入缓存空间中。本实施例提供的方法,通过在第一数据块属于bil且第二数据块不符合懒惰条件时,将第二数据块的块元数据从缓存空间中删除后移动至bil的列表头部中进行存储,使得该第二数据块在下一次被访问时,具有更高的概率被替换入缓存空间中。对于本申请的各个实施例,通过实验结果显示,上述缓存方法能极大的提高算法的命中率,从而提升存储系统的读写性能。同时,还能够减少对缓存空间的写入次数,从而延长缓存空间的使用寿命。在一个示意性的例子中,通过采集块级网络存储服务(cloudblockservice,cbs)真实用户数据,采用日志驱动的试验方法,测试结果显示该算法相对最近最少使用(leastrecentlyused,lru)算法提升23.80%的命中率,相对读缓存淘汰(adjustablereplacementcache,arc)算法提升15.70%的命中率,相对arc算法提升9.66%的命中率。在一个示意性的例子中,由于懒惰替换的特性,该方法能够极大的减少对非易失性缓存设备的写入,从而能够有效延长缓存设备的使用寿命。测试结果显示该算法相对lru算法减少62.85%的缓存设备写入流量,相对arc算法减少61.85%的缓存设备写入流量。在一个示意性的例子中,参考图8,当用户请求访问数据块a,当数据块a存在于lel中时,直接从缓存空间84中访问该数据块a。当数据块不存在于lel中时,检测该数据块是否存在于bil,以及位于缓存空间84中作为备选剔除块的数据块b是否满足懒惰条件。当数据块a未存在于bil,且数据块b满足第一懒惰条件时,从存储空间82访问该数据块a。当数据块a存在于bil,且数据块b满足第二懒惰条件时,从存储空间82访问该数据块a。当数据块a未存在于bil,且数据块b不满足第一懒惰条件时,从存储空间82读取该数据块a,并使用数据块a在缓存空间84中替换数据块b。当数据块a存在于bil,且数据块b不满足第一懒惰条件时,从存储空间82读取该数据块a,并使用数据块a在缓存空间84中替换数据块b。以下为本申请的装置实施例,对于装置实施例中未详细描述的细节,可以参考上述方法实施例中的相应记载。图9是本申请一个示例性实施例提供的数据块的缓存装置的结构框图。该缓存装置可以实现成为存储系统的一部分,也可以应用于上述存储系统中,比如实现为控制设备中的一部分。该装置包括:获取模块920,用于获取访问请求,所述访问请求用于请求访问第一数据块;检测模块940,用于当所述第一数据块在所述缓存空间中未命中时,检测第二数据块是否满足懒惰条件,所述第二数据块是所述缓存空间中的备选剔除块,所述懒惰条件是根据重新访问概率确定将所述第二数据块延迟替换出所述缓存空间的条件;访问模块960,用于当所述第二数据块满足所述懒惰条件时,从所述存储空间访问所述第一数据块且不将所述第二数据块替换出所述缓存空间中。所述访问模块960,还用于当所述第二数据块不满足所述懒惰条件时,使用第一数据块替换所述第二数据块。在一个可选的实施例中,所述存储系统存储有bil,所述bil存储有历史访问的n个数据块的块元数据,n为正整数。所述检测模块940,用于当所述第一数据块不存在于所述bil中时,检测所述第二数据块是否满足第一懒惰条件;当所述第一数据块存在于所述bil中时,检测所述第二数据块是否满足第二懒惰条件;其中,所述第一懒惰条件所指示的重新访问概率小于所述第二懒惰条件所指示的重新访问概率。在一个可选的实施例中,所述第一懒惰条件包括:所述第二数据块的所述标记值大于第一阈值,所述标记值是用于衡量所述第二数据块的访问重要程度的变量;所述第二懒惰条件包括:所述第二数据块的所述标记值大于第二阈值,且所述第二数据块在所述缓存空间中的停留时长大于k倍的块平均重用距离。在一个可选的实施例中,当所述第二数据块在所述缓存空间中命中时,按照第一幅度增加所述标记值;当所述第二数据块在所述缓存空间中因满足所述懒惰条件未被替换时,按照第二幅度减少所述标记值。在一个可选的实施例中,所述装置还包括:元数据修改模块980,如图9所示。所述元数据修改模块980,用于当所述第二数据块满足所述第一懒惰条件时,将所述第一数据块的块元数据添加至所述bil的列表头部,并将所述bil的列表尾部的第三数据块的块元数据进行删除,以及当所述第二数据块满足所述第二懒惰条件时,将所述第一数据块的块元数据移动至所述bil的列表头部。在一个可选的实施例中,所述存储系统存储有lel,所述lel存储有位于所述缓存空间中的n个数据块的块元数据,n为正整数。当所述第二数据块不满足所述第一懒惰条件时,所述元数据修改模块980用于将所述第二数据块的块元数据从所述lel的列表尾部删除。当所述第二数据块不满足所述第二懒惰条件时,所述元数据修改模块980用于将所述第二数据块的块元数据从所述lel的列表尾部删除,且将所述第二数据块的块元数据移动至所述bil的列表头部。当所述第二数据块不满足所述懒惰条件时,所述元数据修改模块980用于将所述第一数据块的块元数据移动至所述lel的列表头部。可选地,所述懒惰条件包括第一懒惰条件和第二懒惰条件。图11是本申请一个实施例提供的计算机设备的结构示意图。具体来讲:计算机设备1000包括中央处理单元(英文:centralprocessingunit,简称:cpu)1001、包括随机存取存储器(英文:randomaccessmemory,简称:ram)1002和只读存储器(英文:read-onlymemory,简称:rom)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。所述计算机设备1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。所述基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中所述显示器1008和输入设备1009都通过连接到系统总线1005的输入/输出控制器1010连接到中央处理单元1001。所述基本输入/输出系统1006还可以包括输入/输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。所述大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。所述大容量存储设备1007及其相关联的计算机可读介质为计算机设备1000提供非易失性存储。也就是说,所述大容量存储设备1007可以包括诸如硬盘或者只读光盘(英文:compactdiscread-onlymemory,简称:cd-rom)驱动器之类的计算机可读介质(未示出)。不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、可擦除可编程只读存储器(英文:erasableprogrammableread-onlymemory,简称:eprom)、电可擦除可编程只读存储器(英文:electricallyerasableprogrammableread-onlymemory,简称:eeprom)、闪存或其他固态存储其技术,cd-rom、数字通用光盘(英文:digitalversatiledisc,简称:dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。根据本申请的各种实施例,所述计算机设备1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1000可以通过连接在所述系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。其中,上述处理器被配置为加载并执行可执行指令以实现如上述方法实施例提供的数据块的缓存方法。本申请还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方法实施例提供的数据块的缓存方法。本申请还提供了一种计算机程序产品,当其在电子设备上运行时,使得电子设备执行上述各个方法实施例所述的数据块的缓存方法。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1