一种用于集群存储系统的全局缓存管理的方法

文档序号:6561500阅读:204来源:国知局
专利名称:一种用于集群存储系统的全局缓存管理的方法
技术领域
本发明涉及网络存储领域,具体涉及一种用于集群存储系统的全局缓存管理的方法。
背景技术
如今,随着高速互连网络技术的飞速发展,集群系统正在不断涌现,它们将PC机或者工作站通过高速互连网络连接起来,为各种应用和高性能计算提供平台。
在网络存储领域中也正发生着类似的转变。由磁盘阵列控制器、光纤通道和磁带库所构成的存储系统大都是非常复杂的,并且相当昂贵。随着磁盘容量的不断增大和价格的不断下降,网络带宽的不断提高以及各种I/O密集型的应用需求的日益增长,通过高速互连网络搭建集群存储系统就成为一个不可避免的趋势。集群存储系统由元数据服务器和存储节点这2个部分组成,它将系统中的各个存储节点的磁盘空间虚拟化为一个逻辑上统一的存储空间,系统采用分条(Striping)技术,将文件保存在多个存储节点的磁盘中,元数据服务器提供树型结构的文件名字空间,并且记录了每个文件所在的存储节点列表,系统中的每个存储节点都提供一个本地缓存,以提高数据的访问效率。在集群存储系统中,用户对文件的访问是在多个存储节点中并行进行的,从而提高了系统的整体I/O性能,访问的过程是用户首先在文件名字空间中找到要访问的文件的文件名,然后和元数据服务器通讯,获得文件所在的存储节点列表,然后并行地对这些存储节点发出I/O请求,如果请求的数据在存储节点的本地缓存中,则直接将数据返回给用户;如果在本地缓存中没有命中,就需要启动磁盘访问,从存储节点的磁盘中读取所需的数据返回给用户。
随着各种实时应用(如多媒体、科学计算、在线事务处理、虚拟实现以及新兴的高清电视等)的兴起,它们对数据的访问延时的要求越来越高,对存储系统的压力也越来越大。因此提高集群存储系统的数据访问效率对满足日益增长的应用需求而言是至关重要的。
有关的研究表明,在数据块大小为8K字节时,访问本地缓存中的数据块的延时大约为0.012ms,通过千兆以太网访问其他机器的本地缓存中的数据块的延时大约为2.48ms,而对磁盘数据块的访问延时则大约为5.58ms。目前的集群存储系统(如Lustre,Panasas,PVFS等)虽然通过并行访问提高了系统的整体I/O性能,但是数据的访问效率并没有得到提高,其原因是各个存储节点相互独立地管理各自的本地缓存,当本地缓存没有命中时就启动了磁盘访问,而没有利用其他存储节点的本地缓存。

发明内容
本发明的目的在于提供一种用于集群存储系统的全局缓存管理的方法,该方法可以提高集群存储系统的数据访问效率。
本发明提供的一种用于集群存储系统的全局缓存管理的方法,其步骤包括(1)初始化系统,在每个存储节点中设置一个本地时钟周期计数器LCT、一个本地数据块访问活动计数器LCA和一个本地定时器LTimer;为每个存储节点分配本地缓存空间;在系统启动时,各个存储节点协商一个共同的时钟周期计数器值ICT、一个共同的数据块访问活动计数器值ICA、以及一个共同的定时器到期间隔值ITimer;将各自的LCT、LCA和LTimer分别设置为ICT、ICA和ITimer的值;然后设置每个存储节点为IDLE状态,并且监控各自的数据块访问行为;(2)各个存储节点各自判断是否发生数据块的访问行为,如果发生了数据块的访问,则存储节点进入步骤(3),否则保持IDLE状态;(3)存储节点进行本地缓存管理,替换局部性强度最小的数据块;(4)根据数据块的访问频率各存储节点判断是否需要在本地缓存中进行数据块迁移,如果需要,则在本地缓存中选择待迁移的数据块,然后进入步骤(5),否则直接进入步骤(5);(5)进行时钟计数,将时钟周期计数器值LCT分配给访问的数据块,该LCT值称为该数据块的时钟周期编号DCN,然后将LCA的值加1,LTimer的值减1;(6)判断LTimer的值是否为0,如果LTimer的值为0,转步骤(7),否则转步骤(10);(7)将自身的LCT的值加1,附在时钟周期同步控制广播消息中,并将该广播消息发送给系统中所有的其他存储节点;然后接收当前时钟周期还没有结束的存储节点的响应消息;(8)判断自身的本地缓存中是否有待迁移的数据块;如果没有待迁移的数据块,则转步骤(2);如果有待迁移的数据块,则转步骤(9);(9)根据当前时钟周期还没有结束的存储节点的响应消息,在这些当前时钟周期还没有结束的存储节点中选择一个本地缓存利用率最低且低于自身本地缓存利用率的存储节点,然后将待迁移的数据块迁移到该存储节点的本地缓存中,完成后进入步骤(2);(10)当前时钟周期还没有结束的存储节点按照下述步骤接收时钟周期同步控制广播消息,并且响应该时钟周期同步控制消息,完成后进入步骤(2)(10.1)判断是否接收到主动存储节点发送的消息,主动存储节点是指发送时钟周期同步控制广播消息的存储节点;如果没有接收到,则转步骤(2);如果接收到了则转步骤(10.2);(10.2)判断时钟周期同步控制广播消息中的LCT的值是否大于自身的LCT的值;如果大于进入步骤(10.3),否则,直接转步骤(2);(10.3)响应时钟周期同步控制消息,将本地缓存中的所有数据块中的最小DCN的值MinDCN、LCA的值和自身的IP地址附在时钟周期同步控制的响应消息中,并发送时钟周期同步控制响应消息给主动存储节点;(10.4)重新设置自身的LTimer为ITimer,并且使用时钟周期同步控制广播消息中的LCT的值作为自身LCT的当前值,设置LCA的值为ICA;(11)重复上述步骤(2)-(10),直到系统停止。
本发明在原始的集群存储系统的本地存储的层次之上增加了一个全局缓存的抽象层,构成一个由系统中所有存储节点相互协作的、准确高效的全局缓存管理的方法。为了后续的描述简单起见,在本地缓存中被选择的需要进行迁移的数据块称为“候选数据块”,发生数据块迁移的存储节点称为“迁移节点”,而接收被迁移数据块的存储节点称为“接收节点”。本方法通过定量测量各个存储节点本地缓存中数据块的局部性强度以及设定各自的评价数据块局部性强弱的基准,将各个存储节点本地缓存中的数据块的局部性强度的测量结果和各自的局部性强弱的基准进行比较,为各个存储节点的本地缓存管理和候选数据块的决策提供了准确可靠的依据,消除了由于数据块的迁移而导致的不必要的磁盘访问;同时,本方法还通过定量测量各个存储节点本地缓存的利用率,将各个存储节点的本地缓存利用率的测量结果在全局范围内进行比较,为接收节点的决策提供了准确可靠的依据,平衡了各个存储节点的本地缓存的利用率。从而提供了一种用于集群存储系统的全局缓存管理的方法。
总之,本发明方法不仅能够管理好系统中各个存储节点的本地缓存、提高各自的本地缓存的命中率,还能够充分利用系统中其他存储节点的本地缓存、在不同的存储节点的本地缓存之间进行准确高效的数据块迁移,大大提高了集群存储系统的数据访问效率。


图1为本发明方法的流程示意图;图2为系统初始化的流程示意图;图3为存储节点进行本地缓存管理的流程示意图;图4为在本地缓存中选择候选数据块的流程示意图;图5为选择接收节点并且进行候选数据块迁移的流程示意图;图6为接收时钟周期的同步控制(TYC)广播消息,并且发送TYC响应消息的流程示意图。
具体实施例方式
本发明的总体策略为局部性强度较大的数据块被后续请求所访问的概率也较大,因此应该保存在存储节点的本地缓存中;局部性强度较小的数据块被后续请求所访问的概率也较小,则应该被迁移到另外一个本地缓存利用率较小的存储节点的本地缓存中,并且替换掉该存储节点本地缓存中局部性强度最小的数据块。
下面结合附图对本发明作进一步详细的说明。
如图1所示,本发明方法包括以下步骤(1)初始化系统。如图2所示,初始化按照以下步骤进行(1.1)在每个存储节点中设置一个本地时钟周期计数器(LCT)、一个本地数据块访问活动计数器(LCA)和一个本地定时器(LTimer);(1.2)为每个存储节点分配本地缓存空间;(1.3)在系统启动时,各个存储节点协商一个共同的时钟周期计数器值(ICT)——比如为零,一个共同的数据块访问活动计数器值(ICA)——比如为零,以及一个共同的定时器到期间隔值(ITimer)——比如为50;(1.4)将各自的LCT、LCA和LTimer分别设置为ICT、ICA和ITimer的值;(1.5)然后设置每个存储节点为IDLE状态,并且监控各自的数据块访问行为。
本发明可以采用使用LRU栈、LRU链表和MRU栈等作为实现各个存储节点的本地缓存管理的数据结构。在LRU栈中,当数据块被访问时它就被放置到栈顶;当数据块在后续的访问中不会被使用时就被逐渐下移到栈底,直至被替换出缓存。下面以LRU栈为例说明本发明的各实施步骤,本领域一般技术人员可以根据本发明公开的内容,设计出本发明采用LRU链表、MRU栈或其它数据结构时进行缓存管理的具体步骤。
(2)各个存储节点各自判断是否发生数据块的访问行为,如果发生了数据块的访问,则存储节点进入步骤(3),否则保持IDLE状态。
(3)存储节点利用LRU栈执行本地的缓存管理。如图3所示,本地的缓存管理按照以下步骤进行(3.1)对访问的数据块设置一个“访问计数器”(AC),用来记录数据块在本地LRU栈中被访问的次数,以及设置一个“当前访问间隔”(CAI),并且做出如下规定如果该数据块对应的AC的值等于1,则它的CAI的值就等于无穷大;如果该数据块对应的AC的值大于1,则它的CAI的值就等于它在LRU栈中相对于栈顶的当前位置;(3.2)判断访问的数据块是否是本地LRU栈中已有的数据块,如果访问的数据块是本地LRU栈中已有的数据块,则进入步骤(3.3);否则进入步骤(3.5);(3.3)将该数据块对应的AC的值加1;(3.4)将该数据块在LRU栈中之前的所有数据块依次下移,然后转步骤(3.8);(3.5)将该数据块对应的AC的值设置为1;(3.6)判断本地LRU栈中是否还有空间,如果有进入步骤(3.7),否则进入步骤(3.9);(3.7)将LRU栈中所有的数据块依次下移,然后进入步骤(3.8);(3.8)将被移动的各个数据块的CAI的值均加1,然后将访问的数据块放置在LRU栈的栈顶,并且设置该数据块的CAI的值为零,进入步骤(5);(3.9)使用该数据块的AC的值和CAI的值作为它的局部性强度的定量测量结果。其目的有两个一是为在本地缓存中选择被将要被替换掉的数据块提供定量的依据;二是为在本地缓存中选择候选的数据块提供定量的依据,其效果为AC值较大并且CAI的值较小的数据块具有的局部性强度较大,而AC的值较小而CAI的值较大的数据块具有的局部性强度较小;(3.10)比较本地LRU栈中已有的各个数据块的局部性强度的大小;首先比较AC的值。AC的值越大,则数据块的局部性强度就越大,反之则越小。当有两个或者两个以上的数据块具有相同的AC的值时,进一步比较CAI的值。CAI的值越小,则数据块的局部性强度就越大,反之则越小。当有两个或者两个以上的数据块具有相同的AC的值并且也具有相同的CAI的值时,则距离栈顶越近的数据块具有的局部性强度越大,反之则越小。
(3.11)将比较的结果中局部性强度最小的数据块作为将要被替换的数据块,并且将被选择的将要被替换的数据块在LRU栈中之前的所有数据块依次下移,然后将被移动的各个数据块的CAI的值加1;(3.12)将访问的数据块放置在LRU栈的栈顶,设置该数据块的CAI的值为零,进入步骤(4)。
在选择被替换的数据块时,还可以采用其他的方法,如根据应用程序的访问特性,预测本地LRU栈中哪些数据块在将来都不会被访问到,将这些不会被访问的数据块作为将要被替换的数据块。
(4)根据数据块的访问频率各存储节点判断是否需要在本地缓存中进行数据块迁移,如果需要,则在本地缓存中选择候选数据块,然后进入步骤(5),否则直接进入步骤(5)。
如图4所示,步骤(4)按照下述过程进行(4.1)判断本地缓存中是否存在AC的值大于1的数据块,如果存在,进入步骤(4.2),否则进入步骤(5);如果本地缓存中不存在AC的值大于1的数据块,也就是本地LRU栈中所有数据块的CAI的值都等于无穷大,则不需要选择候选数据块,因此直接转步骤(5)。
(4.2)将该存储节点本地缓存中的所有AC的值大于1的数据块中的最大的CAI的值作为本地缓存中候选数据块的选择基准(NBSBL),其效果为CAI的值小于NBSBL的数据块被认为具有较大的局部性强度,不作为候选的数据块;而CAI的值大于NBSBL的数据块则被认为具有较小的局部性强度,作为候选的数据块;(4.3)将LRU栈中的CAI的值大于NBSBL、并且距离LRU栈顶最远的那一个数据块作为候选数据块,然后转步骤(5)。
可以采用其他的方法进行候选数据块的选择,如根据应用程序的访问特性,预测本地LRU栈中哪些数据块在将来的一段时间内不会被访问到,将这些访问频率较低的数据块作为候选数据块。
(5)进行时钟计数。将LCT的值分配给访问的数据块,称为该数据块的时钟周期编号(DCN),然后将LCA的值加1,LTimer的值减1。
(6)判断LTimer的值是否为0。如果LTimer的值为0,则认为存储节点的当前时钟周期结束了,然后转步骤(7),否则认为存储节点当前时钟周期没有结束,转步骤(10)。
(7)存储节点发送时钟周期同步控制(TYC)的广播消息并且接收其他存储节点的响应。其具体方法为首先将自身的LCT的值加1并且附在TYC广播消息中,接着将该TYC消息发送给系统中所有的其他存储节点,然后接收其他存储节点的响应消息。为了避免时钟服务器性能瓶颈,不采用基于服务器的收集和广播定时信息的方法,而是采用存储节点之间的消息通信的方法。此刻,系统中的其他存储节点只会处于两种状态一种状态是当前的时钟周期已经结束了,另一种状态是当前的时钟周期还没有结束。处于第一种状态的存储节点接收到TYC广播消息后,并不响应TYC消息,而是继续执行它自身的操作步骤;处于第二种状态的存储节点接收到TYC广播消息后,立即响应TYC消息,其响应消息包括本地LRU栈中的所有数据块中的最小DCN的值(MinDCN)、LCA的值和自身的IP地址,响应TYC消息的步骤见(10)。为了后续的描述简单起见,称发送TYC广播消息的存储节点为主动存储节点,响应TYC广播消息的存储节点为响应存储节点。
(8)判断是否有候选的数据块。如果没有候选的数据块,则转步骤(2);如果有候选的数据块,则转步骤(9)。
(9)选择接收节点,并且进行候选数据块的迁移,完成后进入步骤(2)。
如图5所示,接收节点的选择以及候选数据块的迁移按照以下的步骤进行(9.1)定量测量各个响应存储节点的本地缓存利用率,并对各个响应存储节点的本地缓存利用率进行比较;各个响应存储节点的本地缓存利用率的测量方法为利用TYC响应消息中的MinDCN的值和LCA的值定量测量各个响应存储节点的本地缓存利用率。其效果为MinDCN的值和LCA的值越小,则存储节点的本地缓存利用率越低;反之,则存储节点的本地缓存利用率越高。
各个响应存储节点的本地缓存利用率的比较方法为首先比较MinDCN的值。MinDCN的值越小,则缓存利用率越低,反之则越高。当有两个或者两个以上的响应存储节点具有相同的MinDCN的值时,则比较LCA的值。LCA的值越小,则缓存利用率越低,反之则越高。当有两个或者两个以上的响应存储节点不但具有相同的MinDCN的值,而且也具有相同的LCA的值时,则认为它们的本地缓存的利用率是相同的。
(9.2)建立一个链表(ULink)的数据结构,按照缓存利用率的测量结果将各个响应存储节点的本地缓存利用率按照从低到高的顺序排列在ULink中,使得测量结果在各个响应存储节点之间具有可比性;(9.3)记录ULink链表中各个本地缓存利用率对应的存储节点的IP地址;(9.4)判断ULink中的存储节点的个数是否为0,如果是,转步骤(2),否则进入步骤(9.5);(9.5)在ULink中选择本地缓存利用率最低的存储节点,然后判断该存储节点的本地缓存利用率是否低于自身,如果ULink中满足该条件的存储节点的个数为0,转步骤(2),否则进入步骤(9.6);(9.6)判断ULink中满足该条件的存储节点的个数是否为1,如果不为1,随机选择其中的一个作为接收节点,进入步骤(9.7),否则直接进入步骤(9.7);(9.7)将候选数据块迁移到该选择的存储节点的本地缓存中;(9.8)完成候选数据块的迁移后,记下接收节点的IP地址,当下一次对该数据块进行访问时,顺着记录的路线就能够准确、快速地访问目标数据块;(9.9)撤销ULink数据结构,然后转步骤(2)。
(10)接收TYC广播消息,并且响应该TYC消息,完成后进入步骤(2)。
如图6所示,接收并且响应TYC广播消息按照以下的步骤进行(10.1)判断是否接收到主动存储节点发送的TYC广播消息。如果没有接收到,则转步骤(2);如果接收到了则转步骤(10.2);(10.2)判断TYC广播消息中的LCT的值是否大于自身的LCT的值;如果大于进入步骤(10.3),否则,直接转步骤(2);(10.3)响应TYC消息,将本地LRU栈中的所有数据块中的最小DCN的值(MinDCN)、LCA的值和自身的IP地址附在TYC的响应消息中,并发送TYC响应消息给主动存储节点;(10.4)重新设置自身的LTimer为ITimer,并且使用TYC广播消息中的LCT的值作为自身LCT的当前值,设置LCA的值为ICA。
(11)重复上述步骤(2)-(10),直到系统停止。
实例使用Trace模拟的实验手段模拟了具有10个存储节点的集群存储系统,分别评价在小文件访问和大文件访问这两种不同工作负载的情况下、采用本方法和不采用本方法时,系统的平均本地缓存命中率和平均数据块访问延时。
实验使用了如下的两种Trace,一种包含了大量的小文件的访问,另一种则包含了大量的大文件的访问(1)大量的小文件访问的Trace。该Trace是一天内从具有8个节点的并行web服务器系统中收集到的数据集,大小为532M字节,大约包含了15,000,000个HTTP请求。
(2)大量的大文件访问的Trace。该Trace是2小时内从具有7个节点的并行计算机系统中收集到的数据库访问的数据集,大小为5.2G字节。
计算平均访问延时,采用的参数如下访问本地缓存中的数据块的延时为0.012ms,访问保存在其他存储节点的本地缓存中的数据块的访问延时为2.48ms,访问磁盘上的数据块的访问延时为5.58ms。
系统初始化时采用的参数如下ICT的值为0,ICA的值为0,ITimer的值为50,存储节点的本地缓存管理所采用的数据结构为LRU栈,数据块的大小为8K字节。由于以上两种Trace的工作负载具有不同的特性,为了使实验结果更加清楚,对于第一种Trace,系统初始化时分配给每个存储节点的本地缓存空间的大小为75M字节;对于第二种Trace,系统初始化时分配给每个存储节点的本地缓存空间的大小为375M字节。
通过Trace模拟实验,得出如下的结果
(1)在小文件访问的情况下,不采用本方法的平均本地缓存命中率为90.6%,采用本方法的平均本地缓存命中率为92.6%;不采用本方法的平均数据块访问延时为0.52ms,采用本方法的平均数据块访问延时为0.41ms。
(2)在大文件访问的情况下,不采用本方法的平均本地缓存命中率为11.6%,采用本方法的平均本地缓存命中率为38.5%;不采用本方法的平均数据块访问延时为4.5ms,采用本方法的平均数据块访问延时为3.2ms。
实验结果表明本方法能够提高集群存储系统的缓存命中率,减小数据访问的延时,在大文件访问的工作负载情况下,本方法的效果尤其明显。
权利要求
1.一种用于集群存储系统的全局缓存管理的方法,其步骤包括(1)初始化系统,在每个存储节点中设置一个本地时钟周期计数器LCT、一个本地数据块访问活动计数器LCA和一个本地定时器LTimer;为每个存储节点分配本地缓存空间;在系统启动时,各个存储节点协商一个共同的时钟周期计数器值ICT、一个共同的数据块访问活动计数器值ICA、以及一个共同的定时器到期间隔值ITimer;将各自的LCT、LCA和LTimer分别设置为ICT、ICA和ITimer的值;然后设置每个存储节点为IDLE状态,并且监控各自的数据块访问行为;(2)各个存储节点各自判断是否发生数据块的访问行为,如果发生了数据块的访问,则存储节点进入步骤(3),否则保持IDLE状态;(3)存储节点进行本地缓存管理,替换局部性强度最小的数据块;(4)根据数据块的访问频率各存储节点判断是否需要在本地缓存中进行数据块迁移,如果需要,则在本地缓存中选择待迁移的数据块,然后进入步骤(5),否则直接进入步骤(5);(5)进行时钟计数,将时钟周期计数器值LCT分配给访问的数据块,该LCT值称为该数据块的时钟周期编号DCN,然后将LCA的值加1,LTimer的值减1;(6)判断LTimer的值是否为0,如果LTimer的值为0,转步骤(7),否则转步骤(10);(7)将自身的LCT的值加1,附在时钟周期同步控制广播消息中,并将该广播消息发送给系统中所有的其他存储节点;然后接收当前时钟周期还没有结束的存储节点的响应消息;(8)判断自身的本地缓存中是否有待迁移的数据块;如果没有待迁移的数据块,则转步骤(2);如果有待迁移的数据块,则转步骤(9);(9)根据当前时钟周期还没有结束的存储节点的响应消息,在这些当前时钟周期还没有结束的存储节点中选择一个本地缓存利用率最低且低于自身本地缓存利用率的存储节点,然后将待迁移的数据块迁移到该存储节点的本地缓存中,完成后进入步骤(2);(10)当前时钟周期还没有结束的存储节点按照下述步骤接收时钟周期同步控制广播消息,并且响应该时钟周期同步控制消息,完成后进入步骤(2)(10.1)判断是否接收到主动存储节点发送的消息,主动存储节点是指发送时钟周期同步控制广播消息的存储节点;如果没有接收到,则转步骤(2);如果接收到了则转步骤(10.2);(10.2)判断时钟周期同步控制广播消息中的LCT的值是否大于自身的LCT的值;如果大于进入步骤(10.3),否则,直接转步骤(2);(10.3)响应时钟周期同步控制消息,将本地缓存中的所有数据块中的最小DCN的值MinDCN、LCA的值和自身的IP地址附在时钟周期同步控制的响应消息中,并发送时钟周期同步控制响应消息给主动存储节点;(10.4)重新设置自身的LTimer为ITimer,并且使用时钟周期同步控制广播消息中的LCT的值作为自身LCT的当前值,设置LCA的值为ICA;(11)重复上述步骤(2)-(10),直到系统停止。
2.根据权利要求1所述的方法,其特征在于以使用LRU栈作为实现各个存储节点的本地缓存管理的数据结构,步骤(3)按照下述过程进行(3.1)对访问的数据块设置一个“访问计数器”AC,用来记录数据块在本地LRU栈中被访问的次数,以及设置一个“当前访问间隔”CAI,并且规定如果该数据块对应的AC的值等于1,则它的CAI的值就等于无穷大;如果该数据块对应的AC的值大于1,则它的CAI的值就等于它在LRU栈中相对于栈顶的当前位置;(3.2)判断访问的数据块是否是本地LRU栈中已有的数据块,如果访问的数据块是本地LRU栈中已有的数据块,则进入步骤(3.3);否则进入步骤(3.5);(3.3)将该数据块对应的AC的值加1;(3.4)将该数据块在LRU栈中之前的所有数据块依次下移,然后转步骤(3.8);(3.5)将该数据块对应的AC的值设置为1;(3.6)判断本地LRU栈中是否还有空间,如果有进入步骤(3.7),否则进入步骤(3.9);(3.7)将LRU栈中所有的数据块依次下移,然后进入步骤(3.8);(3.8)将被移动的各个数据块的CAI的值均加1,然后将访问的数据块放置在LRU栈的栈顶,并且设置该数据块的CAI的值为零,进入步骤(5);(3.9)使用该数据块的AC的值和CAI的值作为它的局部性强度的定量测量结果;(3.10)按照下述方法比较本地LRU栈中已有的各个数据块的局部性强度的大小;首先比较AC的值,当有两个或者两个以上的数据块具有相同的AC的值时,进一步比较CAI的值,当有两个或者两个以上的数据块具有相同的AC的值并且也具有相同的CAI的值时,则距离栈顶越近的数据块具有的局部性强度越大,反之则越小;(3.11)将比较的结果中局部性强度最小的数据块作为将要被替换的数据块,并且将被选择的将要被替换的数据块在LRU栈中之前的所有数据块依次下移,然后将被移动的各个数据块的CAI的值加1;(3.12)将访问的数据块放置在LRU栈的栈顶,设置该数据块的CAI的值为零,进入步骤(4)。
3.根据权利要求2所述的方法,其特征在于步骤(4)按照下述过程进行(4.1)判断本地缓存中是否存在AC的值大于1的数据块,如果存在,进入步骤(4.2),否则进入步骤(5);(4.2)将该存储节点本地缓存中的所有AC的值大于1的数据块中的最大的CAI的值作为本地缓存中待迁移数据块的选择基准;(4.3)将LRU栈中的CAI的值大于NBSBL、并且距离LRU栈顶最远的那一个数据块作为待迁移的数据块,然后转步骤(5)。
4.根据权利要求1、2或3所述的方法,其特征在于步骤(9)按照下述过程进行(9.1)利用时钟周期同步控制响应消息中的MinDCN的值和LCA的值定量测量各个当前时钟周期还没有结束的存储节点的本地缓存利用率,并按照下述方法对它们的本地缓存利用率进行比较首先比较MinDCN的值,当有两个或者两个以上的存储节点具有相同的MinDCN的值时,则比较LCA的值,当有两个或者两个以上的存储节点具有相同的MinDCN的值和相同的LCA的值时,认为它们的本地缓存的利用率是相同的;(9.2)建立一个链表ULink的数据结构,按照缓存利用率的测量结果将这些当前时钟周期还没有结束的存储节点的本地缓存利用率按照从低到高的顺序排列在ULink中;(9.3)记录ULink链表中各个本地缓存利用率对应的存储节点的IP地址;(9.4)判断ULink中的存储节点的个数是否为0,如果是,转步骤(2),否则进入步骤(9.5);(9.5)在ULink中选择本地缓存利用率最低的存储节点,然后判断该存储节点的本地缓存利用率是否低于自身,如果ULink中满足该条件的存储节点的个数为0,转步骤(2),否则进入步骤(9.6);(9.6)判断ULink中满足该条件的存储节点的个数是否为1,如果不为1,随机选择其中的一个,进入步骤(9.7),否则直接进入步骤(9.7);(9.7)将待迁移的数据块迁移到被选中的存储节点的本地缓存中;(9.8)完成数据块的迁移后,记下该存储节点的IP地址,当下一次对该数据块进行访问时,顺着记录的路线就能够准确、快速地访问目标数据块;(9.9)撤销ULink数据结构,然后转步骤(2)。
全文摘要
本发明公开了一种用于集群存储系统的全局缓存管理的方法。本发明在本地存储的层次之上增加全局缓存的抽象层,构成由系统中各存储节点相互协作、准确高效的全局缓存管理的方法;再通过定量测量各存储节点本地缓存中数据块的局部性强度、设定各自的评价数据块局部性强弱的基准、和定量测量各存储节点本地缓存的利用率,为节点的本地缓存管理和数据块迁移的决策提供准确可靠的依据。本发明能有效管理各存储节点的本地缓存,提高其本地缓存命中率,充分利用其他节点的本地缓存、在各节点的本地缓存之间进行准确高效的数据块迁移,消除由于数据块迁移而导致的不必要的磁盘访问,平衡各个存储节点的本地缓存的利用率,大大提高了系统的数据访问效率。
文档编号G06F15/16GK1996944SQ20061012499
公开日2007年7月11日 申请日期2006年11月9日 优先权日2006年11月9日
发明者谢长生, 蔡斌, 黄建忠, 李怀阳 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1