发明名称 一种水平型分组并行分布校验的磁盘阵列的构建方法
摘要 本发明涉及一种水平型分组并行分布校验的磁盘阵列的构建方法,适用于连续数据存储,属于独立磁盘冗余阵列技术领域。本发明针对连续数据存储的特点,设计实现一种水平型分组并行分布校验的磁盘阵列SHE-RAID 5,主要包括:存储数据在SHE-RAID 5上的布局、存储数据的读写、校验数据的生成方式、写数据时的数据缓冲与预读优化、磁盘工作状态转换调度等。磁盘阵列SHE-RAID5不但具有良好的冗余数据保护机制,而且能显著降低功耗,延长使用寿命。
申请公布号 CN101976176A 申请公布日期 2011.02.16
申请号 CN201010256699.X 申请日期 2010.08.19
申请人 北京同有飞骥科技有限公司 发明人 周泽湘;孙志卓;谭毓安;武志民;肖建国;李焰;方仑;张伟涛
分类号 G06F3/06(2006.01)I;G06F12/06(2006.01)I 主分类号 G06F3/06(2006.01)I
代理机构 代理人
主权项 1.一种水平型分组并行分布校验的磁盘阵列的构建方法;水平型分组并行分布校验的磁盘阵列,简称为磁盘阵列SHE-RAID 5;其特征在于:应用于磁盘阵列包含N个磁盘的场景中,其中N≥3且N为正整数;将N个磁盘构造成1行×N列的磁盘矩阵;对全部磁盘进行条带划分,分成N个条带并为每个条带顺序编号,每个条带上有N个存储块,其中1个为校验块,另外N-1个为数据块,校验块由同条带内的N-1个数据块通过异或运算得出,N个校验块顺序分布在阵列的不同磁盘上;用X(i,j)表示磁盘阵列SHE-RAID 5中的一个存储块,其中j表示该存储块所在磁盘的序号,存储块X(i,j)位于磁盘j上;i表示该存储块所在条带;1≤i,j≤N;则存储块X(i,N+1-i)为校验块,用P(i,j)表示;其它存储块为数据块,用L(u,v)表示,其中u表示数据块所在条带的序号,1≤u≤N,v表示该数据块在所属条带内的数据块的序号,序号从1开始,1≤v≤N-1;数据块L(u,v)与存储块的对应关系满足公式1:<maths num="0001"><![CDATA[<math><mrow><mi>L</mi><mrow><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>X</mi><mrow><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>)</mo></mrow></mtd><mtd><mi>u</mi><mo>+</mo><mi>v</mi><mo>&lt;</mo><mi>N</mi><mo>+</mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>X</mi><mrow><mo>(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mtd><mtd><mi>u</mi><mo>+</mo><mi>v</mi><mo>&GreaterEqual;</mo><mi>N</mi><mo>+</mo><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>为了提高连续存储带宽,并获得不同的连续存储带宽,以满足不同存储速率的需求,将每个条带上的N-1个数据块平均分成p组,p≥2且p为正整数,每组包含q个数据块,q≥1且q为正整数,q值根据实际存储任务对连续带宽的需求确定;并满足以下关系:N-1=p×q;每个数据块分成K个大小相等的数据子块,K≥2且K为正整数,然后按照条带顺序依次为全部数据子块编号,同一条带内的数据子块,按照组顺序编号;即:首先为第一条带第1组的第1个数据块中第1个数据子块编号为1;为第一条带中第1组的第2个数据块中第1个数据子块编号为2;……;为第一条带中第1组的第q个数据块中第1个数据子块编号为q;然后为第一条带中第1组的第1个数据块中第2个数据子块编号为q+1;为第一条带第1组的第2个数据块中第2个数据子块编号为q+2;……;为第一条带中第1组的第q个数据块中第2个数据子块编号为2×q;……;以此类推,为第一条带中第1组的第1个数据块中第K个数据子块编号为(K-1)×q+1;为第一条带第1组的第2个数据块中第K个数据子块编号为(K-1)×q+2;……;为第一条带中第1组的第q个数据块中第K个数据子块编号为K×q;然后为第一条带第2组的第1个数据块中第1个数据子块编号为K×q+1;为第一条带中第2组的第2个数据块中第1个数据子块编号为K×q+2;……;为第一条带中第2组的第q个数据块中第1个数据子块编号为(K+1)×q;然后为第一条带中第2组的第1个数据块中第2个数据子块编号为(K+1)×q+1;为第一条带第2组的第2个数据块中第2个数据子块编号为(K+1)×q+2;……;为第一条带中第2组的第q个数据块中第2个数据子块编号为(K+2)×q;……;以此类推,为第一条带中第2组的第1个数据块中第K个数据子块编号为2×K×q-q+1;为第一条带第2组的第2个数据块中第K个数据子块编号为2×K×q-q+2;……;为第一条带中第2组的第q个数据块中第K个数据子块编号为2×K×q;然后为第一条带第p组的第1个数据块中第1个数据子块编号为(p-1)×K×q+1;为第一条带中第p组的第2个数据块中第1个数据子块编号为(p-1)×K×q+2;……;为第一条带中第p组的第q个数据块中第1个数据子块编号为(p-1)×K×q+q;然后为第一条带中第p组的第1个数据块中第2个数据子块编号为(p-1)×K×q+q+1;为第一条带第p组的第2个数据块中第2个数据子块编号为(p-1)×K×q+q+2;……;为第一条带中第p组的第q个数据块中第2个数据子块编号为(p-1)×K×q+q×2;……;以此类推,为第一条带中第p组的第1个数据块中第K个数据子块编号为p×K×q-q+1;为第一条带第p组的第2个数据块中第K个数据子块编号为p×K×q-q+2;……;为第一条带中第p组的第q个数据块中第K个数据子块编号为p×K×q;以此类推,按照相同的编号原则,为第二条带至第N条带的数据子块进行编号;编号相邻的数据子块,其逻辑地址相邻;同一条带内序号相邻的组,其逻辑地址相邻;相邻条带中,前一条带的最后一组与后一条带的第一组的逻辑地址相邻;每个校验块也分成K个大小相等的校验子块,校验子块由所在条带中偏移位置相同的N-1个数据子磁盘阵列块异或运算而得,这样的N-1个数据子块及其异或生成的校验子块组成一个校验条;上述布局方式,可并行访问组内的q个数据块,又使存储任务分布在一组内,其余p-1组数据块所在磁盘没有任务,这样便于调度没有任务的磁盘进入到停止状态,以达到节能和降低磁盘损耗的目的;所述方法进一步包括:控制磁盘工作状态的方法;磁盘工作状态包括:停止、运行、就绪三种状态;磁盘停止状态时,磁盘转轴停止旋转、磁头停止寻道;磁盘运行状态时,磁盘正在执行读写操作,包括转轴旋转、磁头寻道;磁盘就绪状态时,表示将要被读写,此时磁盘转轴旋转、磁头不寻道;进行连续写操作时,绝大部分时间里,只有一组数据块所在磁盘和1个校验块所在磁盘处于运行状态,没有工作的磁盘被调度到停止状态,以达到节能的目的,磁盘工作状态转换调度策略具体为:为每个磁盘设置一个信号量,用Sem i表示,1≤i≤N,设置信号量Sem i的初始值均为0;第1步:根据访问数据的逻辑地址,用LBA表示,计算出该访问数据所在数据块所属的条带u以及所属的组,用r表示;通过公式2得到:<img file="FSA00000234257500031.GIF" wi="1909" he="294" />其中,条带大小表示条带内各数据块数据之和,组大小为组内各数据块数据之和,MOD表示模运算,加1表示条带编号和组编号均从1开始;然后,使用公式1进一步得到第u条带第r组内的q个数据块L(u,r×q-q+1)、L(u,r×q-q+2)、……、L(u,r×q-q+q)的所属磁盘,以及同条带内校验块所属磁盘为N+1-u,并对第u条带第r组内的q个数据块的所在磁盘和磁盘N+1-u分别处理:若该磁盘处于停止状态,则调度到就绪状态;条带序号u和组序号r分别用于记录当前访问操作的条带序号和组序号;第2步:当第u条带第r组内的q个数据块的所在磁盘和磁盘N+1-u处于就绪状态时,分别向这q+1磁盘进行写操作时,进行写操作的磁盘由就绪状态转为运行状态;第3步:如果本次访问在第u条带第r组内结束,则本次访问结束后,第u条带第r组内的q个数据块所属磁盘及同条带内的校验块所属磁盘N+1-u由运行状态转为就绪状态,然后退出本次调度;否则,在第u条带第r组访问结束前t时刻,t为磁盘由停止状态转为就绪状态所需要的时间,确定相邻组的条带编号,用I表示,及组编号,用R表示,并对第I条带第R组内q个数据块所属磁盘及第I条带内的校验块所属磁盘N+1-I分别处理:若该磁盘处于停止状态,则调度到就绪状态;若该磁盘处于运行状态,则该磁盘的磁盘信号量加1;在第u条带第r组访问结束后,对第u条带第r组内的q个数据块所属磁盘及第u条带内的校验块所属磁盘N+1-u分别处理:将该磁盘对应的信号量减1,如果该磁盘的信号量小于0,则将该磁盘由运行状态转为停止状态,并重新设置该磁盘的信号量为0;否则,将该磁盘由运行状态转为就绪状态;第4步:把记录当前访问所在条带序号的u值更新为I,将记录当前访问所在组序号的r的值更新为R,重复执行第2步到第4步;进行连续读操作时,绝大部分时间里,也只有一组数据块所在磁盘和1个校验块所在磁盘处于运行状态,磁盘工作状态转换调度策略与连续写操作相同。
地址 100081 北京市海淀区中关村南大街36号湖北大厦18号