一种非对称磁盘阵列高速缓存调度方法

文档序号:6635297阅读:237来源:国知局
一种非对称磁盘阵列高速缓存调度方法
【专利摘要】本发明公开了一种非对称磁盘阵列高速缓存调度方法,属于计算机存储【技术领域】。本发明通过选择不参与重构的盘作为牺牲盘,减少该牺牲盘的缓存大小,并相应增加参与重构磁盘的缓存的大小,减少了对于失效盘以及参与重构盘的I/O请求次数,加速了失效盘的重构速度,减少了用户的I/O响应时间,提高了存储系统的可用性、可靠性及系统的性能。
【专利说明】_种非对称磁盘阵列局速缓存调度方法

【技术领域】
[0001]本发明属于计算机存储【技术领域】,更具体地,涉及一种非对称磁盘阵列高速缓存调度方法。

【背景技术】
[0002]可靠性与可用性是衡量在线存储服务质量的重要标准。对于为商业与工业应用提供在线服务的系统,数据丢失以及时常间断的服务往往意味着极大的经济损失。磁盘冗余阵列(Redundant Array of Independent Disk,以下简称RAID)是能够提供高可靠与高可用数据存取服务的主流选择之一。在早期的RAID规范中,例如RAID-1到RAID-5,其仅仅提供单盘容错能力。近年来,具有更高容错能力的各种RAID规范逐渐开始被采用,因其在两个或两个以上磁盘同时失效时仍然能够恢复所有丢失的数据,与此同时还能够提供无间断的在线服务。
[0003]对于存储系统,尤其是提供在线服务的存储系统,以最终用户角度来看,请求平均响应时间是评价其服务质量的重要标准。但是,当发生在磁盘阵列容忍度之内的磁盘失效时,为了能够在重构因磁盘失效而丢失的数据的同时提供在线服务,重构数据带来的读/写工作流与用户请求带来的工作流将会不可避免的相互影响,从而直接导致最终用户或者前端应用程序所享受的服务质量的下降。大量的研宄表明,相对于无故障模式,存在恢复工作流时的降级模式下的读/写请求平均响应时间会受到极大影响,往往会增长数倍至数十倍不等。与此同时,相对于线下重建,在线重建的耗时也会呈数量级的延长。因此,减小在线重构时用户请求的平均响应时间,以及缩短重构时间,是提高最终前端用户所享受的服务质量和数据可用性最为直接有效的途径。目前已有许多针对此问题的解决方案被提出,例如,针对数据分布的优化方法、针对用户工作流的优化以及针对重构工作流的优化。以上方式都已被证明能够有效的提高在线重构的性能,包括减小在线重构时用户请求的平均响应时间或者缩短重构时间。
[0004]存储缓存(Buffer Cache)被广泛的使用并且有很多Cache替换算法用来解决磁盘延迟的问题,但是常用的Cache替换算法仅考虑到RAID工作在无故障模式下,而如果磁盘阵列中一些磁盘失效,此时RAID工作在失效模式下。在失效模式下,阵列需要读取一些存活磁盘的数据来进行重构,以恢复失效盘的数据,读取的存活盘的数目由RAID结构所决定。以RAID-6为例,若n(n为大于等于3的正整数)个磁盘中存在一个失效盘,贝U需要读取n-2个存活磁盘的数据来进行重构,而有一个盘不需要参与重构的过程,也就是说,此时剩下的n-2个盘会存在大量的重构I/O。而传统高速缓存的算法并没有考虑此种情况,不针对单个磁盘划分缓存区,而是统一使用全局缓存,这使得参与重构磁盘的缓存区和不参与重构磁盘的缓存区具有相同的缓存区容量,而在实际使用过程中会造成实际到达磁盘上的I/O请求不平衡,从而一方面降低重构速度,另一方面也影响前端应用的I/O性能。


【发明内容】

[0005]针对现有技术的以上缺陷或改进需求,本发明提供一种非对称磁盘阵列高速缓存调度方法,在磁盘阵列失效的情况下,通过选择一个不参与重构的盘作为牺牲盘,减少该牺牲盘的缓存大小,并相应增加参与重构磁盘的缓存大小,从而能够减少对于失效盘以及参与重构盘的I/o请求次数,提高RAID存储系统的性能。本发明适用于磁盘阵列存在磁盘失效时,能够增加磁盘重构的速度以及减少前端用户I/O请求的响应时间,提高磁盘阵列的性能、可用性以及可靠性。
[0006]本发明提供一种非对称磁盘阵列高速缓存调度方法,包括以下步骤:
[0007]步骤I对上层到达的访问判断在存储缓存是否命中,是则执行步骤7,否则执行步骤2.’
[0008]步骤2判断所述存储缓存是否为满,是则执行步骤3,否则执行步骤5 ;
[0009]步骤3判断牺牲盘的页面数是否高于阈值,是则执行步骤4,否则执行步骤6,其中所述牺牲盘为不参与重构的磁盘;
[0010]步骤4取所述牺牲盘上的冷页面,进行替换;
[0011]步骤5在所述存储缓存中取一页空页面,将用户请求的数据缓存到所述空页面中;
[0012]步骤6取所述存储缓存所有页面中的冷页面,进行替换;
[0013]步骤7读写数据,更改页面的位置或状态。
[0014]本发明还提供一种非对称磁盘阵列高速缓存调度方法,包括以下步骤:
[0015]步骤I对上层到达的访问判断在存储缓存是否命中,是则执行步骤7,否则执行步骤2.’
[0016]步骤2判断所述存储缓存是否为满,是则执行步骤3,否则执行步骤5 ;
[0017]步骤3判断牺牲盘上的响应时间是否小于其他磁盘上的响应时间,是则执行步骤4,否则执行步骤6,其中所述牺牲盘为不参与重构的磁盘;
[0018]步骤4取所述牺牲盘上的冷页面,进行替换;
[0019]步骤5在所述存储缓存中取一页空页面,将用户请求的数据缓存到所述空页面中;
[0020]步骤6取所述存储缓存所有页面中的冷页面,进行替换;
[0021]步骤7读写数据,更改页面的位置或状态。
[0022]总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0023]本发明在磁盘阵列失效的情况下通过减少牺牲盘上的缓存,减少失效盘以及重构盘上的I/o。通过设置牺牲盘上的阈值,当牺牲盘的页面数高于阈值时,优先替换牺牲盘上的页面,从而增加了参与重构盘上的页面数,提高了参与重构盘上的命中率,减少了用户I/O对重构I/O流的影响,加快了重构速度,缩短了重构时间,同时,也降低了重构I/O流对用户I/o流的影响,缩短了用户I/O的响应时间。对整个系统而言,本发明能够提高整个磁盘阵列的性能,并且能够提高存储系统的可靠性及系统的性能。

【专利附图】

【附图说明】
[0024]图1为本发明非对称磁盘阵列高速缓存调度方法的原理示意图;
[0025]图2为本发明非对称磁盘阵列高速缓存调度方法的流程图;
[0026]图3为本发明基于LRU的非对称磁盘阵列高速缓存调度方法在RAID-6上的流程图;
[0027]图4为本发明基于LRU的非对称磁盘阵列高速缓存调度方法在RAID-10上的流程图。

【具体实施方式】
[0028]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0029]图1所示为本发明非对称磁盘阵列高速缓存调度方法的原理示意图,当磁盘阵列(即磁盘I?磁盘η)中出现失效盘磁盘时,磁盘阵列管理模块会启动重构的进程,重构的进程会根据RAID布局对参与重构的磁盘(即磁盘I?磁盘s-1)下发重构I/O流,重构I/O流如图1中虚线箭头所示。此时磁盘阵列仍需要提供在线服务,会产生用户I/O请求,用户I/O请求根据RAID的布局实现逻辑地址到物理地址的转换,并经过I/O调度层实现I/O合并等操作。此时用户I/o请求会到达磁盘的Buffer Cache,如果在Buffer Cache中命中,则直接读写返回;如果不命中,会对磁盘产生用户I/O流,用户I/O流如图1中实线箭头所示。Buffer Cache管理模块管理Buffer Cache中的页(page),包括替换、刷新等。在本发明中,通过修改Buffer Cache的管理策略,实现一种不对称的分配方式。如图1中如示,记录不同磁盘的缓存页(page cache),通过减少不参与重构盘(磁盘s?磁盘η)的缓存,即牺牲盘的缓存,增加参与重构盘的缓存,减少用户I/O流和重构I/O流的相互影响。
[0030]图2所示为本发明非对称磁盘阵列高速缓存调度方法的流程图,具体包括以下步骤:
[0031 ] 步骤201对上层到达的访问判断在Buffer Cache是否命中,是则执行步骤207,否则执行步骤202 ;
[0032]步骤202判断Buffer Cache是否为满,是则表示Buffer Cache没有空闲,执行步骤203,否则表示有空页面,执行步骤205,;
[0033]步骤203判断牺牲盘的页面数是否高于阈值,是则执行步骤204,即减少牺牲盘上缓存,否则执行步骤206,其中阈值的设定可以与用户I/O请求的到达率相关,随着用户I/O请求的到达率增加,阈值增加;
[0034]步骤204取牺牲盘上的冷页面,进行替换,其中,选择牺牲盘冷页面的方法与下层具体的cache替换算法有关;
[0035]步骤205在Buffer Cache中取一页空页面,将用户请求的数据缓存到该空页面中;
[0036]步骤206取Buffer Cache所有页面中的冷页面,进行替换,其中,选择所有页面中冷页面的方法与下层具体的cache替换算法有关;
[0037]步骤207读写数据,更改页面的位置或状态,更改的方法与下层具体的cache替换算法有关。
[0038]其中,替换包括两步:首先判断页面是否为脏,如果为脏,则数据要先写回,再执行下一步,否则,直接执行下一步,即,将要访问的数据读入缓存。
[0039]更进一步,可以根据响应时间来判断是否继续减少牺牲盘上缓存。即步骤203可以为判断牺牲盘上的响应时间是否小于其他磁盘上的响应时间,若其他磁盘上响应时间大于牺牲盘的响应时间,则牺牲盘的缓存可以继续替换,即执行步骤204 ;若其他磁盘上响应时间小于牺牲盘的响应时间,则牺牲盘的缓存暂时不进行替换,即执行步骤206。
[0040]实施例一:
[0041]下面以基于RAID-6系统中η个磁盘中的I个磁盘失效为例(η大于等于3),将本发明非对称磁盘阵列高速缓存调度方法与最近最少使用页面置换算法(Least RecentlyUsed,以下简称LRU)结合起来描述本发明的具体实施。
[0042]在LRU类型的算法中,缓存页的权重由存储时间间隔来决定,其表示最后存储的时间戳(timestamp),即访问序列号。在本发明实施例中基于LRU的非对称磁盘阵列高速缓存调度方法需要保持上述的评估方法,由权重决定哪一个缓存页将被剔除。
[0043]在本发明实施例中,Buffer Cache结构包括全局LRU链表和局部LRU链表,每个磁盘对应一个局部LRU链表,局部LRU链表存储的是同一个磁盘的缓存页,全局LRU链表存储的是全部磁盘的缓存页。
[0044]RAID-6在一个磁盘失效的情况下,需要读取剩下的n_2个磁盘重构失效盘上的数据,即可以有一个牺牲盘,该牺牲盘可以在η-1个存活磁盘中任选一个。
[0045]图3所示为本发明基于LRU的非对称磁盘阵列高速缓存调度方法在RAID-6上的流程图,具体包括以下步骤:
[0046]步骤301对上层访问的数据块,判断Buffer Cache是否命中,是则执行步骤307,否则执行步骤302 ;
[0047]步骤302判断Buffer Cache是否为满,是则表示Buffer Cache没有空闲,转入步骤303,否则表示有空页面,转入步骤305 ;
[0048]步骤303判断牺牲盘的页面数是否高于阈值,是则执行步骤304,否则执行步骤306 ;
[0049]步骤304取牺牲盘对应的局部LRU链表的链尾,即牺牲盘的冷页面,进行替换;
[0050]步骤305在Buffer Cache中取一页空页面,将用户请求的数据缓存到该空页面中,读写数据;
[0051]步骤306取全局LRU链表的链尾,即所有页面中的冷页面,进行替换;
[0052]步骤307读写数据,将页面插入全局LRU链表以及该页面所属磁盘局部LRU链表的表头。
[0053]实施例二:
[0054]下面以基于RAID-10系统中η个磁盘中的I个磁盘失效为例(η大于等于4),将本发明非对称磁盘阵列高速缓存调度方法与LRU算法结合起来描述本发明的具体实施。
[0055]在本发明实施例中,Buffer Cache结构包括全局LRU链表和局部LRU链表,每个磁盘对应缓存中的一个局部LRU链表,局部LRU链表存储的是同一个磁盘的缓存页,全局LRU链表存储的是全部磁盘的缓存页。
[0056]RAID-10在一个磁盘失效的情况下,需要读取失效盘的镜像盘来重构数据,即剩下的n-2个磁盘都是牺牲盘。
[0057]图4为本发明基于LRU的非对称磁盘阵列高速缓存调度方法在RAID-10上的流程图,具体包括以下步骤:
[0058]步骤401对上层访问的数据块,判断Buffer Cache是否命中,是则执行步骤407,否则执行步骤402 ;
[0059]步骤402判断Buffer Cache是否为满,是则表示Buffer Cache没有空闲,转入步骤403,否则表示有空页面,转入步骤405 ;
[0060]步骤403判断牺牲盘的页面数是否高于阈值,是则执行步骤404,否则执行步骤406 ;
[0061]步骤404取牺牲盘上最近最少使用的页面,即牺牲盘的冷页面,进行替换;
[0062]步骤405在Buffer Cache中取一页空页面,将用户请求的数据缓存到该空页面中,进彳丁读与;
[0063]步骤406取全局LRU链表的链尾,即所有页面中的冷页面,进行替换;
[0064]步骤407进行读写,将页面插入全局LRU链表以及该页面所属磁盘局部LRU链表的表头。
[0065]在步骤404中寻找牺牲盘上最近最少使用的页面(即冷页面)可以通过全局LRU链表查找,从全局LRU链表的尾部向上找到第一个牺牲盘的页面即是牺牲盘上最近最少使用的页面。
[0066]优选地,在步骤404中寻找牺牲盘上最近最少使用的页面还可以通过局部LRU链表。通过对比各个牺牲盘的局部LRU链表链尾的时间戳得到牺牲盘上最近最少使用的页面。
[0067]进一步优选地,上述寻找方法还可以轮转各个牺牲盘的局部LRU链表的链尾作为牺牲设备上最近最少使用的页面。
[0068]本发明不限于与LRU算法结合使用,还可以与LFU(least frequently used)、LRFU (least recently/frequently used) >2Q (Two Queue)、MQ (Mult1-Queue)、LIRS (LowInter-reference Recency Set)、ARC(Adaptive Replacement Cache)等结合使用,其中冷页面的选取与上述具体算法中缓存页的权重计算方法有关。
[0069]本发明提供一种非对称磁盘阵列高速缓存调度方法,通过减少牺牲盘上的缓存大小,优先保留重构盘以及失效盘中的缓存页,减少了对于重构盘以及失效盘的访问次数,从而减少了 I/o请求次数,加速了失效盘的重构速度,以及减少用户I/O请求的响应时间,提高存储系统的可用性、可靠性及系统的性能。
[0070]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种非对称磁盘阵列高速缓存调度方法,其特征在于,包括: 步骤I对上层到达的访问判断在存储缓存是否命中,是则执行步骤7,否则执行步骤2 ; 步骤2判断所述存储缓存是否为满,是则执行步骤3,否则执行步骤5 ; 步骤3判断牺牲盘的页面数是否高于阈值,是则执行步骤4,否则执行步骤6,其中所述牺牲盘为不参与重构的磁盘; 步骤4取所述牺牲盘上的冷页面,进行替换; 步骤5在所述存储缓存中取一页空页面,将用户请求的数据缓存到所述空页面中; 步骤6取所述存储缓存所有页面中的冷页面,进行替换; 步骤7读写数据,更改页面的位置或状态。
2.如权利要求1所述的方法,其特征在于,当所述非对称磁盘阵列高速缓存调度方法应用于RAID-6系统,其中η个磁盘中的I个磁盘失效时,所述牺牲盘在η_1个存活磁盘中任选一个,读取剩下的n-2个磁盘用于重构失效盘上的数据,其中η大于等于3。
3.如权利要求1所述的方法,其特征在于,当所述非对称磁盘阵列高速缓存调度方法应用于RAID-1O系统,其中η个磁盘中的I个磁盘失效时,读取失效盘的镜像盘用于重构数据,剩下的n-2个磁盘都是牺牲盘,其中η大于等于4。
4.如权利要求1所述的方法,其特征在于,所述阈值的设定与用户I/O请求的到达率相关,随着用户I/O请求的到达率增加,所述阈值增加。
5.如权利要求1-4中任一项所述的方法,其特征在于,当所述非对称磁盘阵列高速缓存调度方法基于LRU算法时,所述存储缓结构包括全局LRU链表和局部LRU链表,其中所述局部LRU链表存储的是同一个磁盘的缓存页,所述全局LRU链表存储的是全部磁盘的缓存页。
6.如权利要求5所述的方法,其特征在于,在所述步骤4中,所述牺牲盘上的冷页面为所述牺牲盘对应的局部LRU链表的链尾,在所述步骤6中,所述存储缓存所有页面中的冷页面为所述全局LRU链表的链尾。
7.如权利要求5所述的方法,其特征在于,在所述步骤4中,所述牺牲盘上的冷页面为从所述全局LRU链表的尾部向上找到第一个牺牲盘的页面,在所述步骤6中,所述存储缓存所有页面中的冷页面为所述全局LRU链表的链尾。
8.一种非对称磁盘阵列高速缓存调度方法,其特征在于,包括: 步骤I对上层到达的访问判断在存储缓存是否命中,是则执行步骤7,否则执行步骤2 ; 步骤2判断所述存储缓存是否为满,是则执行步骤3,否则执行步骤5 ; 步骤3判断牺牲盘上的响应时间是否小于其他磁盘上的响应时间,是则执行步骤4,否则执行步骤6,其中所述牺牲盘为不参与重构的磁盘; 步骤4取所述牺牲盘上的冷页面,进行替换; 步骤5在所述存储缓存中取一页空页面,将用户请求的数据缓存到所述空页面中; 步骤6取所述存储缓存所有页面中的冷页面,进行替换; 步骤7读写数据,更改页面的位置或状态。
【文档编号】G06F3/06GK104503923SQ201410674375
【公开日】2015年4月8日 申请日期:2014年11月21日 优先权日:2014年11月21日
【发明者】曹强, 万胜刚, 吴思, 谢长生 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1