一种数据处理方法及装置与流程

文档序号:11458559阅读:247来源:国知局
一种数据处理方法及装置与流程

本发明涉及数据处理技术领域,更具体地说,涉及一种数据处理方法及装置。



背景技术:

超融合基础架构是一种将计算、网络和存储等资源作为基础设施进行整合,可以根据具体业务系统需求进行选择组合和自定义,方便快捷地进行数据中心搭建和业务系统部署的一种技术架构。

分布式存储系统是超融合基础架构的核心组件之一,通常使用分层存储。分层存储是指一种固态盘和机械盘的混合存储架构,固态盘的性能比机械盘高出很多倍,而价格也高出很多倍,因此,将固态盘作为性能层,机械盘作为容量层,应用频繁访问的数据放在快速的固态盘,较少访问的数据放在慢速的机械盘。使用分层算法来确定哪些数据被保存在固态盘,哪些数据被保存在机械盘。

其中,常用的分层算法是最久未被访问算法(lru)。lru算法将固态盘中的数据的元数据组织成链表,并按数据最近一次被访问时间的先后顺序排序,被访问的时间越早,则对应的元数据被存储在链表尾部,被访问的时间越晚,越靠近当前的时间,则对应的元数据被存储在链表的头部。这样,只要数据被访问,则其对应的元数据就会被移动到链表头部,而在需要淘汰冷数据时则从链表尾部摘除元数据,进而将被摘除的元数据对应的数据从固态盘中移动到机械盘。

但是,当遇到如杀毒、备份数据等需要遍历数据的扫描式读写操作时,采用lru算法的处理方法会完全打乱原有的链表结构,从而在需要淘汰数据时,很可能淘汰关键业务数据,无法保证关键业务数据优先存储在固态盘中,严重影响了分布式存储系统的性能。



技术实现要素:

有鉴于此,本发明提供了一种数据处理方法及装置,用于解决现有技术中无法抵御扫描式读写导致分布式存储系统的性能较低的问题。

本发明的技术方案包括:

一种数据处理方法,应用于分布式存储系统,所述分布式存储系统包括多个链表,所述链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同,所述处理方法包括:

接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

确定所述元数据在所述多个链表中的目标链表;

根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整。

优选的,所述分布式存储系统还包括至少一个影子链表,所述处理方法还包括:

若确定所述元数据不在所述多个链表中,则判断所述元数据是否存储于所述影子链表中;

在所述元数据存储于所述影子链表中的情况下,根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的第一目标链表;

将所述元数据存储在所述第一目标链表中。

优选的,还包括:

在所述元数据未存储于所述多个链表以及所述影子链表中的情况下,则按照所述数据的优先级确定所述元数据的第二目标链表,所述第二目标链表为所述多个链表或影子链表中的任意一个;

将所述元数据存储在所述第二目标链表中。

优选的,所述链表包括:第一链表、第二链表、第三链表以及第四链表;

其中,所述第一链表用于存储数据的优先级为普通和高级且仅被访问1次的数据所对应的元数据,以及从所述第三链表中移除的元数据;

所述第二链表用于存储数据的优先级为普通和高级且被访问至少2次的数据对应的元数据,以及从所述第四链表中移除的元数据;

所述第三链表用于存储数据的优先级为极高且仅被访问1次的数据对应的元数据;

所述第四链表用于存储数据的优先级为极高且至少被访问2次的数据对应的元数据。

优选的,所述根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整包括:

若确定所述元数据在所述第一链表中,则判断所述数据的优先级是否为极高,若是,则将所述元数据移动到所述第四链表中;否则,将该元数据移动到所述第二链表中;

若确定所述元数据在所述第二链表中,则判断所述数据的优先级是否为极高,若是,则所述元数据移动到所述第四链表中;否则,将所述元数据置于所述第二链表的头部;

若确定所述元数据在所述第三链表中,则将所述元数据移动到所述第四链表中;

若确定所述元数据在所述第四链表中,将所述元数据置于所述第四链表的头部。

优选的,所述影子链表包括第一影子链表、第二影子链表和特殊影子链表;

其中,所述第一影子链表用于存储从所述第一链表中淘汰的元数据;

所述第二影子链表用于存储从所述第二链表中淘汰的元数据;

所述特殊影子链表用于存储优先级为普通且仅被访问过1次的数据所对应的元数据。

优选的,所述确定所述元数据所述影子链表中,则根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的存储位置包括:

若确定所述元数据在第一影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第一影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

若确定所述元数据在第二影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第二影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

若确定所述元数据在所述特殊影子链表中,则将所述特殊影子链表中的所述元数据移动到所述第二链表中。

本发明另一方面公开了一种数据处理装置,应用于分布式存储系统,所述分布式存储系统包括多个链表,所述链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同,所述处理装置包括:

接收模块,用于接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

第一确定模块,用于确定所述元数据在所述多个链表中的目标链表;

第一执行模块,用于根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整。

优选的,所述分布式存储系统还包括至少一个影子链表,所述处理装置还包括:

第二确定模块,用于若确定所述元数据不在所述多个链表中,则判断所述元数据是否存储于所述影子链表中;

第二执行模块,用于在所述元数据存储于所述影子链表中的情况下,根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的第一目标链表;将所述元数据存储在所述第一目标链表中。

优选的,还包括:

第三执行模块,用于在所述元数据未存储于所述多个链表以及所述影子链表中的情况下,则按照所述数据的优先级确定所述元数据的第二目标链表,所述第二目标链表为所述多个链表或影子链表中的任意一个;将所述元数据存储在所述第二目标链表中。

本发明提供了一种数据处理方法及装置,应用于分布式存储系统,所述分布式存储系统包括多个链表,所述链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同,所述处理方法包括:接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;确定所述元数据所在的目标链表;根据所述目标链表中数据的优先级和访问次数对所述元数据的位置进行调整。可见,本发明设置了按照优先级和访问次数的多个链表,由于关键业务数据的优先级较高,且访问次数也相对较多,因此,在遇到扫描式读写时,关键业务数据对应的元数据在链表中的存储位置并不会优先被淘汰,保证了关键业务数据可以优先保存在固态盘中,可以抵御扫描式读写,提高分布式存储系统的性能。

附图说明

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

图1为本发明实施例公开的一种数据处理方法的流程图;

图2为本发明实施例公开的另一种数据处理方法的流程图;

图3为本发明实施例公开的又一种数据处理方法的流程图;

图4为本发明实施例公开的一种数据处理装置结构示意图。

具体实施方式

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

首先,对本发明中所使用的技术术语进行解释。

超融合基础架构:是一种将计算、网络和存储等资源作为基础设施进行整合,可以根据具体业务系统需求进行选择组合和自定义,方便快捷地进行数据中心搭建和业务系统部署的一种技术架构。具体实现方式上一般是在单元节点(x86服务器)中融入软件虚拟化技术(包括计算、网络、存储、安全等虚拟化),而每一个单元节点可以通过网络聚合起来,实现模块化的无缝横向扩展(scale-out),构建统一的资源池。

分布式存储系统:分布式存储系统是超融合基础架构的核心组件之一,数据被分散存储在多台独立的存储设备上,存储设备之间通过网络互联并且通过传递消息实现协同工作。分布式存储系统采用可扩展的系统架构,利用多台存储服务器分担存储负载,利用位置服务器或者一致性哈希等算法定位数据。

服务质量保证(qos):当业务数据超过了固态盘容量,优先保障关键业务的存储性能。

下面对本发明的技术方案进行详细介绍。

参见图1,图1为本发明实施例公开的一种数据处理方法的流程图。

本发明中的处理方法应用于分布式存储系统,所述分布式存储系统包括多个链表,所述链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同。

可以理解的是,本发明中所应用的分布式存储系统可以是分布式分层存储系统或分布式存储系统的分层子系统。

本发明实施例中,对分布式存储系统的数据预先设置了优先级。具体的,将数据的优先级设置为极高,高级和普通。优先级为极高的数据通常为关键业务数据,对系统的性能影响很大,通常需要一直存放在固态盘中。

多个链表中均存储有固态盘中的数据对应的元数据,是按照数据的优先级和访问次数这两个参数来进行设置的,元数据的排列顺序是按照最近访问时间决定的。

每个链表中所存储的元数据所对应的数据的访问次数和优先级各不相同。这样设置的目的就是为了使得关键业务数据不容易被淘汰,保证系统的性能。多个链表优先存储在分布式存储系统的内存中。

如图1所示,该处理方法包括:

s101、接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

本发明实施例中,访问数据的请求的类型可以分为两种,一种是读请求,另一种则是写请求。

接收该请求后,根据请求所要访问的数据,确定数据对应的元数据。

此步骤中,可以通过查找在固态盘中原本就建立的哈希表来执行,该哈希表存储有数据和元数据的对应关系,可以通过此表格查找到该访问请求的数据对应的元数据。

其中,元数据中包括数据在固态盘上的物理地址、元数据所在链表的指针、对应数据的优先级。

s102、确定所述元数据在所述多个链表中的目标链表;

s103、根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整。

本发明实施例中,确定元数据后,判断该元数据是否存储在多个链表中,若在任意一个链表中,则将该链表作为目标链表。

得到目标链表后,根据数据的优先级和访问次数来确定多个链表中元数据的存储位置。按照优先级和访问次数进行排序就可以避免关键业务被优先放到链表需要淘汰的位置中,在需要淘汰数据时,不会淘汰关键业务的数据到机械盘。

因此,在遇到扫描式读写时,并不会影响关键业务数据对应的元数据在链表中的位置,并且由于对数据的优先级设置,保证了关键业务数据可以优先保存在固态盘中。

图2是本发明提供的一种数据处理方法的另一种流程图。

本发明实施例中,还设置有至少一个影子链表,影子链表中也存储有元数据,这些元数据是从多个链表中所淘汰的元数据或者是优先级为普通且仅访问过1次的数据对应的元数据,在影子链表中存储的元数据所对应的数据是存储在机械盘中的。下面对若确定所述元数据不在所述多个链表中的情况进行介绍。

参见图2,本发明提供了一种数据处理方法,所述分布式存储系统还包括至少一个影子链表,所述处理方法包括:

s201、接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

s202、确定所述元数据在所述多个链表中的目标链表;

s203、根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整;

步骤s201-步骤s203与步骤s101-步骤s103相同,在此,不进行赘述。

s204、若确定所述元数据不在所述多个链表中,则判断所述元数据是否存储于所述影子链表中;

本发明实施例中,链表和影子链表是两种不同类型的表,若所述元数据不在多个链表中的任意一个中,则判断该元数据是否存储在影子链表中。来判断需要访问的数据是否是刚被淘汰的数据还是已经被访问过1次的优先级为普通的数据。

s205、在所述元数据存储于所述影子链表中的情况下,根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的第一目标链表;

如果元数据在影子链表中,则意味着该数据可能是从链表中所淘汰的数据或者是优先级为普通且已经被访问过1次的数据。如果是从链表中被淘汰的数据,意味着是之前需要放到固态盘中的数据,如果是优先级为普通且已经被访问过1次的数据,则意味着可以对该数据进行优化操作,即是否放到固态盘中。

因此,确定该元数据的第一目标链表,第一目标链表是多个链表其中的一个。

s206、将所述元数据存储在所述第一目标链表中。

将该元数据从影子链表中移动到该第一目标链表中,使得数据从机械盘中移动到固态盘中。

本发明实施例中,设置了影子链表,可以针对实际需要,对影子链表中的元数据进行优化。例如直接存储到某链表中,使得数据从机械盘移动到固态盘。并且由于普通优先级的数据需要被访问两次才能被放入固态盘,因此,会优先保障关键业务的数据存储到固态盘中,保证了分布式存储系统的性能,即保证了关键业务的存储服务质量。

如果既不在多个链表也不在影子链表中所存储的元数据,则意味着此元数据未存储在链表或影子链表中,下面对次过程进行详细介绍。

图3是本发明提供的一种数据处理方法的又一种流程图。

参见图3,所述处理方法包括:

s301、接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

s302、确定所述元数据在所述多个链表中的目标链表;

s303、根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整;

s304、若确定所述元数据不在所述多个链表中,则判断所述元数据是否存储于所述影子链表中;

s305、在所述元数据存储于所述影子链表中的情况下,根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的第一目标链表;

s306、将所述元数据存储在所述第一目标链表中;

步骤s301-步骤s306与步骤s201-步骤s206相同,在此,不进行赘述。

s307、在所述元数据未存储于所述多个链表以及所述影子链表中的情况下,则按照所述访问数据的请求的类型以及所述数据的优先级确定所述元数据的第二目标链表,所述第二目标链表为所述多个链表或影子链表中的任意一个;

s308、将所述元数据存储在所述第二目标链表中。

本发明实施例中,如果确定元数据不在多个链表或影子链表中,则会按照所述访问数据的请求的类型以及所述数据的优先级确定所述元数据在所述多个链表或影子链表中的第二目标链表。

当此次需要访问的数据是未被访问过且并不是刚被淘汰的数据时,将按照所述访问数据的请求的类型以及数据的优先级确定数据所对应的元数据应当存储在链表中或者影子链表中。

例如,如果访问数据的请求是读请求,优先级是普通的数据,则将该数据对应的元数据存储到影子链表中。如果访问数据的请求是写请求,优先级是普通的数据,则将该数据对应的元数据存储到第一链表中。如果是其它优先级的数据,则将该数据对应的元数据存储在对应的链表中。

由于是按照数据的优先级进行的存储,因此,会区分出关键业务数据和其它数据,优先保证关键业务数据被保存到固态盘中,保证分布式存储系统的性能。

上述实施例中提到了本发明实施例中有多个链表和至少一个影子链表,下面对多个链表和影子链表进行详细介绍。

本发明实施例中,所述链表包括:第一链表、第二链表、第三链表以及第四链表;

其中,所述第一链表用于存储所述访问数据的请求的类型为写请求时优先级为普通且仅被访问1次的数据所对应的元数据,以及所述访问数据的请求的类型为读请求或写请求时优先级为高级且仅被访问1次的数据所对应的元数据,以及从所述第三链表中移除的元数据;

所述第二链表用于存储所述访问数据的请求的类型为读请求或写请求时优先级为普通和高级且被访问至少2次的数据对应的元数据,以及从所述第四链表中移除的元数据;

所述第三链表用于存储述访问数据的请求的类型包括读请求或写请求时优先级为极高且仅被访问1次的数据对应的元数据;

所述第四链表用于存储述访问数据的请求的类型包括读请求或写请求时优先级为极高且至少被访问2次的数据对应的元数据。

所述影子链表包括第一影子链表、第二影子链表和特殊影子链表;

其中,所述第一影子链表用于存储从所述第一链表中淘汰的元数据;

所述第二影子链表用于存储从所述第二链表中淘汰的元数据;

所述特殊影子链表用于存储所述访问数据的请求为读请求时,优先级为普通且仅被访问过1次的数据所对应的元数据。

本发明实施例中,设置有4个链表和3个影子链表,4个链表为第一链表t1、第二链表t2、第三链表t3以及第四链表t4。影子链表为第一影子链表b1、第二影子链表b2和特殊影子链表qs。

t1、t2、t3、t4的长度是通过p1、p2、p3三个参数进行控制的。p1、p2、p3是在系统初始化是所设定的常数,假设固态盘的容量是c,t2优选设置为20%c,而p1、p3则设置为0。各个链表的长度和参数满足下列关系:

(1)t1+t2+t3+t4<=c;

(2)t3+t4<=p2;

(3)b1+b2+t1+t2+t3+t4<=2c;

(4)qs<=0.5c;

(5)b1+t1+t3<c;

其中,p1和p3是跟着业务来自动调整,用于控制t1和t3的长度。具体的调整过程在后面进行详细介绍。

本发明实施例中,所述确定所述元数据在所述多个链表中的位置,并根据所述数据的优先级和访问次数对所述多个链表中的元数据重新排序包括:

若确定所述元数据在所述第一链表中,则判断所述数据的优先级是否为极高,若是,则将所述元数据移动到所述第四链表中;否则,将该元数据移动到所述第二链表中;

需要说明的是,当确定元数据在第一链表中,且数据的优先级是极高,将所述第一链表中的所述元数据移动到所述第四链表中的同时,还增大p3的值,并且如果t3的长度和t4的长度之和超过p2,则对t3或t4的数据进行淘汰处理。

实际使用中淘汰处理可以使用函数degrade()。其中,增大p3是指在原有的p3的基础上增加t4/t3,即t4除以t3。实际使用中需要增大p3时则使用公式:p3=p3+t4/t3,其中等号前面的p3表示增大后参数p3的值,等号后面的p3指的是增大前参数p3的值,t4和t3分别标识第三链表和第四链表的长度,公式中的“/”表示除法运算。

若确定所述元数据在所述第二链表中,则判断所述数据的优先级是否为极高,若是,则将所述元数据移动到所述第四链表中;否则,将所述元数据置于所述第二链表的头部;

需要说明的是,将所述元数据置于所述第二链表的头部还可以是按照预设规则对第二链表中的元数据重新进行排序,例如,判断数据的优先级,若不为极高,则将该元数据排列在所述第二链表中极高数据对应的元数据的位置之后。当然,还可以使用其它方式,在此不进行赘述。

需要说明的是,当元数据在第二链表中,且数据的优先级为极高,则会减少p3的值,如果t3和t4的长度和超过p2,则对t3或t4的数据进行淘汰处理,实际使用中可以使用函数degrade()。

其中,减少p3是指在原有的p3的基础上减小t3/t4。实际使用中需要减小p3时则使用公式:p3=p3-t3/t4,其中等号前面的p3表示减小后参数p3的值,等号后面的p3指的是减小前参数p3的值,t4和t3分别标识第三链表和第四链表的长度,公式中的“/”表示除法运算。

其中,函数degrade()具体包括:

其中,t3的值大于p3是指t3的长度大于参数p3,从t3降级到t1是指从t3的末尾淘汰元数据到t1中,从t4降级到t2是指从t4的末尾淘汰元数据到t1中。

若确定所述元数据在所述第三链表中,则将所述第三链表中的所述元数据移动到所述第四链表中;

若确定所述元数据在所述第四链表中,将所述元数据置于所述第四链表的头部。

通过上述过程,完成了当元数据在任意一链表中元数据的处理过程和链表中的元数据进行排序的过程以及对各个链表长度的控制。

如果元数据在三个影子链表中的任意一个时,则所述确定所述元数据所述影子链表中,则根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的存储位置包括:

若确定所述元数据在第一影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第一影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

本发明实施例中,若确定所述元数据在第一影子链表b1中,判断数据的优先级,若是极高,将所述第一影子链表中的所述元数据移动到所述第四链表中,并且,增加参数p1的值,并在固态盘的存储空间不足时,则从第一链表中淘汰元数据到第一影子链表或者将第二链表中淘汰元数据到第二影子链表。在实际使用中使用函数replace()。

若数据的优先级为普通和高级,将所述第一影子链表中的所述元数据移动到第二链表中,并增加参数p1的值,在固态盘的存储空间不足时,则从第一链表中淘汰元数据到第一影子链表或者将第二链表中淘汰元数据到第二影子链表。在实际使用中使用函数replace()。

其中,实际使用中,增加p1的值使用公式p1=p1+t2/t1,其中等号前面的p1表示增加后的参数p1的值,等号后面的p1指的是增加前p3参数的值,t1和t2分别标识第一链表和第二链表的长度,公式中的“/”表示除法运算。

在实际使用中,函数replace()包括:

其中,从t1淘汰到b1表示从第一链表的末尾淘汰元数据到第一影子链表中。t2淘汰到b2表示从第二链表的末尾淘汰元数据到第二影子链表中。

若确定所述元数据在第二影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第二影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

本发明实施例中,若确定所述元数据在第二影子链表中,则判断所述元数据的优先级是否为普通或高级,若是,则将所述第二影子链表中的元数据移动到第二链表中,并且,减小参数p1的值。并在固态盘的空间不足时,从第一链表中淘汰元数据到第一影子链表或者将第二链表中淘汰元数据到第二影子链表。在实际使用中使用前述公开的函数replace()。

若数据的优先级为极高,则将所述第二影子链表中的元数据移动到第四链表中,并且减小参数p1的值。在t3和t4的长度和大于p2时,则对t3或t4的数据进行淘汰处理,具体使用前述中的函数degrade()来执行。并在固态盘的空间不足时,从第一链表中淘汰元数据到第一影子链表或者将第二链表中淘汰元数据到第二影子链表。在实际使用中使用前述公开的函数replace()。

其中,实际使用中,减小p1的值使用公式p1=p1-t1/t2,其中等号前面的p1表示减小后的参数p1的值,等号后面的p1指的是减小前p1参数的值,t1和t2分别标识第一链表和第二链表的长度,公式中的“/”表示除法运算。

若确定所述元数据在所述特殊影子链表中,则将所述特殊影子链表中的所述元数据移动到所述第二链表中。

本发明实施例中,若确定所述元数据在特殊影子链表中,则意味着该元数据所对应的数据的优先级是普通级别且之前已经被访问过一次,即该元数据所对应的数据的优先级是普通级别且之前已经被请求读过一次。因此,将该元数据从特殊影子链表中移动到第二链表中。

需要说明的是,第二链表中,优先级为高级的数据对应的元数据有额外一次淘汰的机会。

需要说明的是,在所述元数据未存储于所述多个链表以及所述影子链表中的情况下,则按照按照所述访问数据的请求的类型以及所述数据的优先级确定所述元数据的第二目标链表,所述第二目标链表为所述多个链表或影子链表中的任意一个,此过程具体包括:

若所述访问数据的请求的类型为读请求或写请求时,所述数据的优先级为高级,则将所述元数据存储到第一链表中;

若所述访问数据的请求的类型为读请求或写请求时,所述数据的优先级为极高,则将所述元数据存储到第三链表中。

若所述访问数据的请求的类型为读请求所述数据的优先级为普通,则将所述元数据存储到所述特殊影子链表;

若所述访问数据的请求的类型为写请求所述数据的优先级为普通时,将所述元数据存储到第一链表中。本发明实施例中,若元数据不在所述多个链表以及所述影子链表中,则证明是新增的元数据,则判断数据的优先级。

如果是普通,在访问数据的请求的类型为读时,则存储到特殊影子链表,特殊影子链表的长度是固定的,按照lru策略淘汰,即淘汰最久未被访问的元数据。在访问数据的请求的类型为写时,则存储到第一链表。

如果是高级,则将该元数据保存到第一链表中,并在固态盘的空间不足时,从第一链表中淘汰元数据到第一影子链表或者将第二链表中淘汰元数据到第二影子链表。在实际使用中使用前述公开的函数replace()。如果第一影子链表或第二影子链表的空间不足,则淘汰第一影子链表或第二影子链表中末尾的元数据。实际使用中使用函数replace_b()。

需要说明的是函数replace_b()为:

其中,whilet1+t3+b1>=c,是判断第一链表、第三链表和第一影子链表的长度和是否大于或等于固态盘的容量c。淘汰b1是指从第一影子链表中淘汰末尾的元数据。whilet1+t2+t3+t4+b1+b2>=2c,是判断第一链表、第二链表、第三链表、第四链表以及第一影子链表、第二影子链表的长度和是否大于或等于两倍的固态盘容量c。淘汰b2是指从第二影子链表中淘汰末尾的元数据。

需要说明的是,本申请实施例还可以在接收数据访问的请求后,判断该请求的类型,读请求和写请求的调整规则区别仅在于元数据未在链表或影子链表时,数据的优先级为普通时,元数据的存储位置为在第一链表还是在影子链表中。

通过本发明的上述技术方案,可以实现下列效果:

通过为三种不同优先级设置不同的淘汰策略,保证关键业务的存储服务质量;

通过为三种不同优先级设置不同的抗扫描策略,保证关键业务的存储服务质量;

极高优先级文件的降级和淘汰流程,保证了空间利用率和关键业务服务质量。

本发明另一方面提供了一种数据处理装置,

参见图4,图4是发明提供的一种数据处理装置的结构示意图。

本发明提供的一种数据处理装置,应用于分布式存储系统,所述分布式存储系统包括多个链表,所述多个链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同,所述处理装置包括:

接收模块401,用于接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;

第一确定模块402,用于确定所述元数据在所述多个链表中的目标链表;

第一执行模块403,用于根据所述目标链表中数据的优先级和访问次数对所述元数据的存储位置进行调整。

优选的,所述分布式存储系统还包括至少一个影子链表,所述处理装置还包括:

第二确定模块,用于若确定所述元数据不在所述多个链表中,则判断所述元数据是否存储于所述影子链表中;

第二执行模块,用于在所述元数据存储于所述影子链表中的情况下,根据所述数据的优先级和访问次数确定所述元数据在所述多个链表中的第一目标链表;将所述元数据存储在所述第一目标链表中。

优选的,还包括:

第三执行模块,用于在所述元数据未存储于所述多个链表以及所述影子链表中的情况下,则按照所述数据的优先级确定所述元数据的第二目标链表,所述第二目标链表为所述多个链表或影子链表中的任意一个;将所述元数据存储在所述第二目标链表中。

优选的,所述访问数据的请求的类型包括读请求或写请求,所述多个链表包括:第一链表、第二链表、第三链表以及第四链表;

其中,所述第一链表用于存储所述访问数据的请求的类型为写请求时,优先级为普通且仅被访问1次的数据所对应的元数据,以及所述访问数据的请求的类型为读请求或写请求时优先级为高级且仅被访问1次的数据所对应的元数据,以及从所述第三链表中移除的元数据;

所述第二链表用于存储所述访问数据的请求的类型为读请求或写请求时,优先级为普通和高级且被访问至少2次的数据对应的元数据,以及从所述第四链表中移除的元数据;

所述第三链表用于存储述访问数据的请求的类型包括读请求或写请求时,优先级为极高且仅被访问1次的数据对应的元数据;

所述第四链表用于存储述访问数据的请求的类型包括读请求或写请求时,优先级为极高且至少被访问2次的数据对应的元数据。

优选的,所述第一执行模块包括:

第一执行单元,用于若确定所述元数据在所述第一链表中,则判断所述数据的优先级是否为极高,若是,则将所述元数据移动到所述第四链表中;否则,将该元数据移动到所述第二链表中;

第二执行单元,用于若确定所述元数据在所述第二链表中,则判断所述数据的优先级是否为极高,若是,则所述元数据移动到所述第四链表中;否则,将所述元数据置于所述第二链表的头部;

第三执行单元,用于若确定所述元数据在所述第三链表中,则将所述元数据移动到所述第四链表中;

第四执行单元,用于若确定所述元数据在所述第四链表中,将所述元数据置于所述第四链表的头部。

优选的,所述影子链表包括第一影子链表、第二影子链表和特殊影子链表;

其中,所述第一影子链表用于存储从所述第一链表中淘汰的元数据;

所述第二影子链表用于存储从所述第二链表中淘汰的元数据;

所述特殊影子链表用于存储所述访问数据的请求为读请求时,优先级为普通且仅被访问过1次的数据所对应的元数据。

优选的,所述第二执行模块包括:

第五执行单元,用于若确定所述元数据在第一影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第一影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

第六执行单元,用于若确定所述元数据在第二影子链表中,则判断所述数据的优先级是否为极高,若是,则将所述第二影子链表中的所述元数据移动到所述第四链表中,否则,将该元数据移动到所述第二链表中;

第七执行单元,用于若确定所述元数据在所述特殊影子链表中,则将所述特殊影子链表中的所述元数据移动到所述第二链表中。

需要说明的是,本实施例的一种数据处理装置可以采用上述方法实施例中的一种数据处理方法,用于实现上述方法实施例中的全部技术方案,其各个模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。

本发明提供了一种数据处理装置,所述处理装置应用于分布式存储系统,所述分布式存储系统包括多个链表,所述链表用于存储所述分布式存储系统的数据对应的元数据,每个链表所存储的元数据所对应的数据的优先级和访问次数与其它链表均不相同,所述处理装置接收模块接收访问数据的请求,并根据所述请求确定需要访问的数据所对应的元数据;第一确定模块确定所述元数据所在的目标链表;第一执行模块根据所述目标链表中数据的优先级和访问次数对所述元数据的位置进行调整。

可见,本发明的数据处理装置设置了按照优先级和访问次数的多个链表,由于关键业务数据的优先级较高,且访问次数也相对较多,因此,在遇到扫描式读写时,关键业务数据对应的元数据在链表中的存储位置并不会优先被淘汰,保证了关键业务数据可以优先保存在固态盘中,可以抵御扫描式读写,提高分布式存储系统的性能。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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

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

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