一种raid阵列同步方法及装置的制作方法

文档序号:6372620阅读:250来源:国知局
专利名称:一种raid阵列同步方法及装置的制作方法
技术领域
本发明涉及网络存储技术,尤其涉及一种更加简洁有效的RAID阵列同步方法及
>J-U ρ α装直。
背景技术
独立磁盘RAID阵列(Redundant Array of Independent Disks, RAID)技术广泛应用于存储领域,在网络存储上尤其流行。RAID技术主要是通过磁盘的冗余性来保证存储在其上数据的可用性,在使用阵列之前通常要进行阵列 的同步,主要目的包括(I)保证RAID各个条带上数据的一致性,使其具备数据冗余性;(2)在后续的业务流量中,能够提升业务流量的性能。RAID阵列进行同步的作用主要是为了提升后续写入的效率。首先,如果RAID阵列没有进行过同步,业务数据在RAID算法(以RAID5为例)中只能通过重构写的方式进行条带的写处理,因为不知道条带上的各个条带块(Segment)的数据是否具备一致性,不能使用在随机流量下性能更好的读修改写(Read Modify Write)算法。重构写(Reconstruct Write)的处理过程包括从当前条带中不需要修改的Segment中读取原来的数据,再和本条带中所有需要修改的Segment上的新数据计算奇偶校验值,并将新的Segment数据以及新的奇偶校验值一并写入到当前条带。显然重构写在随机流量模型下要牵涉更多的I/O操作。举例来说,如果RAID阵列的磁盘数为9块,某时刻一个IO只更新了一个条带的I个Segment,剩余7个没有更新。在重构写模式下,会将没有被更新的7个Segment的数据读出,和需要更新的前I个Segment的数据计算出校验数据,然后将这I个Segment连同校验数据所在的Segment —并写入2磁盘。可以看出,这个操作共有读七个Segment中数据的操作和写两个segment的操作。其次,如果RAID阵列进行过同步,则可以根据下发的业务数据所在磁盘个数计算出最优的算法,可能使重构写也可能是读修改写。先从需要修改的Segment上读取旧的数据,再从条带上读取旧的奇偶校验值;根据旧数据、旧校验值和需要修改的Segment上的新数据计算出这个条带上的新的校验值;最后写入新的数据和新的奇偶校验值。这个过程中包含读取、修改和写入的一个循环周期,因此称为读改写。读改写计算新校验值的公式为新校验数据=(老数据EOR新数据)EOR老校验数据。如果待更新的Segment已经超过了条带中总Segment数量的一半,则此时不适合用读改写,因为读改写需要读出这些Segment中的数据和校验数据。而如果采用重构写,只需要读取剩余不准备更新数据的Segment中的数据即可,因为后者读数量比前者要少。所以超过一半用重构写,不到一半用读改写。整条更新就用整条写。因此在随机写或磁盘个数较多时,阵列同步后使用读修改写的方式可以使系统访问IO磁盘的次数最少,以提升性能。请参考图I以及图2,现有技术中RAID阵列(以RAID5为例)的同步功能均是使用通用的算法在每个条带上计算出校验盘的位置,然后通过读该条带的数据盘数据,进行校验后,把校验数据写入校验盘。以同步StripeO为例,同步过程包括
a.确定校验盘的位置为3号盘;b.读出数据盘DO,Dl和D2在stripeO上的数据;c.异或校验,获取校验盘数据P0=D0 EOR Dl EOR D2 ;d.把PO校验数据写入校验盘。现有技术中阵列同步的处理流程复杂度与RAID阵列重建复杂度处于同一个量级,同步通常会略低于重建;但二者均是以条带为单元进行遍历整个阵列进行处理,处理流程较长。首先,在单个磁盘容量越来越大的今天,同步的处理时 间会相应增加,影响用户体验。其次,同步与重建之间最大的区别在于在RAID阵列投入使用之后,重建流程可能会经常被使用到(每次有磁盘故障或者管理员更换磁盘),而同步流程通常只会使用一次。这意味着,对于存储设备厂商来说,需要为不常用的同步功能付出较高的开发成本。

发明内容
有鉴于此,本发明提供一种RAID阵列同步装置,应用于网络存储设备上,其中该网络存储设备包括RAID阵列,所述RAID阵列包括多块磁盘;其中RAID阵列中至少有一块磁盘被预先指定为同步校验盘,其特征在于,该装置包括数据读取单元,用于从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同一个同步条带中的每一个同步块大小相同;校验写入单元,用于根据RAID阵列对应的RAID校验算法对读取的多个同步块数据进行校验以生成同步校验数据,并将所述同步校验数据写入所述同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。本发明还提供一种RAID阵列同步方法,应用于网络存储设备上,其中该网络存储设备包括RAID阵列,所述RAID阵列包括多块磁盘;其中RAID阵列中至少有一块磁盘被预先指定为同步校验盘,其特征在于,该方法包括A、从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同一个同步条带中的每一个同步块大小相同;B、根据RAID阵列对应的RAID校验算法对读取的多个同步块数据进行校验以生成同步校验数据,并将所述同步校验数据写入所述同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。通过本发明的设计,首先可以使得同步的业务处理特点更为接近重建业务处理特点,可以有效地复用部分重建功能的开发成果,降低了开发与维护成本。其次本发明不再局限于条带这样的同步操作对象,可以使用更大的同步条带进行操作,大大提升了同步速度与性能。


图I是现有技术中同步过程中数据处理示意图。图2是现有技术中同步过程的流程图。图3是本发明一种实施方式RAID阵列同步装置逻辑结构图。
图4是本发明一种实施方式RAID阵列同步方法的处理流程图。图5是本发明一种实施方式中一个条带上数据同步过程示意图。图6是本发明一种实施方式中采用更大同步块的同步过程示意图。
具体实施例方式请参考图3,本发明提供一种新的RAID阵列同步装置,应用于网络存储设备上,其中该网络存储设备包括RAID阵列,所述RAID阵列包括多块磁盘;以计算机程序实现为例,该同步装置包括状态标记单元、数据读取单元以及校验写入单元。该装置运行于网络设备时执行如下步骤 步骤101,当有业务数据写入RAID阵列时,采用重构写的方式进行业务数据写入;如背景技术所说的那样,在同步没有完成之前,业务数据的写入都是按照重构写模式进行与入的。步骤102,从冗余磁盘中选定一个磁盘作为同步校验盘;步骤103,数据读取单元从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同一个同步条带中的每一个同步块大小相同;步骤104,校验写入单元根据RAID阵列对应的RAID校验算法对读取的多个同步块上的数据进行校验以生成同步校验数据,并将所述同步校验数据写入所述同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。步骤105,校验写入单元进一步检查同步是否已经完成;如果是则结束,否则返回步骤103。通过以上的流程可以看出,首先本发明将RAID阵列中的一个磁盘指定为同步校验盘,生成的同步校验数据总是写入同一个磁盘中;反观现有技术,在同步过程中,每次都需要确定校验数据到底在哪个磁盘上,同步过程中每次写入同步校验数据都需要变更目标写入磁盘,过程异常繁琐。其次,虽然同步与重建流程本质上是不同的业务流程,处理的磁盘对象、启动时机以及业务目标都不一样,但是本发明的同步方法的中总是向同一个磁盘写入数据这个特点与重建的实现过程接近,这使得存储设备厂商在同步这一功能特性开发的过程中可以大量复用重建特性功能中的软件代码与设计结构,开发成本大大降低。事实上,RAID阵列同步的目的仅仅是为了条带上数据的一致性,因此若即将进行同步的条带是已经写过了业务数据的条带,那么在写入业务数据的过程中RAID算法已经保证了该条带上各个条带块的数据之间呈现出一致性;若同步的条带是没有写过的数据时,在哪个磁盘上写校验数据效果都是一样的。因此在同步时将哪个磁盘作为校验盘进行写入都是一样的。以下通过一个简单的例子来说明这个问题。首先,本发明中同步块的大小并没有特别限制,只不过RAID阵列的中同一个同步条带上的各个同步块大小必须相同(请参考图6,比如512KB)。假设本发明所说的同步块就是RAID阵列中的条带块,假设磁盘3被选定为同步校验盘。请参考图l,StripeO-4已经写入了业务数据与校验数据;假设Stripe5当前还没有写入业务数据,当前Stripe5上各个磁盘的实际数据(对于用户业务来说是无效的)是X、Y、Z、W。本实施方式中在进行同步处理的过程如下
读取到stripeO上同步校验盘以外的所有磁盘(O、1、2)上的同步块数据DO、D1、D2,然后根据RAID校验算法对DO、Dl、D2进行异或校验,得到同步校验数据PO写入磁盘3中,PO与实际校验数据一致;读取stripel上同步校验盘以外的所有磁盘(0、1、2)上的同步块数据D3、D4、P1;然后根据RAID校验算法对D3、D4、P1进行异或校验,得到同步校验数据D5写入磁盘3中。实施上D5在本发明的同步流程中被视为同步校验数据,但事实上D5又是业务数据(用户真实写入的数据)。再依次处理stripe2、3、4,方式与stripe0、l的处理相同。对于已经写过数据的条带来说,本发明可以重新执行了一次RAID校验算法,将这些条带在磁盘3上的条带块数据(可能是业务数据也可能是校验数据)又重新写了一遍,每个已经写过业务数据的条带上没有发生任何改变。请参考图5,接下来处理Stripe5,同样的道理,读取同步块数据X、Y、Z,根据RAID 校验算法对Χ、γ、ζ进行异或校验,得到同步校验数据V写入磁盘3覆盖原来同步块中的W。由于刚刚执行了异或校验,虽然XYZV对用户业务是无效的,但此时XYZV四个同步块数据之间已经呈现出了一致性。当用户有实际数据写入时,其可以体现出灵活性。假设用户第一次写入D14,此时可以使用读改写模式进行写入。此时,执行写入时可以将磁盘2上的数据Z视为校验数据,然后根据读改写算法得到新的校验数据U=D14 EOR XEOR Z;然后将D14以及U分别写入磁盘O和磁盘2的条带块。假设用户第二次写入数据D15以及D16,请参考图5,此时可以使用重构写的方式写入,最终的结果是D14、D15、P1、D16。需要注意的是这里的Pl与stripel的Pl并不是一样的校验数据,Pl中的I仅仅是一个下标,表示该校验数据在磁盘2上。在一种较佳的实施方式中,同步可以依次进行,请参考图4,同步可以按照同步条带的编号顺序进行。以下在上述基础实施方式的基础介绍几个优化的实施方式。实施方式一,请参考图6,既然同步可以写到指定的同步校验盘,则每次同步的数据量就可以脱离RAID阵列条带这个操作单位的大小限制,可以使用尽可能多的数据进行同步,这样会大大提升磁盘的处理性能。比如读一个磁盘上4K的数据量和读一个磁盘512KB的数据量,性能上的消耗差别很小,但RAID同步的性能却会高出数百倍!因此在优选的实施方式中,同步块比所述条带块大,相应地由各个磁盘同步块构成的同步条带的数据容量大于所述条带。在此提供两种在实际中较佳的实现方式a.同步块大小为RAID阵列条带块的N倍(N>=2),b.同步块大小为当前系统一次数据读取的最大值。实施方式二,在基础的实施方式中,并没有区分读取到的同步块中的数据是否为已经写入的业务数据,为了提高同步的速度,可以对此进行区分。此时同步装置可以进一步包括写入标记单元,用于在RAID阵列条带被写入业务数据时,将该条带上的数据的状态由未同步修改为已同步。相应地,在本实施方式中,数据读取单元在读取数据时则相应读取状态为未同步的数据。在优选的实施方式中,可以以条带或者条带块为单位使用Bitmap的方式进行数据状态的标记。需要说明的是,首先,以上是以RAID5为例进行说明的,然而本发明并不局限于RAID5,其次,同步块的大小在优选的方式中是预设的大小,但是在其他实施方式中其大小也可以由程序根据需要来动态指定,因为本发明对同步块的大小并没有非常严格的限制,只要当前同步条带上的每个同步块大小一致即可。
通过本发明的设计,首先可以使得同步的业务处理特点更为接近重建业务处理特点,可以有效地复用重建功能的开发成果,降低了维护成本。由于复用的关系,自然地降低了软件的维护成本。其次本发明不再局限于条带这样的同步操作对象,可以使用更大的同步条带进行操作,大大提升了同步速度与性能。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种RAID阵列同步装置,应用于网络存储设备上,其中该网络存储设备包括RAID阵列,所述RAID阵列包括多块磁盘;其中RAID阵列中至少有一块磁盘被预先指定为同步校验盘,其特征在于,该装置包括 数据读取单元,用于从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同一个同步条带中的每一个同步块大小相同; 校验写入单元,用于根据RAID阵列对应的RAID校验算法对读取的多个同步块数据进行校验以生成同步校验数据,并将所述同步校验数据写入所述同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。
2.如权利要求I所述的装置,其特征在于,所述同步块的大小是预设的。
3.如权利要求I所述的装置,其特征在于,所述同步块比RAID阵列的条带块大。
4.如权利要求I所述的装置,其特征在于,所述同步块大小为RAID阵列的条带块的N倍,其中N为自然数且不小于2,或者所述同步块大小为当前系统一次数据读写的最大值。
5.如权利要求I所述的装置,其特征在于,校验写入单元进一步检查同步是否已经完成;如果是则结束,否则返回数据读取单元进行处理。
6.一种RAID阵列同步方法,应用于网络存储设备上,其中该网络存储设备包括RAID阵列,所述RAID阵列包括多块磁盘;其中RAID阵列中至少有一块磁盘被预先指定为同步校验盘,其特征在于,该方法包括 A、从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同一个同步条带中的每一个同步块大小相同; B、根据RAID阵列对应的RAID校验算法对读取的多个同步块数据进行校验以生成同步校验数据,并将所述同步校验数据写入所述同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。
7.如权利要求6所述的方法,其特征在于,所述同步块的大小是预设的。
8.如权利要求6所述的方法,其特征在于,所述同步块比RAID阵列的条带块大。
9.如权利要求6所述的方法,其特征在于,所述同步块大小为RAID阵列的条带块的N倍,其中N为自然数且不小于2,或者所述同步块大小为当前系统一次数据读写的最大值。
10.如权利要求6所述的方法,其特征在于,所述步骤B进一步包括检查同步是否已经完成;如果是则结束,否则返回步骤A处理。
全文摘要
本发明提供一种RAID阵列同步方法,应用于网络存储设备上,其中RAID阵列中至少有一块磁盘被预先指定为同步校验盘,该方法包括从RAID阵列中除同步校验盘外的每个磁盘上读取未完成同步的同步块上的数据,其中每个磁盘的同步块隶属于一个同步条带,同步条带中的每一个同步块大小相同;根据RAID校验算法对读取的多个同步块数据进行校验以生成同步校验数据,并将所述同步校验数据写入同步校验盘上的同步块上,以使得所述同步条带上的数据呈现一致性。本发明可复用部分重建功能的开发成果,降低了开发与维护成本。其次本发明不局限于条带为单位进行操作,可以使用更大的同步条带进行操作,大大提升了同步速度与性能。
文档编号G06F3/06GK102789370SQ20121022695
公开日2012年11月21日 申请日期2012年6月29日 优先权日2012年6月29日
发明者张键 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1