分布式独立冗余磁盘阵列存储方法及分布式集群存储系统的制作方法

文档序号:6432491阅读:284来源:国知局
专利名称:分布式独立冗余磁盘阵列存储方法及分布式集群存储系统的制作方法
技术领域
本申请涉及存储领域,尤其涉及一种分布式独立冗余磁盘阵列存储方法及分布式集群存储系统。
背景技术
独立冗余磁盘阵列(RedundantArray of Independent Disk,简称 Raid)技术在存储领域已经有了广泛的应用。Raid技术是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。根据磁盘陈列的不同组合方式,可以将Raid分为不同的级别。 磁盘阵列中针对不同的应用使用的不同技术,称为Raid level (Raid级别)而每一 level都代表着不同技术。根据用户的操作环境及应用来选择Raid级别。一般的Raid实现是并行的将数据写入多块磁盘介质,同时计算校验信息,写入校验磁盘。在一组磁盘中允许一定数量的存储介质损坏而不会导致数据丢失,但是Raid —般用于单机环境。下面介绍下Raid5和Raid6技术中如何计算校验信息,Raid5的校验算法是异或算法,通过计算异或(XOR)的方式来实现容错,也就是说,对于接收的数据,进行分块,并计算校验后,分别存储于不同的磁盘中。如将接收的数据分成数据块0、1和2,检验信息为PO = 0Θ1 @2,其中,@为异或运算。当其中的一个数据块出现问题时,通过计算异或,可得到对应的数据。例如,假设数据块O出现故障,此时可采用如下方式计算数据块O中的数据数据块O=PO 1 2 = 0 1 2 1 2=0 1 1 2 2Raid6是采用双重校验的方法计算校验信息。第一种校验,采用异或(XOR)方法,来计算P ;另一种则为采用李德所罗门编码方式,来计算校验Q。从而使得即使RAID6损坏两个存储设备时,也能够完成正常的操作。例如,假设有4个数据块,即数据块0、1、2、3,分别通过以下两式计算P和Q :po = o l 2 3
QO = (KOOO) θ(Κ1Θ1) θ(Κ2Θ2) θ(Κ3Θ3)其中,Θ为伽罗瓦域(Galois Field)计算操作,KO K3是系数。如果丢失一个数据盘和P盘,那么就需要从Q和其它数据盘进行恢复。丢失两个数据盘,则从Q、P和其他数据盘恢复。现在的分布式集群存储系统,就是将数据分散存储在多台独立的存储设备上。存储设备一般都采用廉价PC和廉价存储介质。这使得存储介质损坏成为经常发生的事情。为了保证数据不丢失,目前的分布式集群存储系统采用将一份数据写多份冗余备份的方式。一旦有存储介质损坏则从冗余备份中恢复。这样的解决方案随着冗余备份数的增加,消耗的存储资源也成倍增加,从而增加了存储成本。

发明内容
本申请的目的是提供一种分布式独立冗余磁盘阵列存储方法及分布式集群存储系统,利用Raid技术的校验思想以解决现有技术中分布式存储系统的存储资源庞大,以及带来的高存储成本。为实现上述目的,本申请提供了一种分布式Raid存储方法。该方法包括将分布式集群系统中多个服务器的存储介质划分为数据块;将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块;记录数据块划分信息,所述数据块划分信息包括所述Raid级别、分组信息和所述组与校验数据块的对应信息,以及所述数据块与所述服务器的对应信息;根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。其中,所述组中的所述数据块和所述校验数据块是按照数据安全性要求分布在所述分布式集群系统中的服务器中。所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作具体为中心节点接收到客户端的数据写入请求后,选择待写入数据的一个数据块,并将所述数据块相关的所述数据块划分信息通知客户端;所述待写入数据的一个数据块对应的服务器,根据客户端发起的写入数据的请求和客户端附加的所述数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并将待写入数据写入对应数据块中,并将所述校验信息附加所述数据块划分信息,传送给所述组对应的校验数据块所在的服务器;所述组对应的校验数据块所在的服务器将所述校验信息根据所述数据块划分信息中的所述Raid级别所对应的校验算法进行计算,将计算结果写入所述校验数据块。进一步地,所述的分布式独立冗余磁盘阵列存储方法还包括所述数据块对应的服务器和所述校验数据块对应的服务器向所述分布式集群系统的中心节点上报写入完成信
肩、O进一步地,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括待读取的一个数据块所对应的服务器根据发起的读取数据的请求,读取待读取的一个数据块上的数据。进一步地,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括当所述数据块中的数据块损坏时,按照所述Raid级别所对应的校验算法,将所述组中剩余的所述数据块和所述校验数据块中的数据进行计算,来恢复所述损坏的数据块的数据。进一步地,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括当待读取的所述数据块损坏时,将从所述组中剩余的所述数据块中和所述校验数据块中按照偏移量和字节长度分别读取出的数据,按照所述Raid级别所对应的校验算法进行计算,将所述计算结果作为所述损坏的待读取的所述数据块中的数据。所述根据客户端发起的写入数据的请求和客户端附加的所述数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并将待写入数据写入对应数据块中具体包括所述Raid级别为Raid5,按照所述Raid5对应的校验算法,所述待写入的一个数据块对应的服务器根据所述写入数据的请求中的偏移量和字节长度,从所述待写入的一个数据块中读出所述字节长度个字节;将读出的所述字节长度个字节与待写入数据进行按位异或,获得异或结果作为校验信息;将所述待写入数据写入所述一个数据块中。所述组对应的校验数据块所在的服务器将所述校验信息根据所述Raid级别所对应的校验算法计算,将计算结果写到所述校验数据块上具体包括所述校验数据块对应的服务器接收到所述校验信息后,根据所述偏移量和字节长度,从所述校验数据块中读出所述字节长度个字节;将读出的所述校验数据块中的所述字节长度个字节与接收到的所述校验信息按照所述Raid5对应的校验算法进行按位异或计算,将计算的异或的结果写入所述偏移量的存储位置处。本申请还提供了一种分布式集群存储系统,该系统包括中心节点,包括划分单元,用于将分布式集群系统中服务器的存储介质划分为数据块;选择分组单元,用于选择Raid级别,且将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块;记录单元,用于将所述Raid级别,分组信息和所述组对应的校验数据块的信息,以及与所述服务器的对应信息记录于数据块划分信息;以及划分有多个所述数据块的所述服务器,用于根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。本申请分布式Raid存储方法及分布式集群存储系统由于采用Raid技术的校验思想,把不同的数据块进行冗余校验计算,可以在相同安全保证的前提下大大降低对存储介质的消耗,从而大大节约存储成本。


图I为本申请分布式Raid存储方法的流程图;图2为本申请分布式集群系统示意图。
具体实施例方式下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。现有分布式存储系统为了达到高可靠性,需要对数据进行冗余备份,以便在部分存储介质失效的时候,可以从冗余备份中恢复数据,但是存储成本高。本申请分布式Raid存储方法将Raid技术的校验思想应用于分布式集群存储系统中,可以降低冗余备份的存储开销,提高数据的安全性,极大地节省存储成本。Raid技术的校验思想包括Raid技术的校验位思想和校验算法。本申请根据Raid技术的校验位思想,形成适用于分布式集群存储系统的校验数据块,并利用Raid技术的校验算法通过该校验数据块来存储校验信息,从而达到形成数据的冗余备份但却减少存储介质的占用,以及保证数据的安全性。本申请形成校验数据块是由所选择的Raid级别来决定的,而选择Raid级别可由预先设置的数据安全性要求确定。本申请在有了校验数据块的基础上,通过Raid校验算法可以在出现数据安全性要求范围内的故障时进行数据恢复或读取,从而保证数据的安全性。如图I所示,为本申请分布式Raid存储方法的流程图。图2为本申请分布式集群存储系统示意图。如图2所示,该分布式集群存储系统包括中心节点I和多个本地节点
2(即服务器21、22........29)。本地节点2可包括不同容量的存储介质,如图2所示,其
已被划分多个数据块,并且数据块上有编号,该编号可以是由中心节点分配的。具体地,所述中心节点I包括划分单元101、选择分组单元102、记录单元103、以及存储操作单元104。以下分别具体介绍中心节点I的各单元划分单元101,用于将各服务器的存储介质划分成多个数据块;在划分数据块时,中心节点并不需要将各服务器的存储介质全部划分,在满足实际使用的前提下,通过划分单元101划分一定数目的数据块即可。选择分组单元102,用于按照实际所需的数据安全性要求选择Raid级别;并且根据该数据安全性要求,将选择的数据块组成一组;以及根据Raid级别,选择一个或多个数据块作为校验数据块。记录单元103,用于记录所述划分单元101和所述选择分组单元102的数据块划分信息,该数据块划分信息包括划分的数据块与服务器的对应信息,选择的Raid级别和分组的信息,以及组与校验数据块的对应信息等。存储操作单元104,用于当在接收到客户端发起的写入数据的请求时,选择划分的数据块以响应该客户端的数据写入请求,并将该数据块相关的数据块划分信息发送给客户端进行缓存。具体地,各服务器包括校验信息计算单元201、读取单元202、数据恢复单元203以及损坏读取单元204,接下来分别具体介绍各服务器的单元校验信息计算单元201,用于在接收到客户端发起的数据写入请求后,根据其中附加的数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并且根据附加的数据块划分信息中的组与校验数据块的对应信息,将该校验信息发送给校验数据块所在的服务器;并将待写入的数据写入其上的数据块中;由上述划分数据块和选择校验数据块可知,一个服务器上的多个数据块可以分别被作为多个组中一个成员数据块,或者成为一个组的校验数据块,因此,各个服务器的校验信息计算单元201还可用于,在接收到校验信息后,将校验信息根据Raid级别所对应的校验算法进行计算,将计算结果写到校验数据块上。
上述中心节点I和本地节点2完成了一个数据写入的操作,从上述内容可以看出,利用Raid级别的校验位思想选择一个或多个数据块作为校验数据块,在数据写入时,直接将完整的数据写入选定的待写入数据块中,同时利用该Raid级别的校验算法,计算校验信息,随后又通过Raid级别的校验算法将校验信息计算后存放入校验数据块,这样不仅做到了数据的备份,而且又保证了数据的安全性。与传统的分布式存储系统通过在写入数据时多份冗余备份相比,节约了存储空间,而又保证了达到一定的数据安全性要求,比如可以出现一个或两个或多个数据块或服务器故障,但系统仍可用这样的安全性要求。由于写入一个数据时,对应有一个或多个校验数据块中的校验信息的写入,在数据安全性要求的范围内出现故障,比如一个数据块损坏或者服务器损坏时,通过校验数据块中的校验信息,服务器通过数据恢复单元203,可以用来将损坏的一个数据块或服务器中的数据恢复,即利用Raid级别对应的校验算法,对损坏的数据块所在的组中的剩余数据块和校验数据块中的数据进行计算,从而得到损坏的数据块中的数据。当服务器损坏时,即当服务器中的涉及多个组中的某个数据块损坏,恢复服务器中的数据,也即恢复多个数据块中的数据。该操作也正是利用了 Raid级别的校验算法,来保证即使出现故障,也能够进行恢复数据。如上面所描述的在数据安全性要求的范围内出现故障,比如一个数据块损坏或者服务器损坏时,但是客户端发起了要求读取该数据块的某存储位置处的数据,此时本申请也能保证读取出该已经损坏的数据块上的某存储位置的数据。服务器通过损坏读取单元204,用来读取出损坏数据块上的数据,利用Raid级别所对应的校验算法,对该损坏的数据块所在组中的剩余数据块和数据校验数据块中某存储位置的数据进行计算,计算结果就是该损坏的数据块的待读取的某存储位置的数据。该操作也是利用了 Raid的校验算法以及校验数据块的存在,在数据块损坏的情况下,还能保证读取出其上的数据。服务器还通过读取单元202,接收客户端发起的读取某数据块的请求,将其上该数据块上某个存储位置的数据读出来。因为,在上述已经描述了,客户端缓存有数据块划分信息,知道自己的数据存放在哪一个数据块上,因此可以直接向该数据块所在的服务器发起读取操作。下面参见图I和图2,以及上述相应的分布式集群存储系统的描述,来描述本申请分布式Raid存储方法的具体过程,该方法包括步骤10,中心节点的划分单元101将分布式集群存储系统中多个服务器上的存储介质划分为数据块。具体为例如,假设划分的每个数据块(block)的存储容量为64M,每个服务器上的存储介质按照这个存储容量可以被划分为多个数据块,因此集群系统中多个服务器上的存储介质可以被划分为无数个数据块,并对每个数据块编号,如图所示blockl、block2、........Blockn,可以参见图2所不。步骤11,选择分组单元102根据数据安全性要求,选择Raid级别,将该系统中划分好的数据块进行分组,以及根据Raid级别产生所述组对应的校验数据块,即选择一个或多个数据块作为该组的校验数据块。由于Raid技术中校验位信息的存在,允许存储介质有一定容错率。例如Raid5有一个检验信息位,就可允许一个磁盘发生故障,因此当数据安全性要求是允许单台服务器宕机,系统仍然可以使用时,可以选择Raid5技术的校验位思想应用于该集群系统中。具体地,举例来说,中心节点选择分组单元102根据实际情况对数据安全性的要求来选择Raid级别以及分组,例如,数据安全性的要求是允许单台服务器宕机,系统仍然可以使用,则确定采用有一个校验信息位的Raid5技术的校验思想来应用于该集群存储系统中,由于采用Raid5,因此需要选择一个数据块作为一个校验数据块;根据数据安全性要求,保证单台服务器宕机,系统仍然可以使用,那么在分组时,每组中的数据块和校验数据块都分布在不同的服务器上。对于多少个数据块分成一组,可根据具体情况确认。一般地,同一组内的数据块越多,整体上冗余度越小,越节省存储资源,但是当有存储介质损坏的时候,数据恢复的时间会越久。选择多少个数据块分成一组并不受限制,在本例中,中心节点选择分组单元102根据实际情况选择8个数据块一组,当然最少只要有2个数据块,这样才能应用本申请,一个作为数据块,另一个作为校验信息块,但这个做法一般不采取,因为相当于传统的一个存储盘,一个备份盘;如图2,选择分布在不同的服务器21至28上的blockl到block8编成一组,由于该组所需一个对应的校验数据块,因此选择分布在不同于这些服务器的另一个服务器29上的数据块作为校验数据块blockl-8。当然,可以得知一个服务器上分布着多个组的数据块。通常,中心节点选择分组单元102会预先分好一定个数的分组。只要已经分好的组能满足使用就可以,中心节点会定期检查是否需要增加新的分组。因为有本地节点宕机等情况发生,已经分好的分组里的组成也可能变化。比如以前数据块blockl至8是一组。但是因为block8岩机,这个组在修复的时候,可能用blocklO代替block8,这样分组就变化了。但该做法是传统的分布式系统的功能,在此不再赘述。由于对数据安全性的要求不同,因此有可能选择其他的Raid校验思想来应用于该集群存储系统中,例如我们对数据安全性的要求是,允许任何2台服务器宕机,系统仍旧可以正常服务;这时,可以选择Raid6的校验思想应用该集群存储系统。这是由于Raid6技术有2位校验信息位,允许出现两个存储介质发生故障。选择了 Raid6技术的校验思想应用于该系统后,则需要有两个存放校验信息的数据块,因此要选择2个数据块作为校验数据块,而为了满足上述数据安全性要求,分布式系统的中心节点在选择组中的数据块时,要保证数据块和校验数据块分别分布在不同的服务器上。这样就可以做到任何2台服务器宕机,系统仍旧可以正常服务。本申请在选择Raid级别时,根据数据安全性要求,可以选择适当的Raid级别。本申请通过采用Raid技术中检验位的思想,给集群系统设置校验数据块的方式增加数据的安全性,且避免像传统分布式存储系统那样需要备份,减少存储介质的占用。步骤12,中心节点记录单元103记录数据块划分信息,该数据块划分信息包括数据块与服务器的对应信息,用来表示哪些数据块分布在哪个服务器上,具体为某编号的数据块在某个服务器上,例如用来表示图2中所示的第一个服务器2上分布着数据块I、数据
块11.........数据块n+1时,即数据块划分信息中记录着编号1、11........n+1的数据
块对应服务器等等;还记录以下信息该分布式集群存储系统采用Raid5或Raid6或者其他Raid级别思想;用来表示每组内的数据块的信息的分组信息,具体为某些个编号的数据块为一组,以及组与校验数据块的对应信息,具体为某个编号的数据块是校验数据块,与哪个组对应。步骤13,服务器根据数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。下面对步骤13根据数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作进行详细说明。在实际应用时,中心节点接收到客户端要求写入某数据的请求,即上述步骤13服务器根据数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之前,还包括步骤131,中心节点存储操作单元104接收到要求数据写入的请求后,中心节点选择待写入数据的一个数据块,例如Blockl,以允许客户端将数据写入,然后中心节点将该数据块相关的数据块划分信息通知客户端。其中,客户端在发送要求数据写入的请求时,会根据它所使用的当前分布式集群存储系统对数据存储大小的限制,来选择数据的大小。具体地,数据的大小是按照当前分布式集群存储系统中心节点对系统中存储介质划分的一个数据块的存储容量而定的。例如,中心节点对存储介质划分数据块,是按照64M的存储容量划分一个数据块,那么客户端在要求写入数据时,发送的数据会控制在这个存储容量大小内。中心节点在挑选数据块时,可遵循现有的分布式系统的挑选方式,比如只挑选全组内所有的数据块都正常而无坏数据块,数据块不处于压缩状态这样的数据块,并且还可考虑各个服务器的写压力来挑选数据块。步骤132,客户端接收到上述数据块划分信息后缓存这些信息,根据数据块划分信息中数据块与服务器的对应信息,例如blockl与服务器21对应,向该一个待写入数据的数据块所对应的服务器,发送数据写入的请求,并附加相关的数据块划分信息。接着,步骤13具体包括步骤133,待写入的一个数据块对应的服务器,例如blockl所在的服务器的校验信息计算单元201,根据写入该数据的请求和数据块划分信息中记录的Raid级别所对应的校验算法,依据该数据块和该数据,计算校验信息,以及将该数据写入其上的数据块Blockl ο由于如前所描述的,客户端要求写入的数据的大小符合一个数据块的存储容量,因此在接收到数据后,直接将数据写入一个数据块中。步骤134,待写入的一个数据块对应的服务器的校验信息计算单元201根据数据块划分信息中记录的组与校验数据块的对应信息,将该校验信息,并附加数据块划分信息传送给该组对应的校验数据块所在的服务器。步骤135,该组对应的校验数据块所在的服务器的校验信息计算单元201,根据数据块划分信息中记录的Raid级别所对应的校验算法,依据校验数据块,计算校验信息后,把计算结果写到所述校验数据块上。在上述过程结束之后还可包括,所述数据块所在的服务器和所述校验数据块所在的服务器向所述分布式集群系统的中心节点上报写入完成信息。上面介绍了写入操作,现在介绍读取操作的过程,本申请在所述写入操作之后还包括读取操作,具体为
客户端根据缓存的数据块划分信息中的数据块与服务器的对应信息,或者中心节点记录的信息,向待读取的一个数据块所对应的服务器发起读取数据的请求,例如读取数据块blockl上的数据;所述待读取的一个数据块对应的服务器的读取单元202根据读取数据的请求,直接读取本地该数据块上的数据。本申请分布式Raid存储方法,首先,把组成一个组的不同的数据块分布到了一个分布式集群系统中的不同服务器上;其次,在写入的时候,总是采用写一个数据块以及对应的校验数据块的方式,使得在读取的时候,只要没有介质损坏,读取引起的输入输出(IO)总量跟全量冗余备份的系统是一致的;最后,采用Raid技术的校验思想,把不同的数据块进行冗余校验计算,可以在相同安全保证的前提下大大降低对存储介质的消耗,从而大大节约成本;系统可以在比传统分布式冗余备份少占用大量空间的情况下提供与传统分布式冗余备份相近的安全保障。下面举例描述上述过程中的步骤133,以选择Raid5级别为例来说明。上述步骤133具体为待写入的一个数据块对应的服务器的校验信息计算单元201按照Raid5的校验算法即异或算法,待写入的一个数据块对应的服务器(例如blockl所在的服务器I)根据客户端发起的写入该数据A的请求中的偏移量,例如pi和字节长度Si,从所述待写入的一个数据块blockl中读出所述字节长度个字节即数据B (即Si个字节);将读出的所述字节长度个字节B与待写入数据A进行按位异或,并将数据块异或结果C = AXORB作为校验信息,发送给所述校验数据块(blockl-8)所对应的服务器29 ;将所述待写入数据A写入所述一个数据块(blockl)中。其中,上述Raid5的校验算法就是数学里面的XOR的算法,根据Raid5校验算法进行计算是现有技术,但也进行了详细描述。根据偏移量写入数据块也是现有技术,在此不再赘述。因为本申请是利用校验数据块存放校验信息来实现数据的安全性以及减少对存储介质的占用。传统的分布式系统为了防止数据丢失,必须做多个备份,而本申请利用了这个校验数据块的存在,那么只需要满足这个校验数据块的存储容量,并且当服务器出现故障时,通过这个校验数据块可以恢复数据,因此在写入操作时,除了对需要写入数据的数据块进行写入操作,还需同时对校验数据块进行写入操作,因此,在所述将所述待写入数据写入所述一个数据块中之后,还包括对所述校验数据块进行写入操作,步骤135具体为所述校验数据块对应的服务器的校验信息计算单元201接收到所述校验信息C,根据所述偏移量Pl和字节长度Si,从所述校验数据块中读出所述字节长度个字节D ;将读出的所述校验数据块中的所述字节长度个字节D与接收到的所述校验信息C=AXORB按照Raid5的校验算法进行按位异或,将异或的结果DXORC = DXOR(AXORB) = E写入所述偏移量的存储位置处。对校验数据块的写入可以看作是对校验信息经过一次Raid校验算法处理后的存放。在本例中,不论是对数据块的数据写入生成校验信息,还是校验数据块的校验信息写入,均是利用了 Raid5的校验算法,而Raid5的校验算法就是数学里面的XOR的算法,上述内容已经对其进行了详细描述,而在现有Raid5技术中也有详细描述。根据偏移量写入数据块也是现有技术,在此不再赘述。本申请集群存储系统中对于任一数据块的写入操作,具体地为写任何一个数据块的时候,都必须写该数据块所在组对应的校验数据块,而校验数据块的个数,可以根据不同的Raid级别来定,如上述例中采用Raid5级别因此有I个校验数据块,如果采用Raid6则有两个校验数据块,那么在写入任一个数据块的时候,都必须同时写该数据块所在组对应的2个校验数据块,即对一个数据块写入时,利用Raid6校验算法产生2个校验信息,然后将2个校验信息分别利用Raid6校验算法写入2个校验数据块。根据不同的Raid级别来决定不同个数的校验数据块,从而实现数据的安全性以及减少对存储介质的占用。根据上面描述的数据写入过程,可以得知在整个分布式集群存储系统中,对于各个客户端每次发起的数据写入请求,在每次将数据写入一个对应的数据块时,每次都会计算一个相应的校验信息,然后将校验信息发送给校验数据块所在的服务器,进行计算后写入校验数据块。因此,校验数据块随着其所在组内的数据块的每次数据写入而每次在更新其上的校验信息的计算结果。例如,假设同组内多个数据块先后接收到要求写入数据A、Al、A2和A3,每一次在写入上面的一个数据时,校验数据块中的数据会发生更新。A数据写入,校验数据块进行校验信息更新,然后Al数据写入,校验数据块进行校验信息更新,此时校验块进行更新数据时,基于计算的基础可能就是前次基于A数据计算的放入校验数据块的数据了,这样一直到A3数据,在这个过程中,只要每次写,校验信息就会更新,而更新的基础本质上就是基于前次的数据(例如A)和当前的数据(例如Al)。因此,校验数据块中存放的数据的计算过程同传统的校验磁盘的校验信息计算过程是不一样的。传统的Raid写入是首先将待写入的数据划分成多个部分进行写入,然后对划分成多个部分的数据进行校验算法,获得校验信息存放入校验磁盘中。在本申请读取操作中,无论Raid采用什么级别,在读取过程中,待读取的数据块所在的服务器会直接读取这个数据块上的内容,并不会像各种Raid中并行读取多个磁盘。本申请上述举例说明中采用Raid5技术的校验思想的时候,对数据的一个写入操作,只会在目标数据块上产生一次读一次写,在校验数据块上产生一次读一次写;而读取的时候,无论采用什么Raid级别只去对应的数据块做一次读操作。而且本申请利用了Raid5 —块校验数据块的思想,在没有发生数据块存储介质损坏的时候,每次写入会比传统方法多两次读操作(具体为数据块写入操作计算校验信息时,和将校验信息写入校验数据块时),读取的消耗跟传统方法一致即只读相应的数据块,但对于读取几倍于写入的系统来说,增加的开销很小。同样地,采用其他Raid级别时,在写入时也会增加读取操作,例如Raid6两块校验数据块时,会多4次读取操作。本申请分布式Raid存储方法除了上述正常的写入/读取这些操作之外,还有以下的情况损坏的数据块的恢复、损坏的数据块的读取以及损坏的数据块的写入这些情况。I)损坏的数据块的恢复当所述数据块中的数据损坏时,服务器的数据恢复单元203按照所述Raid级别所对应的校验算法,将所述组中剩余的所述数据块和所述校验数据块中的数据进行计算,通过计算结果来恢复所述损坏的数据块的数据。服务器损坏的话,也即是服务器中的涉及多个组中的某个数据块损坏,恢复服务器中的数据,也即恢复多个数据块中的数据。该操作也正是利用了 Raid级别的校验算法,来保证即使出现故障,也能够进行恢复数据。接着仍以Raid5为例来说,按照Raid5的校验算法通过计算本组内其它数据块和校验数据块中数据的异或值,可以恢复该组中损坏的数据块中的值。开始恢复过程中,中心节点可以挑选一个新的数据块来代替不可访问的数据块,把新的数据块放到这个组里,把老的块从组中删除,新的数据块的值就通过上面的方式计算得到,要做到单服务器宕机数据还是安全的,只要保证同一组内的数据块和校验数据块,都分布在不同的服务器上就可以了。当一个服务器宕机的时候,有多个组中的数据块都要需要恢复,但这些数据恢复过程,也即是上面描述的,只不过需要涉及多个组中数据块和校验数据块的计算。但是恢复的过程不影响读取,如果读取坏的数据块可通过读取其它未损坏的数据块,然后做异或得到坏的数据块的值,下面将描述有存储介质损坏时候的数据块的读取,并且在写入的过程中只需要选择其它正常的组,而不会影响写入。2)有损坏的数据块的读取当待读取的所述数据块损坏时,服务器的数据恢复单元203根据读取请求中的偏移量和字节长度(即上面描述的某个存储位置)从所述组中剩余的所述数据块中和所述校验数据块中分别读取出数据,将从所述剩余的所述数据块中和所述校验数据块中分别读取出的数据按照所述Raid级别所对应的校验算法进行计算,将所述计算结果作为所述损坏的待读取的所述数据块中的数据。该操作也是利用了 Raid的校验算法以及校验数据块的存在,保证了在数据块损坏的情况下,还能读取出其上的数据。接着还以Raid5为例来说,当有数据块的存储介质损坏,比如中心节点发现读取block3偏移量pi字节长度si的数据,而block3所在存储介质损坏,这个时候本组内其它block的读取不受影响,如果要读取block3的数据,贝U可以通过读取本组内其他所有block和校验数据块偏移量Pl字节长度Si的数据,然后做按位异或运算,得到最终的结果,该结果为当前block3的数据。当介质损坏的数据块的恢复过程(如上面所描述的)完成后,读取过程恢复正常。3)损坏的数据块的写入当有存储介质损坏或者上次写入没能正常完成(比如写了 block3,但是写blockl-8时候出错),则该组block被标记为损坏,损坏的block组在修复之前不能写入。由于block组损坏不能写入这个特性对于只支持追加,不支持修改的分布式存储系统来说不是一个问题,中心节点可以选择其他数据块组支持后续的写入操作。本申请上面描述的例子的是在运用了 Raid5技术的校验思想下进行的。并不是将Raid5所有的工作方式应用于本申请,而只是将Raid5的特点一个校验位引入本申请产生校验数据块,来节约存储介质,以及将校验算法这个特点融合于本申请分布式集群存储系统中来当出现故障时,恢复数据以保证数据的安全性。也即是本申请采用Raid级别是采用校验位节约存储介质以及保证数据安全性的思想,而不是采用Raid的并行思想(Raid的并行思想是在写入的时候并行写入多块磁盘,那么读出的时候,并行读取多块磁盘),通过放大10次数,来减少读取和写入的时间。本申请通过采用校验数据块的方式增加数据的安全性,减少介质的占用。因此,本申请选择Raid级别还可以选用Raid6,将Raid6的思想应用于分布式集群存储系统,Raid6的思想是写两个校验数据块,这样可以保证在有两台服务器宕机时系统仍可用这样一个数据安全性的要求。因此,在对数据块进行写入数据时,只要按照Raid6的校验算法,如传统的Raid6校验算法中的P校验异或算法,Q校验李德所罗门算法进行计算校验信息操作。即在写入操作时,数据块所在服务器将写入数据写入待写入的一个数据块后,利用异或算法和李德所罗门算法分别计算两个校验信息,并将这些校验信息分别发送给校验数据块所在的服务器;校验数据块服务器分别根据Raid6校验算法异或算法和李德所罗门算法将接收到的校验信息计算后,将两个计算结果分布写到两个校验数据块上。具体Raid6的校验算法计算校验信息的过程,为现有技术,在此不再赘述。对于Raid6,同样地正常的读取,也即是直接读取数据块的数据。而当有损坏的数据块的恢复、损坏的数据块的读取也是利用Raide校验算法对一个组内剩余的所有数据块的数据包括校验数据块的数据进行计算。本申请举例说明了 Raid5,通过类比Raid5的实现方式,不难推知Raid6的这些实现方式,在此不再赘述。通过类比Raid5、Raid6的方式,还可以获知利用Raid的其他级别的校验位思想来应用于本申请,即利用其它Raid级别的校验位信息产生校验数据块,然后在写入数据块时利用校验算法产生校验信息,利用校验算法写入校验数据块,在出现安全性要求范围内的故障时,利用校验算法对一个组合的剩余数据块中的数据和校验数据块中的数据进行计算来修复或读取,在此不再赘述。传统的Raid写入是并行进行的,而本申请在具体实现时可以实现数据块串行写入,即用租约的方式保证一个组在同一个时刻,只有一个数据块在被写。而本申请各个数据块的读取是可以并发进行的,而对于一组内各个block写入来说是串行的,这样大大简化了设计和实现。传统的Raid技术,根据具体场景不同,写入时候的策略也是不同的,比如为了加快写入和读取的速度,Raid卡可能采用并行写入,并行读取的方式,把一块数据同时写入到几块磁盘上。但是因为分布式系统必须考虑承载非常大的总的读写量,所以不能把一次读写放到多个盘的并行的多次读写这种方式来加快速度,本申请只是要采用校验数据块的方式减少存储介质的占用,利用Raid校验算法增加数据的安全性。相应地,如图2所示,本申请提供了分布式集群存储系统,该存储系统包括中心节点I和本地节点2 (即本地服务器)。在图中,只是示例性地画出了几个服务器,但并非用于限制。具体如图2,中心节点I包括划分单元101,用于将分布式集群系统中服务器2的存储介质划分为数据块;选择分组单元102,用于选择Raid级别,且将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块;记录单元103,用于将所述Raid级别,分组信息和所述组对应的校验数据块的信息,所述数据块的编号,以及与所述服务器的对应信息记录于数据块划分信息;存储操作单元104,用于根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行存储操作;以及划分有多个所述数据块的所述服务器2。
所述存储操作单元104具体包括存储操作请求接收单元1041,用于接收到写入数据的请求;数据块选择通知单元1042,用于选择待写入数据的一个数据块,并将所述数据块相关的数据块划分信息通知客户端;多个服务器21,具体包括校验信息计算发送单元201,用于根据客户端发起的所述写入数据的请求将待写入的数据写入所述数据块中,以及根据客户端附加的所述数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并发送所述校验信息;或者将接收到的校验信息计算后,将所述校验信息根据所述Raid级别所对应的校验算法进行计算,将计算结果写到所述校验数据块上。所述服务器还包括读取单元202,所述读取单元用于根据发起的读取数据的请求,读取待读取的一个数据块上的数据。所述服务器还包括数据恢复单元203,所述数据恢复单元用于当所述数据块中的数据块损坏时,按照所述Raid级别所对应的校验算法,将所述组中剩余的所述数据块和所述校验数据块中的数据进行计算,来恢复所述损坏的数据块的数据所述服务器还包括损坏读取单元204,所述损坏读取单元用于当待读取的所述数据块损坏时,从所述组中剩余的所述数据块中和所述校验数据块中分别读取出数据,将从所述剩余的所述数据块中和所述校验数据块中分别读取出的数据按照所述Raid级别所对应的校验算法进行计算,将所述计算结果作为所述损坏的待读取的所述数据块中的数据。由于,在上述已经描述了分布式集群存储系统,因此不再赘述。本申请分布式集群存储系统可以执行如上描述的方法的任何过程,在此也不再赘述。本申请通过采用校验数据块的方式增加数据的安全性,减少介质的占用。传统的Raid技术,根据具体场景不同,写入时候的策略也是不同的,比如为了加快写入和读取的速度,Raid卡可能采用并行写入,并行读取的方式,把一块数据同时写入到几块磁盘上。但是本申请只采用校验数据块的方式减少存储介质的占用,利用Raid校验算法增加数据的安全性。因此,本申请分布式Raid存储方法及分布式集群存储系统由于采用Raid校验思想,把不同的数据块进行冗余校验计算,可以在相同安全保证的前提下大大降低对存储介质的消耗,从而大大节约存储成本。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。以上所述的具体实施方式
,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式
而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
权利要求
1.一种分布式独立冗余磁盘阵列Raid存储方法,其特征在于,包括 将分布式集群系统中多个服务器的存储介质划分为数据块; 将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块; 记录数据块划分信息,所述数据块划分信息包括所述Raid级别、分组信息和所述组与校验数据块的对应信息,以及所述数据块与所述服务器的对应信息; 根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。
2.根据权利要求I所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述组中的所述数据块和所述校验数据块是按照数据安全性要求分布在所述分布式集群系统中的服务器中。
3.根据权利要求I所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作具体为 中心节点接收到客户端的数据写入请求后,选择待写入数据的一个数据块,并将所述数据块相关的所述数据块划分信息通知客户端; 所述待写入数据的一个数据块对应的服务器,根据客户端发起的写入数据的请求和客户端附加的所述数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并将待写入数据写入对应数据块中,并将所述校验信息附加所述数据块划分信息,传送给所述组对应的校验数据块所在的服务器; 所述组对应的校验数据块所在的服务器将所述校验信息根据所述数据块划分信息中的所述Raid级别所对应的校验算法进行计算,将计算结果写入所述校验数据块。
4.根据权利要求3所述的分布式独立冗余磁盘阵列存储方法,其特征在于,还包括所述数据块对应的服务器和所述校验数据块对应的服务器向所述分布式集群系统的中心节点上报写入完成信息。
5.根据权利要求1-3任一项所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括 待读取的一个数据块所对应的服务器根据发起的读取数据的请求,读取待读取的一个数据块上的数据。
6.根据权利要求1-3任一项所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括 当所述数据块中的数据块损坏时,按照所述Raid级别所对应的校验算法,将所述组中剩余的所述数据块和所述校验数据块中的数据进行计算,来恢复所述损坏的数据块的数据。
7.根据权利要求1-3任一项所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作之后还包括 当待读取的所述数据块损坏时,将从所述组中剩余的所述数据块中和所述校验数据块中按照偏移量和字节长度分别读取出的数据,按照所述Raid级别所对应的校验算法进行计算,将所述计算结果作为所述损坏的待读取的所述数据块中的数据。
8.根据权利要求3所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述根据客户端发起的写入数据的请 求和客户端附加的所述数据块划分信息中的Raid级别所对应的校验算法,计算校验信息,并将待写入数据写入对应数据块中具体包括 所述Raid级别为Raid5,按照所述Raid5对应的校验算法,所述待写入的一个数据块对应的服务器根据所述写入数据的请求中的偏移量和字节长度,从所述待写入的一个数据块中读出所述字节长度个字节; 将读出的所述字节长度个字节与待写入数据进行按位异或,获得异或结果作为校验信息; 将所述待写入数据写入所述一个数据块中。
9.根据权利要求8所述的分布式独立冗余磁盘阵列存储方法,其特征在于,所述组对应的校验数据块所在的服务器将所述校验信息根据所述Raid级别所对应的校验算法计算,将计算结果写到所述校验数据块上具体包括 所述校验数据块对应的服务器接收到所述校验信息后,根据所述偏移量和字节长度,从所述校验数据块中读出所述字节长度个字节; 将读出的所述校验数据块中的所述字节长度个字节与接收到的所述校验信息按照所述Raid5对应的校验算法进行按位异或计算,将计算的异或的结果写入所述偏移量的存储位置处。
10.一种分布式集群存储系统,其特征在于,包括 中心节点,包括 划分单元,用于将分布式集群系统中服务器的存储介质划分为数据块; 选择分组单元,用于选择Raid级别,且将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块; 记录单元,用于将所述Raid级别,分组信息和所述组对应的校验数据块的信息,以及与所述服务器的对应信息记录于数据块划分信息; 以及 划分有多个所述数据块的所述服务器,用于根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。
全文摘要
本申请涉及一种分布式独立冗余磁盘阵列Raid存储方法,该方法包括将分布式集群系统中服务器的存储介质划分为数据块;选择Raid级别,且将所述数据块进行分组,以及根据Raid级别选择一个或多个所述数据块作为所述组对应的校验数据块;记录数据块划分信息,该数据块划分信息包括所述Raid级别,分组信息和所述组对应的校验数据块的信息,以及所述数据块与所述服务器的对应信息;根据所述数据块划分信息,对分组后的所述数据块和校验数据块进行写入操作。本申请还涉及一种分布式集群存储系统。本申请把不同的数据块进行冗余校验计算,可以在相同安全保证的前提下大大降低对存储介质的消耗,从而大大节约成本。
文档编号G06F11/14GK102981927SQ20111026170
公开日2013年3月20日 申请日期2011年9月6日 优先权日2011年9月6日
发明者褚大鹏 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1