基于带宽比较的磁盘阵列扩容时校验更新方式选择方法与流程

文档序号:14529059阅读:462来源:国知局
基于带宽比较的磁盘阵列扩容时校验更新方式选择方法与流程

本发明属于计算机磁盘阵列扩容技术领域,具体涉及通过比较更新校验块集合所需读取的数据块个数来选择最优校验更新方式的方法。



背景技术:

在现代存储领域中,单个磁盘往往难以满足用户的需求,磁盘阵列是由很多价格较便宜的磁盘组合成一个容量巨大的磁盘组,并充分利用每个磁盘的并行性,能够提供较大的存储空间和读写带宽以满足用户需求。然而随着用户数据的增多和用户需求的提高,磁盘阵列往往需要进行扩容,而扩容过程中为保证每个磁盘负载均衡,一般会涉及到数据迁移,数据迁移时需要对校验数据进行更新,以保证系统的可靠性。更新磁盘阵列的校验数据有两种方式,一种是通过读取产生校验块条带内变化的数据和原始校验数据来产生新的校验数据,即“读-改-写”;另一种是读取产生校验块的所有数据来重新生成新的校验数据,即“读-重构-写”。不同的场景下两种方式各有优劣,选择最佳的校验数据更新方式不仅能缩短扩容所需要的时间,而且还能降低扩容过程中用户请求的响应时间。然而以往的扩容方法很少考虑校验数据更新方式的选择,而且没有一种统一的方法来选择扩容时校验数据更新方式。电气与电子工程师协会《并行处理国际会议论文集》(2012 41st International Conference on Parallel Processing(ICPP),2012年9月,第460–469页)所介绍的对于容一错的冗余磁盘阵列的扩容方法(GSR)并没有考虑不同的校验数据更新方式的带宽开销差异。电气与电子工程师协会《并行和分布式系统国际会议论文集》(2014 20th International Conference on Parallel and Distributed Systems(ICPADS),2014年12月,第518–525页)所介绍的对于柯西里德所罗门码(CRS)的扩容方法也没有考虑不同的校验数据更新方式的带宽开销,而只是简单的使用“读-改-写”的方式来更新扩容时的校验数据,这些方法在某些扩容场景下,会因为更新校验数据带来过高的带宽开销。



技术实现要素:

本发明的目的是提出一种基于带宽比较的磁盘阵列扩容时校验更新方式选择方法,以弥补现有扩容方法的缺陷,在保证校验数据一致性的前提下,最小化更新校验数据所需要读取的数据量,节省网络带宽,加快扩容过程的完成,缩短扩容过程中用户请求的平均响应时间。

本发明基于带宽比较的磁盘阵列扩容时校验更新方式选择方法,包括以下步骤:

第一步:设计建立存储结构,并进行相应的初始化;

定义如下标识符表示相应的存储结构:

A--一个扩容单元中的校验块集合,扩容单元是指一个或数个条带,每个扩容单元的数据操作方法完全一样,

B--一个扩容单元中迁移的数据块集合,

C--使用“读-改-写”方式更新一个扩容单元中所有校验块所需读取的额外数据块集合,

D--使用“读-重构-写”方式更新一个扩容单元中所有校验块所需读取的额外数据块集合,

E--扩容前产生校验块P的数据块集合,

F--扩容后产生校验块P’的数据块集合,扩容前的校验块P变为扩容后相应的校验块P’,其中校验块P’是取自集合A的一个元素,

G--使用“读-改-写”方式将校验块P更新为P’所需额外读取的数据块集合,

m--使用“读-改-写”方式更新一个扩容单元中的检验数据所需读取的额外数据块个数,

n--使用“读-重构-写”方式更新一个扩容单元中的校验数据所需读取的额外数据块个数;

初始化集合A、B、C、D、E、F为空集

第二步:计算任意一个扩容场景的一个扩容单元,令A包含一个扩容单元中的所有校验块,B包含一个扩容单元中所有迁移的数据块,m=|A|,|A|表示求集合A中元素的个数,n=0;

第三步:对于集合A中的每一个元素P’计算扩容前产生相应的校验块P的数据块集合E和扩容后产生校验块P’的数据块集合F,计算集合G=(E∪F)-(E∩F),符号∪表示求集合的并集,∩表示求集合的交集,-表示求集合的差集;更新集合A=A-{P’};

第四步:更新集合C、D和变量m,检查A是否为空集,如果不是,则跳转到第三步,否则执行第五步;具体的更新规则:令C=C∪G,即C等于C与G的并集;令D=D∪F;如果G为空集,则令m=m-1;令E、F为空集;

第五步:根据C=C-B,D=D-B,m=m+|C|,n=|D|,计算集合C、D和变量m,n;比较m、n的值的大小,如果m小于n,则选择“读-改-写”方式来更新校验数据,否则选择“读-重构-写”方式来更新校验数据。

本发明基于带宽比较的磁盘阵列扩容时校验更新方式选择方法,采取了设计存储结构、计算不同方式更新一个扩容单元中的校验数据所需读取的数据块个数、比较两种方式的带宽开销并选择带宽开销最小的方式来更新校验数据的操作步骤,可以快速决定任意一种扩容场景下最有优势的校验更新方式;该方法可以最小化扩容过程中更新校验数据所需要的带宽,加快扩容过程的完成,提高系统在扩容过程中的性能;本发明提供了一种系统的统一的方法,来帮助选择扩容过程中最优的检验更新方式。

附图说明

图1为柯西里德所罗门码CRS扩容前的编码示意图。

图2为柯西里德所罗门码CRS扩容后的编码示意图。

图3为按照本发明方法进行扩容过程中校验更新方式选择的总体操作流程示意图。

具体实施方式

下面结合附图通过具体实例对本发明基于带宽比较的磁盘阵列扩容时校验更新方式选择方法作进一步的详细说明。

实施例1:

本实施例对基于采用CRS码构成的冗余磁盘阵列由4个盘(2个数据盘2个校验盘)扩容到6个盘(4个数据盘2个校验盘)的扩容场景,结合附图3所给出的按照本发明方法进行扩容过程中校验更新方式选择的总体操作流程示意图,来阐述基于带宽比较的磁盘阵列扩容时校验更新方式选择方法的具体实施过程。

本实施例基于带宽比较的磁盘阵列扩容时校验更新方式选择方法,具体包括以下步骤:

第一步:构建存储结构,并进行相应的初始化;

定义如下标识符表示相应的存储结构:

A--一个扩容单元中的校验块集合,扩容单元是指一个或数个条带,每个扩容单元的数据操作方法完全一样,

B--一个扩容单元中迁移的数据块集合,

C--使用“读-改-写”方式更新一个扩容单元中所有校验块所需读取的额外数据块集合,

D--使用“读-重构-写”方式更新一个扩容单元中所有校验块所需读取的额外数据块集合,

E--扩容前产生校验块P的数据块集合,

F--扩容后产生校验块P’的数据块集合,扩容前的校验块P变为扩容后相应的校验块P’,其中校验块P’是取自集合A的一个元素,

G--使用“读-改-写”方式将校验块P更新为P’所需额外读取的数据块集合,

m--使用“读-改-写”方式更新一个扩容单元中的检验数据所需读取的额外数据块个数,

n--使用“读-重构-写”方式更新一个扩容单元中的校验数据所需读取的额外数据块个数;

初始化集合A、B、C、D、E、F为空集--参见总体操作流程示意图附图3中的构建存储结构初始化步骤①;

第二步:计算本实施例的一个扩容单元,本实施例的一个扩容单元就是一个条带。

附图1给出了采用柯西里德所罗门码CRS扩容前一个条带的编码示意图,其中附图1中的左边是扩容前的编码矩阵,中间部分表示数据盘,其中d0,d1,d2,d3存放在磁盘1中,d4,d5,d6,d7存放在磁盘2中,右边部分表示校验盘数据,c0,c1,c2,c3存放在校验磁盘1中,c4,c5,c6,c7存放在校验磁盘2中;

附图2给出了采用柯西里德所罗门码CRS扩容后一个条带的编码示意图,其中附图2中的左边是扩容后的编码矩阵,中间部分表示数据盘,d0,d1存放在磁盘1中,d4,d5存放在磁盘2中,d2,d3存放在磁盘3中,d6,d7存放在磁盘4中,其中d2,d3从磁盘1迁移到新增加的磁盘3,d6,d7是从磁盘2迁移到新增加的磁盘4,右边部分表示校验盘数据,c0’,c1’,c2’,c3’,c4’,c5’,c6’,c7’分别由c0,c1,c2,c3,c4,c5,c6,c7更新得来的,c0’,c1’,c2’,c3’存放在校验磁盘1中,c4’,c5’,c6’,c7’存放在校验磁盘2中;更新集合A、B和变量m、n,--参见总体操作流程示意图附图3中的提取一个扩容单元的校验块集合和迁移的数据块集合的步骤②,令A={c0’,c1’,c2’,c3’,c4’,c5’,c6’,c7’},B={d2,d3,d6,d7};计算m,n的初值,m=|A|=8,n=0;

第三步:从集合A中选择一个元素c0’,计算扩容前产生相应的校验块c0的数据块集合E={d0,d4};计算产生c0’的数据块集合F={d0,d4,d2,d6};计算集合G=(E∪F)-(E∩F)={d0,d4,d2,d6}-{d0,d4}={d2,d6},更新A=A-{c0’}={c1’,c2’,c3’,c4’,c5’,c6’,c7’}--参见总体操作流程示意图附图3中的对一个扩容单元中的校验块处理步骤③;

第四步:参见总体操作流程示意图附图3中的更新两种方式所需读取的数据块集合步骤④;令然后判断A不为空,跳转到步骤三--参见总体操作流程示意图附图3中的判断校验块是否处理完毕的步骤⑤,以此类推,直到A为此时C={d2,d3,d6,d7},D={d0,d1,d2,d3,d4,d5,d6,d7};

第五步:参见总体操作流程示意图附图3中的确定选择方式步骤⑥,计算集合C、D和m,n的值;D=D-B={d0,d1,d4,d5};m=8+|C|=8,n=|D|=4;比较m、n,得出m>n,算法得出在该扩容场景下使用“读-重构-写”来更新校验数据更有优势。

在本实施例中,通过基于比较更新校验块所需读取的数据集合来选择磁盘阵列扩容过程中校验数据更新方式的方法,得出了相比于“读-改-写”方式,使用“读-重构-写”方式更新一个扩容单元中的校验数据可以少读4个数据块,相比于传统的只考虑使用“读-改-写”方式来更新校验数据,本方法可以减少50%的因更新校验数据带来的读带宽开销,加快扩容过程,提高系统在扩容过程中的性能。

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