服务器磁盘列阵技术支持部:张志国服务器磁盘阵列发展:在计算机发展的初期,“大容量”硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐。1987年,Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《ACaseofRedundantArrayofInexpensiveDisks(廉价磁盘冗(rong)余阵列方案)》的论文,其基本思想就是将多只容量较小的、相对廉价的硬盘驱动器进行有机组合,使其性能超过一只昂贵的大硬盘。这一设计思想很快被接受,从此RAID技术得到了广泛应用,数据存储进入了更快速、更安全、更廉价的新时代。RAID技术规范简介:独立磁盘冗余阵列的英文名称为RedundantArrayofIndependentDisks,也就是我们通常所说的RAID。RAID的作用就是把多个独立的磁盘组合在一起,成为一个磁盘组,而这个磁盘组我们可以将它看成一个大的磁盘,这是因为这个磁盘组的性能并没有受到多个磁盘组合而造成性能减弱,相反还有所增强,因此,RAID技术被广泛用于数据存储行业中。在大型存储中,我们通常通过存储机柜来实现数据存储;而在服务器上的存储,我们就通过支持RAID功能的RAID卡来实现。RAID种类及作用:RAID分为很多种,如常见的RAID0、RAID1一直到RAID7,另外还有组合,如RAID0+1(也被称为RAID10)、RAID0+5(50)、RAID5+3(RAID53),每一个RAID级别都有其优点和缺点。下面和大家一起认识四种常用的RAID(RAID0、RAID1、RAID0+1、RAID5)工作方式。RAID0:采用磁盘分段的方法把数据写到多个磁盘,而不是只写到一个盘上,这叫RAID0,在磁盘阵列子系统中,数据按系统规定的“段”(Segment)为单位依次写入多个磁盘,例如数据段1写入磁盘1,段2写入磁盘2,段3写入磁盘3等等。当数据写完最后一个磁盘时,它就重新从盘1的下一可用段开始写入,写数据的全过程按此重复直至数据写完;简单来说RAID0使用的是平行存取方式。RAID0系统的工作原理:RAID0系统的优缺点:该系统由三块磁盘同时读写同一数据的不同数据块来达到三倍于原来磁盘的速度。实际上,RAID也可以只使用两块磁盘。上图中,在任何时刻,这三块磁盘都在同步地工作,但它们读写的内容却完全不同。由于一个传输过程由三个磁盘各完成1/3,也就相当于传输带宽增加了三倍,所以操作时间也就减少了2/3。其中RAID0控制器的作用就是将原来的数据均分为三份给三块磁盘写入或将三块磁盘读出的数据合并在一块儿交给外部数据总线。磁盘数量越多,速度就越快,容量就越大(单盘速度×硬盘数量=RAID0的总速度;单盘容量×硬盘数量=RAID0的总容量)。但是,可靠性是单独使用一块磁盘的1/N。磁盘量越多,可靠性就越低(即是容易比单盘发生故障),一个磁盘出故障或磁盘坏了数据将会丢失。所以RAID0最好备份一下结构和分区表信息,便于一般故障的恢复。RAID1RAID1:RAID1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性、可修复性,具有很高的数据冗余能力,但磁盘利用率为50%,成本高,多用在保存关键性重要数据的场合。但是在RAID中,它同样是占用了一些CPU时间,把写往主盘的数据同步地写到镜像盘。RAID1系统的工作原理:写在磁盘1和磁盘2上的数据是完全一样的,如写在磁盘1上的数据1、2、3,也同样写在磁盘2上,对外只显示一个带有数据1、2、3的磁盘。RAID1系统的优缺点:RAID1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的磁盘出现问题时系统都可以正常运行。出现磁盘故障之后RAID系统不再可靠,因为只有一个磁盘正常运作,应当及时的更换损坏的磁盘,否则剩余的镜像磁盘时间长了也可能出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。RAID1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。RAID1磁盘的写速度可能下降1/4左右,读取速度比单盘可能提高1/4左右,因为RAID1读取时,系统会同时从两个盘上搜索,把先读取到的数据传输回来。RAID1+0(也被称为RAID10):虽然RAID1也可以获得少许的性能提升,但是相对RAID0来说恐怕是微不足道了。因此,在性能和安全兼顾的情况下,就出现了RAID1+0。RAID1+0至少使用4个磁盘,这样,RAID1+0在理论上同时保证了RAID0的性能和RAID1的安全性,代价是比RAID0或1再多一倍的磁盘数量。RAID1+0系统工作原理:RAID1在这里就是一个冗余的备份阵列,而RAID0则负责数据的读写阵列。其实,图3只是一种RAID10方式,更多的情况是从主通路分出两路(以4个磁盘时为例),做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。RAID1+0系统的优缺点:RAID0较高的读写效率和RAID1较高的数据保护、恢复能力,使RAID10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID10对存储容量的利用率和RAID1一样低,只有50%,读写速度增加是单盘的一倍。拥有RAID1数据保护及容错能力,具有RAID0比较高的I/O带宽,容错处理的系统和单独的镜像基本上一样。对在RAID1基础上提高性能,RAID10它就是完美的解决方案。适用于数据库服务器等需要高性能、高容错而对容量要求不大的场合上。由于存储容量的利用率较低,成本昂贵造成非常有限的扩展性。并且所有磁盘必须并行存取,工作使用磁轨的持续性能被减弱。RAID5:RAID5是一种存储性能、数据安全和存储成本兼顾的方案,它使用的是DiskStriping(硬盘分割)技术,RAID5不是利用镜像而是利用分散奇偶校验冗余数据。RAID5可以理解为是RAID0和RAID1的折衷方案,RAID5可以为系统提供数据安全保障,但保障程度要比Mirror(RAID1镜像)低而磁盘空间利用率要比Mirror(RAID1镜像)高。RAID5:RAID5可以理解为是RAID0和RAID1的折衷方案。RAID5是一种存储性能、数据安全和存储成本兼顾的方案,它使用的是DiskStriping(硬盘分割)技术,RAID5不是利用镜像而是利用分散奇偶校验冗余数据。RAID5可以理解为是RAID0和RAID1的折衷方案,RAID5可以为系统提供数据安全保障,但保障程度要比Mirror(RAID1镜像)低而磁盘空间利用率要比Mirror(RAID1镜像)高。RAID5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID5校验位算法原理:P=D1xorD2xorD3…xorDn(D1,D2,D3…Dn为数据块,P为校验,xor为异或运算)XOR(ExclusiveOR)的校验原理如下表:A值B值Xor结果000101011110这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。RAID的保存原理是用BitStriping及当前主流BlockStriping的分割方式,将Data分散保存至各硬盘中,当硬盘有受损时则经由XOR运算,再将存在其他各硬盘内的ParityBlocks及DataStripe磁区的DataBlocks进行计算而重建资料Rebui。RAID5系统的正常工作:RAID5系统的受损时工作:RAID5系统的恢复时工作:RAID5系统的优缺点:RAID5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较低。RAID5是采用奇偶校验的方法维护数据,这些奇偶校验的信息只占用一块磁盘的容量,所以RAID5的实际容量相当于阵列中的磁盘数减1,数据读写速度等于单盘的速度×盘数,具有相对较好的综合性能。RAID5E(RAID5Enhencement):RAID5级别基础上的改进,与RAID5类似,数据的校验信息均匀分布在各硬盘上,但是在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID5E和RAID5加一块热备盘好象差不多,其实由于RAID5E是把数据分布在所有的硬盘上,性能会与RAID5加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持RAID5级别。RAID5EE:常见于IBM的磁盘阵列产品。RAID5EE和RAID5E类似,只是热备用空间被分布在各个Extents(它是在IBM主机中用于创建RAID的单位)中,就像RAID5的检验数据那样分散布置一样;如过某个Extent故障,那么剩余Extent中的热备用空间,将会被立即用于重建数据,并保证它成为原来RAID5的一部分。同RAID5E相比,它不是把热备用空间放到每个Extent的尾部,而是分布在数据块其中,它允许任何两块磁盘的损坏,但是不允许任何两块磁盘同时损坏。RAID5EE数据分布原理:代表数据,P代表校验信息,S是指的热备的空间。可以看到,被预留出来的热备空间是均匀分布在硬盘上的。RAID5EE允许两个磁盘出错,最少需要4个硬盘来实现,其性能和RAID6相当。但是RAID5EE不能同时损坏两个磁盘,当一个磁盘故障后,RAID5EE会自动修复到compact模式,相当于RAID5。当自动修复完成后,才允许第二个磁盘的故障。RAID2:将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用称为“加重平均纠错码(海明码)”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂,因此在商业环境中很少使用。RAID3:它同RAID2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。RAID4:RAID4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID4在商业环境中也很少使用。RAID6:与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID6很少得到实际应用。RAID7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID7可