CN101976177B - 一种垂直型分组并行集中校验的磁盘阵列的构建方法 - Google Patents
一种垂直型分组并行集中校验的磁盘阵列的构建方法 Download PDFInfo
- Publication number
- CN101976177B CN101976177B CN201010256711A CN201010256711A CN101976177B CN 101976177 B CN101976177 B CN 101976177B CN 201010256711 A CN201010256711 A CN 201010256711A CN 201010256711 A CN201010256711 A CN 201010256711A CN 101976177 B CN101976177 B CN 101976177B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- band
- group
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明涉及一种垂直型分组并行集中校验的磁盘阵列的构建方法,适用于连续数据存储,属于独立磁盘冗余阵列技术领域。本发明针对连续数据存储的特点,设计实现一种垂直型分组并行集中校验的磁盘阵列SVE-RAID4,主要包括:存储数据在SVE-RAID 4上的布局、存储数据的读写、校验数据的生成方式、写数据时的数据缓冲与预读优化、磁盘工作状态转换调度等。磁盘阵列SVE-RAID 4不但具有良好的冗余数据保护机制,而且能显著降低功耗,延长使用寿命。
Description
技术领域
本发明涉及一种独立磁盘冗余阵列(Redundant Arrays of IndependentDisks,RAID)的构建方法,特别涉及一种垂直型分组并行集中校验的磁盘阵列的构建方法,适用于连续数据存储,属于独立磁盘冗余阵列技术领域。
背景技术
在现代存储领域,为了提高存储数据的可靠性和改善存储系统的输入、输出性能,人们设计了多种数据存储方案,这些数据存储方案通常是各种类型的独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID)。通过使用特定的硬件或软件,RAID把多个物理存储设备如磁盘,联合起来,形成一个统一的逻辑存储设备。
下面对RAID中常用的技术术语进行解释:
条带:又称为Stripe;是磁盘阵列的不同磁盘上的位置相关的分块的集合,是组织不同磁盘上条块的单位。
条带化:又称为Striping;是指把一段连续数据分割成相同大小的数据块,把每段数据分别写入到磁盘阵列的不同磁盘上的方法。
磁盘镜像是指复制源数据到一个或更多的磁盘上,
错误修正是指利用某种运算,如异或运算,生成并保存冗余数据,可利用冗余数据,再生磁盘上丢失或出错的数据。
XOR运算:异或运算。
比较常用的RAID有RAID0、RAID1、RAID5、RAID6、RAID10等。其中RAID0不具有冗余能力,RAID1只是对磁盘做了镜像。其它3种阵列分别有多个磁盘组成,它们以条带的方式向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个磁盘上。RAID5的每个条带含有1个校验块,支持任意损坏其中一个磁盘、通过其它磁盘上的奇偶校验块来重建数据;RAID6的每个条带含有2个校验块,支持任意损坏其中两个磁盘、通过其它磁盘上的奇偶校验块来恢复数据;RAID10是先对磁盘组进行镜像,再对磁盘进行条带化,所以其不含奇偶校验块,当一个磁盘损坏后通过其对应的镜像盘恢复数据,理想状态下最多允许不同位置下50%的磁盘损坏,最糟糕的情况是同一对镜像磁盘同时损坏。
在RAID 5中,一个条带包含一组逻辑相邻的数据块,并且这些数据块存储在阵列中不同的存储设备上,RAID 5能够纠正或再生一个磁盘上存储的数据,并且由于多个磁盘联合使用一个磁盘容量的冗余数据,所以单位有效数据所需的冗余数据量较少,尤其当RAID 5中包含多个磁盘时,这种优势更明显。如8个磁盘构成的RAID 5,冗余数据占1个磁盘容量,为全部存储数据的1/8。并且由于RAID 5每个条带分散到不同磁盘上的数据块较大,保证了大部分I/O操作都能落入到一个磁盘的数据块内,校验数据也是分布存储的,这样大大增加多I/O并发的可能性。由于RAID 5具有突出的综合性能,为大多数商业服务器提供了优化的性价比,所以获得了广泛应用。
然而,在连续数据存储领域,如视频监控、虚拟磁带库、连续数据保护等应用中,连续数据流顺序写入到磁盘中,进行的是顺序存储,即存储数据的地址是连续的,满足存储空间访问的局部性原理,因此不存在I/O并发性。常用的磁盘阵列,为了提高数据访问速度和保证I/O并发性,把连续数据分散存储到不同的磁盘上,虽然每次只访问局部的一块或几块逻辑相邻的磁盘,阵列中多数磁盘没有任务也必须空转,这样不仅浪费大量能源,同时也大大增加了磁盘的无效在线时间,严重缩短了磁盘的使用寿命。
随着磁盘技术的进步,单块磁盘的连续读写带宽已经得到了显著提高,对于连续数据存储,如果能够在具有冗余数据保护机制的同时,充分利用单块磁盘的传输带宽,根据实际任务需求,令阵列中的一块或几块磁盘工作,来完成存储任务,其它暂时没有任务的磁盘调度到停止状态,即磁盘转轴和磁头电机停止工作,不仅能够节省大量能源,而且还能有效利用磁盘的使用寿命。
磁盘在不同工作状态下的能量消耗见表1。
表1磁盘在不同工作状态下的能量消耗
磁盘工作状态 | 读写操作 | 空转状态 | 停止状态 |
平均功耗 | 11.5W | 8.5W | 约为0W |
发明内容
本发明的目的是克服已有技术存在的不足,在满足设定存储性能的前提下,提出一种垂直型分组并行集中校验的磁盘阵列的构建方法。垂直型分组并行集中校验的磁盘阵列,简称为磁盘阵列SVE-RAID 4。
本发明的目的是通过下述技术方案实现的。
一种磁盘阵列SVE-RAID 4的构建方法,应用于磁盘阵列包含N个磁盘的场景中,其中N≥3且N为正整数;N个磁盘中,1个磁盘为校验盘,其余N-1个磁盘为数据盘;将N个磁盘构造成1行×N列的磁盘矩阵;对全部磁盘进行条带划分,分成m个条带并为每个条带编号,其中m≥1且m为正整数;每个条带在数据盘上的分块称为数据块,每个条带在校验盘上的分块称为校验块;所述校验块由该校验块所在条带中的N-1个数据块通过异或运算得出。
为了提高连续存储带宽,并获得不同的连续存储带宽,以满足不同存储速率的需求,将每个条带上的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;
然后为第二条带第1组的第1个数据块中第1个数据子块编号为K×q+1;为第二条带第1组的第2个数据块中第1个数据子块编号为K×q+2;……;为第二条带第1组的第q个数据块中第1个数据子块编号为(K+1)×q;然后为第二条带第1组的第1个数据块中第2个数据子块编号为(K+1)×q+1;为第二条带第1组的第2个数据块中第2个数据子块编号为(K+1)×q+2;……;为第二条带第1组的第q个数据块中第2个数据子块编号为(K+2)×q;……;以此类推,为第二条带第1组的第1个数据块中第K个数据子块编号为2×K×q-q+1;为第二条带第1组的第2个数据块中第K个数据子块编号为2×K×q-q+2;……;为第二条带第1组的第q个数据块中第K个数据子块编号为2×K×q;
然后为第m条带第1组的第1个数据块中第1个数据子块编号为(m-1)×K×q+1;为第m条带第1组的第2个数据块中第1个数据子块编号为(m-1)×K×q+2;……;为第m条带第1组的第q个数据块中第1个数据子块编号为(m-1)×K×q+q;然后为第m条带第1组的第1个数据块中第2个数据子块编号为(m-1)×K×q+q+1;为第m条带第1组的第2个数据块中第2个数据子块编号为(m-1)×K×q+q+2;……;为第m条带第1组的第q个数据块中第2个数据子块编号为(m-1)×K×q+q×2;……;以此类推,为第m条带第1组的第1个数据块中第K个数据子块编号为m×K×q-q+1;为第m条带第1组的第2个数据块中第K个数据子块编号为m×K×q-q+2;……;为第m条带第1组的第q个数据块中第K个数据子块编号为m×K×q;
以此类推,按照相同的编号原则,为每一条带的第2组,每一条带的第3组,……,每一条带的第p组数据子块进行编号,编号相邻的数据子块,逻辑地址相邻。
第m条带与第一条带中序号相邻的组,逻辑地址相邻;将逻辑地址相邻的组称为相邻组。
校验块按照条带顺序依次编号为1~m;将每个校验块分成K个大小相等的校验子块,所述校验子块由所在条带中偏移位置相同的N-1个数据子块异或运算而得,这样的N-1个数据子块及其异或生成的校验子块组成一个校验条。
上述布局方式,可并行访问组内的q个数据盘,又使存储任务分布在一组内,其余p-1组数据盘没有任务,这样便于调度没有任务的磁盘进入到停止状态,以达到节能和降低磁盘损耗的目的。
优选的,如果数据盘的使用寿命为h1,校验盘的使用寿命为h2,则h1和h2满足以下关系:h2=h1×(N-1)/p。
所述方法进一步包括:控制磁盘工作状态的方法。
磁盘工作状态包括:停止、运行、就绪三种状态。
磁盘停止状态时,磁盘转轴停止旋转、磁头停止寻道;
磁盘运行状态时,磁盘正在执行读写操作,包括转轴旋转、磁头寻道;
磁盘就绪状态时,表示将要被读写,此时磁盘转轴旋转、磁头不寻道
根据磁盘阵列SVE-RAID 4的数据排布方式,可以确定每个条带内第r(1≤r≤p)组内的q个数据块所在的磁盘为:r×q-q+1到r×q。
进行连续写操作时,绝大部分时间里,只有一组数据盘和1个校验盘(q+1个盘)处于运行状态,可以调度没有任务的磁盘进入停止态,以达到节能的目的。进行连续写操作时磁盘工作状态转换调度策略具体为:
为各条带中序号相同的组设置一个信号量(用Sem i表示,1≤i≤p),设置信号量Sem i的初始值均为0。
第1步:根据访问数据的逻辑地址(用LBA表示),由公式1计算出该访问数据所在的组号(用r表示,r为正整数)以及所在条带(用m′表示,0≤m′≤m,m′为正整数):
其中,组大小表示组内各数据块大小之和,MOD表示模运算,加1表示r值从1开始计数。根据组号r、条带号m′确定第m′条带第r组内被访问的q个数据盘r×q-q+1到r×q,如果处于停止状态,则调度这q个数据盘由停止状态转到就绪状态。r用来记录记录当前访问组的组号;m′用来记录记录当前访问组所属的条带号。
第2步:当第m′条带第r组所属q个数据盘处于就绪状态时,开始向这q个数据盘写数据,进行写数据操作的q个数据盘由就绪状态转为运行状态;
第3步:如果本次访问在该组内结束,则在本次访问结束后,将第m′条带第r组所属的数据盘由运行状态转为就绪状态,然后退出本次调度;否则,在访问第m′条带第r组所属数据盘结束前t时刻,判断第m′条带第r组的相邻组(用M表示第m′条带第r组的相邻组所属的条带编号,用r′表示第m′条带第r组的相邻组的组编号)所属数据盘的状态:若处于停止状态,则将第M条带第r′组所属的数据盘由停止状态转为就绪状态,其中t为磁盘由停止状态转为就绪状态所需要的时间,若处于运行状态,则组r′的信号量Sem r′加1。在第m′条带第r组访问结束后,r组的信号量Sem r减1,如果Sem r<0,则将第m′条带第r组所属数据盘由运行状态转为停止状态,重新设置Sem r为0;如果Sem r≥0,则将第m′条带第r组所属数据盘由运行状态转为就绪状态。
第4步:把记录当前访问所在条带序号的m′值更新为M,将记录当前访问所在组序号的r的值更新为r′,重复执行第2步到第4步。
进行连续读操作时,也基本只有一组数据盘和1个校验盘(q+1个盘)处于运行状态,磁盘工作状态转换调度策与连续写操作相同。
优选的,仅进行连续读操作时,校验磁盘可以停止工作。
对于每次写操作,由于每次只更新一组内的q块磁盘以及校验盘上的数据,相当于RAID 5中的读改写,即并行写入新数据D1、D2、……,Dq时,用公式2和公式3生成相同校验条上的新校验数据P:
Xi=(Di)XOR(Di′) (2)
P=(X1)XOR(X2)XOR...XOR(Xq)XOR P′(3)
其中,1≤i≤q且i为正整数,Di′为磁盘中新数据Di写入位置上的旧数据,P′是旧数据Di′所在校验条上的旧校验数据,也是新校验数据P写入位置上的旧校验数据,XOR表示异或运算。
为了生成新校验数据P,除了进行异或运算(硬件实现时时间很短,可以忽略)外,必须先并行读出旧数据Di′及旧校验数据P′,对磁盘而言,每次写操作都包括先读旧数据与再写新数据两个操作,为了减少磁头读、写数据的切换次数,充分利用磁盘带宽,所述方法进一步包括:写操作的优化处理方法,具体为:
设立一个新数据缓冲区,用来缓存应用程序写入阵列的新数据,q个旧数据预读区和一个旧校验数据预读区,分别用来存放从阵列中预读的,与待写新数据对应的旧数据及旧校验数据,各预读区大小相等,并且远大于新数据缓冲区,各新数据子块写入位置上的各旧数据子块,及相同校验条的旧校验数据子块在写操作前预读到预读区。
然后进行以下操作步骤:
第2.1步:当新数据缓冲区不为空时,每次从新数据缓冲区中取出q个数据子块,拆分为分属于组内q块磁盘的数据子块D1、D2、……,Dq后,并行写入q块磁盘,同时送往异或器;
第2.2步:q个旧数据预读区中对应的旧数据子块D1′、D2′、……,Dq′,送往异或器,与第2.1步送来的数据子块进行异或运算,生成差异数据子块X1、X2、……,Xq,其中Xi=(Di)XOR(Di′);
第2.3步:差异数据子块X1、X2、……,Xq送往异或器,旧校验数据预读区中对应的旧校验数据子块P′送往异或器,异或运算生成新校验数据子块P,P=(X1)XOR(X2)XOR……XOR(Xq)XOR(P′);
第2.4步:更新对应校验条中的旧校验子块为新校验数据子块P。
由于可以从预读区直接读取旧数据子块与旧校验数据子块,磁盘就可以连续执行写操作,只有预读区中的数据子块用完后,才进行一次预读来填满预读区,通过预读,多个分散的读操作被转换为一个连续的读操作,有效减少了磁头的切换次数,可根据实际情况设置预读区为足够大。
根据以上分析,当预读区足够大时,容易估算该磁盘阵列SVE-RAID 4的连续写带宽约为q·BWDisk/2,连续读带宽约q·BRDisk,其中BWDisk为单块磁盘的连续写带宽,BRDisk单块磁盘的连续读带宽,q为组内磁盘数。
所述方法进一步包括:对故障磁盘进行数据读写的处理方法;具体为:
当有磁盘出现故障,无法进行正常数据读写时,此时激活磁盘阵列SVE-RAID4中所有磁盘进入就绪状态,暂停使用所述磁盘工作状态控制方法控制磁盘阵列SVE-RAID 4的工作状态;然后分为以下2中情况进行处理:
情况1:如果校验盘出现故障,则继续读写数据盘上的数据,但此时所述磁盘阵列SVE-RAID 4处于无冗余数据校验状态;待更换校验盘后,对于该校验盘上的每个校验块,使用该校验块所在条带的全部数据块进行异或运算,来恢复该校验块,重新生成校验盘数据。
情况2:如果数据盘出现故障,则根据对读、写操作分别处理:
读操作:对于出现故障的数据盘上的每个数据块,使用该数据块所在条带的其它数据块和校验块进行异或运算,来恢复该数据块;待更换该数据盘后,对于该数据盘上的每个数据块,使用该数据块所在条带的其他数据块和校验块进行异或运算,来恢复该数据块,重新生成该数据盘数据。
写操作:有2种处理方式:
第1种处理方式:直接将写数据写到校验盘并记录写入的校验块,待更换故障数据盘后,进行数据还原、数据再生和再生校验数据。数据还原即把寄存在校验盘中的数据块移回到原来位置;数据再生即恢复新数据盘上非还原数据块,利用所在条带的校验块和其它数据块进行异或运算实现。再生校验数据是重新生成记录的写入校验块,利用所在条带的全部数据块进行异或运算实现。
第2种处理方式:使用备用盘来暂存写往故障磁盘上的数据,当更换故障数据磁盘后,进行数据还原、数据再生和再生校验数据。。
当转入正常状态后,再次启用所述磁盘工作状态控制方法对述磁盘阵列SVE-RAID 4的工作状态进行控制。
有益效果
本发明的一种磁盘阵列SVE-RAID 4的构建方法,与已有技术比较,具有以下优点:
1、显著降低能源消耗。其数据布局具有良好的冗余数据保护机制,同时采取分组策略,每一时刻只有一组磁盘处于工作状态并且工作时间足够长,适合调度其余非工作状态磁盘到停止状态,以达到节能的目的。
2、可根据任务需求选择连续存储带宽。采取分组策略后,可以根据任务需求设定q值,并行访问组内的q块磁盘,同时采用数据缓冲与预读措施来改善读改写对写带宽的影响,因此其提供符合任务需求的连续读写带宽。
3、充分延长使用寿命。由于阵列中非工作磁盘被调度停止状态,停止了磁盘转轴的高速旋转,并且磁盘启动、停止时间间隔充分长,所以能够减小磁盘出现故障的概率和充分延长其的使用寿命。
附图说明
图1为本发明的具体实施方式中的磁盘阵列SVE-RAID 4中的磁盘、条带、数据块、校验块编号示意图;
图2为本发明的具体实施方式中的磁盘阵列SVE-RAID 4中数据子块及校验子块编号示意图;
图3为本发明的具体实施方式中的磁盘工作状态转移示意图;
图4为本发明的具体实施方式中的写操作优化示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。
本实施例中,磁盘阵列SVE-RAID 4由5块Seagate Cheetah 10K磁盘组成,单块磁盘的容量为300GB,其相关参数见表2。其中1块校验盘、4块数据盘,如图1所示。对5块磁盘进行条带划分,分成4个条带,编号为1~4。每个条带在数据盘上的分块称为数据块,每个条带在校验盘上的分块称为校验块;对4个数据盘平均分成2组,每组包含2个数据盘。为第一条带的4个数据块编号为11,12,13,14;然后为第二条带的4个数据块编号为到21,22,23,24;……,以此类推,为第4条带的4个数据块编号为41,42,43,44。按条带顺序为全部校验块编号为1到4。校验块由该校验块所在条带中的4个数据块通过异或运算得出,P(11,12,13,14)表示对数据块11、数据块12、数据块13、数据块14进行异或运算得到的结果,同理可得知P(21,22,23,24)、P(31,32,33,34)、P(41,42,43,44)的含义。
表2Seagate Cheetah 10K磁盘的相关参数
将数据子块设计为4KB,因此每个数据块分成K=19,660,800个数据子块,然后按照条带顺序依次为全部数据子块编号,同一条带内的数据子块,按照组顺序编号,如图2所示。首先为第一条带第1组的第1个数据块中第1个数据子块编号为1;为第一条带中第1组的第2个数据块中第1个数据子块编号为2;然后为第一条带中第1组的第1个数据块中第2个数据子块编号为3;为第一条带第1组的第2个数据块中第2个数据子块编号为4;……;以此类推,为第一条带中第1组的第1个数据块中第K个数据子块编号为K×2-1;为第一条带第1组的第2个数据块中第K个数据子块编号为2×K;
然后为第二条带第1组的第1个数据块中第1个数据子块编号为K×2+1;为第二条带中第1组的第2个数据块中第1个数据子块编号为K×2+2;然后为第二条带中第1组的第1个数据块中第2个数据子块编号为K×2+3;为第二条带第1组的第2个数据块中第2个数据子块编号为K×2+4;……;以此类推,为第二条带中第1组的第1个数据块中第K个数据子块编号为4×K-1;为第二条带第1组的第2个数据块中第K个数据子块编号为4×K;
以此类推,按照相同的编号原则,为第3条和第4条带的数据子块进行编号。编号相邻的数据子块,其逻辑地址相邻。
然后,按照相同的编号原则,顺序为第一条带第2组、第二条带第2组、第三条带第2组、第四条带第2组中数据子块的编号。
将每个校验块分成K=19,660,800个大小相等的校验子块,所述校验子块由该校验子块P(1,1)、P(1,2)、……、P(1,K)、……、P(4,1)、P(4,2)、……、P(4,K)所在条带中的各个数据块中偏移位置相同的4个数据子块通过异或运算得出。
当对磁盘阵列SHE-RAID4进行连续数据的读写操作时,校验盘5始终处于运行状态。数据盘的状态转换如图3所示:初始时,根据访问数据的逻辑地址用LBA计算出该访问数据在第3条带第1组,第1组的2个数据块分别在磁盘1和2上,如果磁盘1、2处于停止状态,则调度到就绪状态,见图3中①。当磁盘1、2处于就绪状态时,开始读写磁盘1和2上的数据,磁盘1、2由就绪状态转为运行状态,见图3中②。经过计算得到本次访问是在第1条带第2组上结束,因此在第3条带第1组访问结束前t时刻,计算得到相邻组第4条带第1组所属数据盘磁盘1、2处于运行状态,所以Sem 1加1,等于1;在第3条带第1组访问结束后,Sem 1减1,等于0,则该组所属数据磁盘1、2由运行状态转为就绪状态,见图3中③,表示继续对磁盘1、2操作;在第4条带第1组访问结束前t时刻,将第4条带第1组的相邻组第1条带第2组所属磁盘3、4由停止状态转为就绪状态,见图3中①,在第4条带第1组访问结束后,Sem 1减1后等于-1,小于0,重新设置Sem 1等于0,并该组所属的磁盘1、2由运行状态转为停止状态,见图3中④。
当仅进行连续读操作时,校验磁盘停止工作。
对于正常的连续数据存储,在绝大部分时间里,磁盘阵列SVE-RAID 4只有q+1块磁盘工作,只有小部分时间,有2q+1块磁盘处于读写或空转状态(加上1组提前启动的磁盘),因此其功耗约为相同盘数RAID 5的(2q+1)/N,其中N为构成阵列的磁盘数,每组数据盘的数量q值越小越节能。
如果该磁盘阵列SVE-RAID 4的构成磁盘为Seagate Cheetah 10K,其相关参数见表2,其单块磁盘的容量为300GB。由于该磁盘阵列SVE-RAID 4中的校验盘始终工作,构成了寿命瓶颈,可以选用使用寿命较长的企业级磁盘。本实施例中选择数据盘的使用寿命为h1和校验盘的使用寿命为h2满足以下关系:h2=h1×2。
在内存中设立4个缓冲区,分别为1个新数据缓冲区、2个旧数据预读区和1个旧校验数据预读区。其中,旧数据预读区和旧校验数据预读区大小相等;旧数据预读区和旧校验数据预读区均为新数据缓冲区的10倍。各新数据子块写入位置上的各旧数据子块,及相同校验条的旧校验数据子块在写操作前预读到预读区。
然后进行以下操作步骤:
第2.1步:当新数据缓冲区不为空时,每次从新数据缓冲区中取出2个数据子块,拆分为分属于组内2块磁盘的数据子块D1、D2后,并行写入2块磁盘,同时送往异或器,如图4中的①过程;
第2.2步:2个旧数据预读区中对应的旧数据子块D1′、D2′,送往异或器,与第2.1步送来的数据子块进行异或运算,生成差异数据子块X1、X2,其中Xi=(Di)XOR(Di′),i=1,2;如图4中的②过程
第2.3步:差异数据子块X1、X2送往异或器,如图4中的③过程,旧校验数据预读区中对应的旧校验数据子块P′送往异或器,如图4中的④过程,异或运算生成新校验数据子块P,P=(X1)XOR(X2)XOR(P′);
第2.4步:更新对应校验条中的旧校验子块为新校验数据子块P,如图4中的⑤过程。
由于可以从预读区直接读取旧数据子块与旧校验数据子块,磁盘就可以连续执行写操作,只有预读区中的数据子块用完后,才进行一次预读来填满预读区,通过预读,多个分散的读操作被转换为一个连续的读操作,有效减少了磁头的切换次数,可根据实际情况设置预读区为足够大。
通过数据缓冲与预读处理,可使磁盘阵列SVE-RAID 4的连续写带宽约为q.BWDisk/2,连续读带宽约q.BRDisk,其中BWDisk为单块磁盘的连续写带宽,BRDisk为单块磁盘的连续读带宽,为组内磁盘数。本实施例的磁盘为Seagate Cheetah10K,其连续读带宽为85MB/s,连续写带宽为84MB/s。可得磁盘阵列SVE-RAID4的连续写带宽约为84MB/s,连续读带宽约为170MB/s,即能够满足42路2MB/s的高清视频流的同时写入,85路该类视频流的同时读出。
当有磁盘出现故障,无法进行正常数据读写时,此时激活磁盘阵列SVE-RAID4中所有磁盘进入就绪状态,暂停使用所述磁盘工作状态控制方法对磁盘阵列SVE-RAID 4的工作状态进行控制;
如果校验盘出现故障,则继续读写数据盘上的数据,但此时所述磁盘阵列SVE-RAID 4处于无冗余数据校验状态;待更换校验盘后,对于该校验盘上的每个校验块,使用该校验块所在条带的全部数据块进行异或运算,来恢复该校验块,重新生成校验盘数据。
如果数据盘出现故障,则根据对读、写操作分别处理:
读操作:对于出现故障的数据盘上的每个数据块,使用该数据块所在条带的其它数据块和校验块进行异或运算,来获得该数据块的数据;待更换该数据盘后,对于该数据盘上的每个数据块,使用该数据块所在条带的其他数据块和校验块进行异或运算,来恢复该数据块,重新生成该数据盘数据。
写操作:有2种处理方式:
第1种处理方式:直接将写数据写到校验盘并记录写入位置,待更换故障数据盘后,进行数据还原和再生校验数据。数据还原即根据记录的写入位置把寄存在校验盘中的数据移回到更换后的数据盘的对应位置。再生校验数据是根据记录的写入位置对应的校验盘上的每个校验块,使用该校验块所在条带的全部数据块进行异或运算,来恢复该校验块,重新生成校验盘数据。
第2种处理方式:使用备用盘来暂存写往故障磁盘上的数据,当更换故障数据磁盘后,进行数据还原和再生校验数据。
当转入正常状态后,再次启用所述磁盘工作状态控制方法对述磁盘阵列SVE-RAID 4的工作状态进行控制。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
Claims (6)
1.一种垂直型分组并行集中校验的磁盘阵列的构建方法,垂直型分组并行集中校验的磁盘阵列,简称为磁盘阵列SVE-RAID 4;其特征在于:
应用于磁盘阵列包含N个磁盘的场景中,其中N≥3且N为正整数;N个磁盘中,1个磁盘为校验盘,其余N-1个磁盘为数据盘;将N个磁盘构造成1行×N列的磁盘矩阵;对全部磁盘进行条带划分,分成m个条带并为每个条带编号,其中m≥1且m为正整数;每个条带在数据盘上的分块称为数据块,每个条带在校验盘上的分块称为校验块;所述校验块由该校验块所在条带中的N-1个数据块通过异或运算得出;
为了提高连续存储带宽,并获得不同的连续存储带宽,以满足不同存储速率的需求,将每个条带上的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;
然后为第二条带第1组的第1个数据块中第1个数据子块编号为K×q+1;为第二条带第1组的第2个数据块中第1个数据子块编号为K×q+2;……;为第二条带第1组的第q个数据块中第1个数据子块编号为(K+1)×q;然后为第二条带第1组的第1个数据块中第2个数据子块编号为(K+1)×q+1;为第二条带第1组的第2个数据块中第2个数据子块编号为(K+1)×q+2;……;为第二条带第1组的第q个数据块中第2个数据子块编号为(K+2)×q;……;以此类推,为第二条带第1组的第1个数据块中第K个数据子块编号为2×K×q-q+1;为第二条带第1组的第2个数据块中第K个数据子块编号为2×K×q-q+2;……;为第二条带第1组的第q个数据块中第K个数据子块编号为2×K×q;
然后为第m条带第1组的第1个数据块中第1个数据子块编号为(m-1)×K×q+1;为第m条带第1组的第2个数据块中第1个数据子块编号为(m-1)×K×q+2;……;为第m条带第1组的第q个数据块中第1个数据子块编号为(m-1)×K×q+q;然后为第m条带第1组的第1个数据块中第2个数据子块编号为(m-1)×K×q+q+1;为第m条带第1组的第2个数据块中第2个数据子块编号为(m-1)×K×q+q+2;……;为第m条带第1组的第q个数据块中第2个数据子块编号为(m-1)×K×q+q×2;……;以此类推,为第m条带第1组的第1个数据块中第K个数据子块编号为m×K×q-q+1;为第m条带第1组的第2个数据块中第K个数据子块编号为m×K×q-q+2;……;为第m条带第1组的第q个数据块中第K个数据子块编号为m×K×q;
以此类推,按照相同的编号原则,为每一条带的第2组,每一条带的第3组,……,每一条带的第p组数据子块进行编号,编号相邻的数据子块,逻辑地址相邻;
第m条带与第一条带中序号相邻的组,逻辑地址相邻;将逻辑地址相邻的组称为相邻组;
校验块按照条带顺序依次编号为1~m;将每个校验块分成K个大小相等的校验子块,所述校验子块由所在条带中偏移位置相同的N-1个数据子块异或运算而得,这样的N-1个数据子块及其异或生成的校验子块组成一个校验条;
上述布局方式,可并行访问组内的q个数据盘,又使存储任务分布在一组内,其余p-1组数据盘没有任务,这样便于调度没有任务的磁盘进入到停止状态,以达到节能和降低磁盘损耗的目的;
所述方法进一步包括:控制磁盘工作状态的方法;
磁盘工作状态包括:停止、运行、就绪三种状态;
磁盘停止状态时,磁盘转轴停止旋转、磁头停止寻道;
磁盘运行状态时,磁盘正在执行读写操作,包括转轴旋转、磁头寻道;
磁盘就绪状态时,表示将要被读写,此时磁盘转轴旋转、磁头不寻道;
根据磁盘阵列SVE-RAID 4的数据排布方式,可以确定每个条带内第r组内的
q个数据块所在的磁盘为:r×q-q+1到r×q;其中,1≤r≤p;
进行连续写操作时,绝大部分时间里,只有一组数据盘和1个校验盘处于运行状态,可以调度没有任务的磁盘进入停止态,以达到节能的目的;进行连续写操作时磁盘工作状态转换调度策略具体为:
为各条带中序号相同的组设置一个信号量,用Sem i表示,1≤i≤p,设置信号量Sem i的初始值均为0;
第1步:根据访问数据的逻辑地址,用LBA表示,由公式1计算出该访问数据所在的组号,用r表示,r为正整数,以及所在条带,用m′表示,0≤m′≤m,m′为正整数:
其中,组大小表示组内各数据块大小之和,MOD表示模运算,加1表示r值从1开始计数;根据组号r、条带号m′确定第m′条带第r组内被访问的q个数据盘r×q-q+1到r×q,如果处于停止状态,则调度这q个数据盘由停止状态转到就绪状态;r用来记录当前访问组的组号;m′用来记录当前访问组所属的条带号;
第2步:当第m′条带第r组所属q个数据盘处于就绪状态时,开始向这q个数据盘写数据,进行写数据操作的q个数据盘由就绪状态转为运行状态;
第3步:如果本次访问在该组内结束,则在本次访问结束后,将第m′条带第r组所属的数据盘由运行状态转为就绪状态,然后退出本次调度;否则,在访问第m′条带第r组所属数据盘结束前t时刻,判断第m′条带第r组的相邻组所属数据盘的状态,用M表示第m′条带第r组的相邻组所属的条带编号,用r′表示第m′条带第r组的相邻组的组编号:若处于停止状态,则将第M条带第r′组所属的数据盘由停止状态转为就绪状态,其中t为磁盘由停止状态转为就绪状态所需要的时间,若处于运行状态,则组r′的信号量Sem r′加1;在第m′条带第r组访问结束后,r组的信号量Sem r减1,如果Sem r<0,则将第m′条带第r组所属数据盘由运行状态转为停止状态,重新设置Sem r为0;如果Sem r≥0,则将第m′条带第r组所属数据盘由运行状态转为就绪状态;
第4步:把记录当前访问所在条带序号的m′值更新为M,将记录当前访问所在组序号的r的值更新为r′,重复执行第2步到第4步;
进行连续读操作时,磁盘工作状态转换调度策略与连续写操作相同。
2.如权利要求1所述的一种垂直型分组并行集中校验的磁盘阵列的构建方法,其特征在于:
优选的,如果数据盘的使用寿命为h1,校验盘的使用寿命为h2,则h1和h2满足以下关系:h2=h1×(N-1)/p。
3.如权利要求1所述的一种垂直型分组并行集中校验的磁盘阵列的构建方法,其特征在于:
优选的,仅进行连续读操作时,校验磁盘停止工作。
4.如权利要求1所述的一种垂直型分组并行集中校验的磁盘阵列的构建方法,其特征在于:
所述方法进一步包括:写操作的优化处理方法,具体为:
设立一个新数据缓冲区,用来缓存应用程序写入阵列的新数据,q个旧数据预读区和一个旧校验数据预读区,分别用来存放从阵列中预读的,与待写新数据对应的旧数据及旧校验数据,各新数据子块写入位置上的各旧数据子块,及相同校验条的旧校验数据子块在写操作前预读到预读区;
然后进行以下操作步骤:
第2.1步:当新数据缓冲区不为空时,每次从新数据缓冲区中取出q个数据子块,拆分为分属于组内q块磁盘的数据子块D1、D2、……,Dq后,并行写入q块磁盘,同时送往异或器;
第2.2步:q个旧数据预读区中对应的旧数据子块D1′、D2′、……,Dq′,送往异或器,与第2.1步送来的数据子块进行异或运算,生成差异数据子块X1、X2、……,Xq,其中Xi=(Di)XOR(Di′);
第2.3步:差异数据子块X1、X2、……,Xq送往异或器,旧校验数据预读区中对应的旧校验数据子块P′送往异或器,异或运算生成新校验数据子块P,P=(X1)XOR(X2)XOR……XOR(Xq)XOR(P′);
第2.4步:更新对应校验条中的旧校验子块为新校验数据子块P;
由于可以从预读区直接读取旧数据子块与旧校验数据子块,磁盘就可以连续执行写操作,只有预读区中的数据子块用完后,才进行一次预读来填满预读区,通过预读,多个分散的读操作被转换为一个连续的读操作,有效减少了磁头的切换次数。
5.如权利要求4所述的一种垂直型分组并行集中校验的磁盘阵列的构建方法,其特征在于:
优选的,旧数据预读区和旧校验数据预读区大小相等。
6.如权利要求1至5中之一所述的一种垂直型分组并行集中校验的磁盘阵列的构建方法,其特征在于:
所述方法进一步包括:对故障磁盘进行数据读写的处理方法;具体为:
当有磁盘出现故障,无法进行正常数据读写时,此时激活磁盘阵列SVE-RAID4中所有磁盘进入就绪状态,暂停使用所述磁盘工作状态控制方法控制磁盘阵列SVE-RAID 4的工作状态;然后分为以下2种情况进行处理:
情况1:如果校验盘出现故障,则继续读写数据盘上的数据,但此时所述磁盘阵列SVE-RAID 4处于无冗余数据校验状态;待更换校验盘后,对于该校验盘上的每个校验块,使用该校验块所在条带的全部数据块进行异或运算,来恢复该校验块,重新生成校验盘数据;
情况2:如果数据盘出现故障,则根据对读、写操作分别处理:
读操作:对于出现故障的数据盘上的每个数据块,使用该数据块所在条带的其它数据块和校验块进行异或运算,来恢复该数据块;待更换该数据盘后,对于该数据盘上的每个数据块,使用该数据块所在条带的其他数据块和校验块进行异或运算,来恢复该数据块,重新生成该数据盘数据;
写操作:有2种处理方式:
第1种处理方式:直接将写数据写到校验盘并记录写入的校验块,待更换故障数据盘后,进行数据还原、数据再生和再生校验数据;数据还原即把寄存在校验盘中的数据块移回到原来位置;数据再生即恢复新数据盘上非还原数据块,利用所在条带的校验块和其它数据块进行异或运算实现;再生校验数据是重新生成记录的写入校验块,利用所在条带的全部数据块进行异或运算实现;
第2种处理方式:使用备用盘来暂存写往故障磁盘上的数据,当更换故障数据磁盘后,进行数据还原、数据再生和再生校验数据;
当转入正常状态后,再次启用所述磁盘工作状态控制方法对述磁盘阵列SVE-RAID 4的工作状态进行控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010256711A CN101976177B (zh) | 2010-08-19 | 2010-08-19 | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010256711A CN101976177B (zh) | 2010-08-19 | 2010-08-19 | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101976177A CN101976177A (zh) | 2011-02-16 |
CN101976177B true CN101976177B (zh) | 2012-10-03 |
Family
ID=43576065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010256711A Active CN101976177B (zh) | 2010-08-19 | 2010-08-19 | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101976177B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520883B (zh) * | 2011-12-12 | 2015-05-20 | 杭州华三通信技术有限公司 | 一种数据存取方法及其装置 |
KR101805028B1 (ko) * | 2016-06-28 | 2017-12-06 | 고려대학교 산학협력단 | 물리 영역과 가상 영역을 근거로 결함 리페어를 적용하는 메모리 장치 및 그의 제어 방법 |
CN106844088B (zh) * | 2017-02-20 | 2020-03-27 | 郑州云海信息技术有限公司 | 一种raid存储系统的数据发送方法及装置 |
CN107885620B (zh) * | 2017-11-22 | 2020-09-08 | 华中科技大学 | 一种提高固态盘阵列性能和可靠性的方法及系统 |
CN108108263B (zh) * | 2017-12-14 | 2020-11-20 | 联想(北京)有限公司 | 一种固态硬盘的数据处理方法及装置 |
CN111857549A (zh) * | 2019-04-29 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于管理数据的方法、设备和计算机程序产品 |
CN113821373B (zh) * | 2021-11-19 | 2022-02-22 | 苏州浪潮智能科技有限公司 | 提高磁盘地址转换速度的方法、系统、设备和存储介质 |
CN114253478B (zh) * | 2021-12-17 | 2024-02-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种计算raid校验盘位置的方法和装置 |
CN115098046B (zh) * | 2022-08-26 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 磁盘阵列初始化方法、系统、电子设备及存储介质 |
CN115599314B (zh) * | 2022-12-12 | 2023-03-31 | 深圳市泛联信息科技有限公司 | 数据冗余策略变更方法、装置、存储节点和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004094547A (ja) * | 2002-08-30 | 2004-03-25 | Toshiba Corp | Raidコントローラ及びraidコントローラにおけるディスクアレイ制御方法 |
CN100416484C (zh) * | 2006-09-06 | 2008-09-03 | 威盛电子股份有限公司 | 具磁盘阵列控制功能的核心逻辑单元及磁盘阵列控制方法 |
CN101625586A (zh) * | 2008-07-09 | 2010-01-13 | 联想(北京)有限公司 | 一种管理存储设备节能的方法、设备和计算机 |
CN101504568B (zh) * | 2009-03-25 | 2011-04-13 | 成都市华为赛门铁克科技有限公司 | 一种运行硬盘的方法、装置及电子设备 |
CN101727299B (zh) * | 2010-02-08 | 2011-06-29 | 北京同有飞骥科技股份有限公司 | 连续数据存储中面向raid5的写操作优化设计方法 |
-
2010
- 2010-08-19 CN CN201010256711A patent/CN101976177B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101976177A (zh) | 2011-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101976175B (zh) | 一种水平型分组并行集中校验的磁盘阵列的构建方法 | |
CN101976177B (zh) | 一种垂直型分组并行集中校验的磁盘阵列的构建方法 | |
CN101976174B (zh) | 一种垂直排布分布校验的节能型磁盘阵列的构建方法 | |
CN101976178B (zh) | 一种垂直排布集中校验的节能型磁盘阵列的构建方法 | |
CN102033716B (zh) | 一种双磁盘容错的节能型磁盘阵列的构建方法 | |
CN102023820B (zh) | 一种双磁盘容错垂直型分组并行访问磁盘阵列的构建方法 | |
CN102023819B (zh) | 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法 | |
CN101976176B (zh) | 一种水平型分组并行分布校验的磁盘阵列的构建方法 | |
CN103049222B (zh) | 一种raid5的写io优化处理方法 | |
US7904647B2 (en) | System for optimizing the performance and reliability of a storage controller cache offload circuit | |
EP2180407B1 (en) | Fast data recovery from HDD failure | |
CN102122235B (zh) | 一种raid4系统及其数据读写方法 | |
CN103793182A (zh) | 可扩展存储保护 | |
CN102147713B (zh) | 一种网络存储系统的管理方法及装置 | |
CN101276302A (zh) | 一种磁盘阵列系统中磁盘故障处理和数据重构方法 | |
CN102164165B (zh) | 一种网络存储系统的管理方法及装置 | |
CN101976179B (zh) | 一种垂直型分组并行分布校验的磁盘阵列的构建方法 | |
CN101625586A (zh) | 一种管理存储设备节能的方法、设备和计算机 | |
CN103870352A (zh) | 数据存储与重建的方法与系统 | |
CN102135862B (zh) | 一种磁盘存储系统及其数据访问方法 | |
CN104063184B (zh) | 磁盘记录方法及其非易失性存储媒体与电子装置 | |
CN100470507C (zh) | 磁盘阵列结构中进行回写的方法 | |
CN101901115B (zh) | 一种磁盘阵列raid6级别的构建方法 | |
CN101719050A (zh) | 一种数据存储方法及设备 | |
CN102541472A (zh) | 一种raid阵列重建的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |