20050608

性能与安全并存——深入探讨SATA RAID 5

Author:  WinkCategories:  Hardware
Tags:  , ,
  • 作者:龙子健
  • 原载:《微型计算机》2005年7期
  • 版权:本文版权归龙子健及微型计算机所有

随着Intel率先将RAID 0/1功能集成在ICH中,现在越来越多人正享受着RAID带来的好处,但速度第一的RAID 0却牺牲了安全性,以机械为基础的硬盘在可靠性方面本来就难以达到电子产品的标准,数据传输速度几乎倍增的RAID 0系统发生故障的几率接近单个硬盘一倍。因此,Intel开发出Matrix RAID Storage(矩阵存储)技术,将RAID 0与注重数据安全的RAID 1根据日常应用结合起来。不过,RAID 1的性能始终被那些“性能第一”的狂热者所嗤之以鼻。用户需要性能与安全性并济的方案,虽然矩阵存储技术也有一点点这样的味道。

RAID 5曾是普通用户心中高不可攀的磁盘阵列系统,在关键服务器领域得到了广泛应用,但SCSI RAID 5过于复杂的组建方式以及高昂成本却使得其与普通服务器领域无缘。现在,我们看到RAID 5正大规模地应用于企业级存储领域,这得益于相对简洁的SATA接口标准。如果说2004年是RAID 5向普及化进军的一年,那么SATA RAID 5现在已“兵临城下”了。

实际上,现在很多面向高端的主板都板载兼容SATA RAID 5的控制芯片,为喜欢尝鲜的用户提供有限的SATA RAID 5功能。据资料显示,Intel将在ICH 7中提供对原生SATA RAID 5的支持,当然,这样的SATA RAID 5功能与独立控制卡甚至传统的SCSI RAID 5相比还存在一定差距。

图1

主板板载的Silicon Image 3114控制芯片,支持RAID 0、1、0+1/1+0、JBOD以及外挂软件支持的RAID 5,该芯片基于32位PCI接口。

一.为何要使用RAID 5?

熟悉服务器应用的朋友应该对RAID 5并不陌生,该RAID级别广泛应用在高端领域,其基础是SCSI接口。如果需要配备高性能的RAID 5系统,那么在以前一块RAID控制卡是必不可少的,尽管操作系统和软件也能够实现RAID 5,但其效率和可靠性还是要低于硬件级别,因为软件级RAID 5的实现必须依赖于处理器的密集数据运算,较高的CPU占用率对整个系统而言不是什么好事情,往往硬盘子系统的性能提升不足以抵消CPU用于其它方面的运算力下降。

我们所关注的当然不是SCSI RAID 5——IDE硬盘的价格比SCSI硬盘便宜得多,RAID控制器的价格也比较合理,而且SATA RAID 5的性能表现也不会和SCSI解决方案相差太远,即使与RAID 0、RAID 0+1/1+0相比,其性能也是可圈可点的。值得一提的是,对于PC而言,RAID 5绝对是不易实现的,甚至在工作站领域,虽然RAID 0+1(Striping+Mirroring)或RAID 1+0(Mirroring+Striping)会占用更多硬盘空间,但它们仍属于高级且高速的解决方案。

图2

图3

小知识

RAID 0+1与RAID 1+0:RAID 0+1和RAID 1+0都属于嵌套式阵列,它们结合了RAID 0和RAID 1的优点,在具备RAID 0高性能的同时提供RAID 1的镜像能力。我们以组建4个硬盘为例,RAID 0+1先将硬盘#1和#2组建成RAID 0,称之为磁盘组(Stripe Set)#A(即数据磁盘组),然后#A被整体镜像成磁盘组#B(镜像磁盘组),因此,当数据磁盘组发生故障时,所有数据都可以从镜像磁盘组中恢复过来。

但是,如果镜像磁盘组中任何一个硬盘在数据磁盘组故障的期间出现问题,那么用户全部的数据将会丢失。为解决这个问题,工程师开发出RAID 1+0(又称RAID 10)。和RAID 0+1刚好相反,硬盘#1、#2和硬盘#3、#4分别先按照RAID 1组建成磁盘组#A和#B,接着#A和#B再组成RAID 0,由此数据被平分为二,分别存储在#1和#5,而#2和#4分别是#1和#5的镜像。RAID 1+0在性能方面同RAID 0+1一样,但却具备比RAID 0+1更高的可靠性,倘若硬盘#2发生故障并且在其恢复正常之前#5出现问题,RAID 1+0系统仍然运行无阻,因为#2和#5分别处于不同的磁盘组。唯一导致RAID 1+0出现不可恢复的情况,只有当硬盘#1或#4发生问题时才会出现。

RAID 0和RAID 1的架构发展至今已相当完整,不过还是无法同时兼顾性能与加强硬盘故障时的数据安全性。RAID 0在安全级别上是最低的,而以镜像方式存储数据的RAID 1系统则多应用于关键数据存储,不过其性能只比单一硬盘稍高,某些情况下甚至不升反降;RAID 0+1/1+0可以说是兼顾了性能和可靠性,但该级别的RAID对硬盘空间的浪费较多,而且最少需要4块硬盘,其实际的可利用率只有50%。矩阵存储技术可以看作改进的RAID 0+1或RAID 0+1的变异。

本文的主角RAID 5在兼顾性能和安全性的同时,对硬盘空间的利用更为合理,但这需要需要强大的逻辑处理能力以便应付阵列中数个硬盘的同时运作,并在磁盘组的所有硬盘中交叉写入资料及校检码信息。当执行这个功能时,并不要求特别复杂的硬件架构,但是当数据传输速率增加时却会使CPU的负荷突然飙升,这对于非控制卡的组建方式而言更为明显。

RAID控制卡

RAID控制卡就像一个微缩的计算机,只不过它专注于处理数据存储工作。控制卡上可以找到处理器、Cache等部件,其中处理器负责绝大部分存储所需的数据运算。速据的分配存储、整合以及校验则都由控制卡来完成,从而有效地降低对CPU地占用——软件级RAID 5中CPU就是代替RAID控制卡完成复杂的数据运算。

图4

二.揭开SATA RAID 5的神秘面纱

由于PATA使用带状的并行线缆,会不可避免地出现信号延迟、电磁干扰以及线缆完整性等各种问题,而这些问题在采用SATA接口后得到缓解。同时,SATA采用了一种称为差分NRZ(Non Retun to Zero,非归零)的物理传输方式,并且对传输的数据使用了8b/10b的特殊编码/解码方法,进一步降低了误码率(下文将详解8b/10b技术)。SATA RAID 5相对于SCSI RAID 5作了一定程度的简化以便符合SATA本身的局限,但其基本原理和SCSI RAID 5相同,就是通过奇偶校验(Parity)来提供RAID所必需的数据可靠性。

1. RAID中的Parity

数据镜像是RAID 1最主要的特征。在所有级别的RAID中,镜像模式是最“浪费”硬盘空间的一种。除了RAID 1,RAID 0+1/1+0也必须将50%的总硬盘容量用作镜像,尽管其读/写性能均首屈一指(4块硬盘的情况下),但由于支持RAID 0+1/1+0的控制器架构较为复杂,因此人们开发出适用于RAID的Parity,这也是RAID 5的灵魂所在。RAID 0的原理简单来说是数据的块状分割(Block-level Striping),RAID 5则在这个基础上加入Parity信息,从这个角度来看RAID 5可以说是在RAID 0的基础上发展而来的。

应用于RAID的Parity跟内存的奇偶校验十分相似,其工作原理并不复杂。首先提取名为“N”的若干数据段,从“N”中计算出额外的一个数据段;接着提取“N+1”数据段,将其储存在“N+1”的硬盘上。倘若遗失了“N+1”中的任何一个数据段,遗失的部分就能够从“N”中恢复过来,而不管是哪一个数据段或者有多少个数据段。前文已提及,RAID的Parity技术是在数据分割的基础上加以利用,因此"N"数据段是以块(Blocks)或字节(Bytes)的形式均匀分布在阵列中的各块硬盘之上,这是其中一种情况,也是RAID 5的基本架构;另外一种情况是Parity信息集中存储在一个硬盘上,这个硬盘专门用作校验功能,即RAID 3。

图5

RAID 3原理图。所有数据被分割成A0-A3(硬盘#1)、B0-B3(#2)、C0-C3(#3)、D0-D3(#4)四段,以及分别对应A、B、C和D段的Parity信息(硬盘#5),因此,硬盘#1、#2、#3和#4就是数据盘,#5则是Parity盘——所以,RAID 0模式的硬盘#1至#4加上#5就构成了RAID 3。

Parity信息的计算基准是由称之为“异OR(Exclusive OR)”或“XOR”的逻辑运算所决定的——在逻辑学中,当任何一个操作数(Operand)为“真(True,1)”时OR就为true,相反当所有操作数均为“假(False,0)”时OR才为false;有且仅当只有一个操作数为true时XOR为true,这有异于OR,倘若有两个或者更多操作数为true时XOR为false,而OR则为true——两个操作数的具体情况请见真值表。

表1

值得注意的是,当两个操作数#1和#2均为true时XOR的返回值。如果计算“A XOR B”的逻辑运算式,然后将结果R再进行“XOR B”的运算(即R XOR B),所得到的结果将返回到操作数A,即开始计算的地方,更确切地说“(A XOR B) XOR B = A”。这一XOR的性质就应用在RAID的Parity上,从“N”中恢复“N+1”的数据段。

现在假设有四个数据元素,D1、D2、D3和D4,我们可以根据上述原理计算出Parity信息——DP = D1 XOR D2 XOR D3 XOR D4,接着假设知道D1、D2、D3和D4这四个数据之中的任何三个以及DP,就很容易地用这四个数据以XOR计算出遗失的部分(D1、D2、D3或D4中的任何一个)。

尚未接触过逻辑学的朋友要理解上述内容可能较难,那就让我们来实战一下吧。现在有四个字节数据:D1=10100101、D2=11110000、D3=00111100和D4=10111001,接着我们一步步地把它们“XOR”在一起,其方法是两个操作数的逐位运算:

D1 XOR D2 XOR D3 XOR D4
=((10100101 XOR 11110000) XOR 00111100) XOR 10111001
=(01010101 XOR 00111100) XOR 10111001
=01101001 XOR 10111001
=11010000

那么结果“11010000”就是Parity信息DP。现在将五个数据分别写入五个硬盘,如果存储着D3的第三块硬盘发生故障从而导致数据丢失,而第五块硬盘又没有Parity信息,那么D1、D2、D3和D4将会全部遗失。但现在只需将D1、D2、D4和DP“XOR”起来,则:

D1 XOR D2 XOR D4 XOR DP
=((10100101 XOR 11110000) XOR 10111001) XOR 11010000
=(01010101 XOR 10111001) XOR 11010000
=11101100 XOR 11010000
=00111100

看,D3回来了!假如D1、D2或D4当中一个数据遗失,结果也是一样——用户不会因此承受数据损失!上述例子就是RAID 3、RAID 5的前身。可以看到,Parity信息必须依赖于二进制运算,由此也可以看出SATA采用的8b/10b编码方式的优越性所在。

相对来说较为复杂的XOR逻辑运算需要平稳的电压波形,从上面可以看出,参与XOR运算的8位字节数据当中“0”和“1”经常连续出现,或者会有超过5个0(或1)或者少于4个0(或1)——由于1和0是以电压变化的形式在线路上传输,因此这确保了电压变化的问隔非常平均,脉冲波形也很规整平稳,这就为电路提供了一个稳定的负载,从而有效提高数据传输的可靠性。所以,SATA RAID 5无论在性能还是可靠性方面均要远优于PATA RAID 5,这其中以8b/10b编码方式贡献甚大。

8b/10b编码方式与差分传输

8b/10b传输编码最初由IBM在80年代发明(其专利也属于IBM),当时主要用于高速数据通信,现在这种编码方式也用于多种数据传输标准中,例如千兆以太网、光纤通道、IEEE 1394等等。采用8b/10b编码的主要目的是为了保证不出现连续4位“0”或“1”,这是一种称为“RLL0,4”的运行有限长度(Run Length Limited)编码方式,其中“0”代表编码字符中连续0的最小个数,而“4”代表连续0的最小个数。除此之外,8b/10b也保证了在一个10位编码字符中不会有超过6个0(或1)或者不会少于4个0(或1)——由于“1”和“0”是以电压变化的形式在线路上传输,因此确保了电压变化的间隔很平均,脉冲波形也很规整平稳,为电路提供了一个稳定的负载,从而有效提高数据传输的可靠性。

差分NRZ使用一对线路,每一根都携带+0.25V或-0.25V的电压,而信号按照不同的方式发送:如果一根线路使用+0.25V的电压,另一根则使用-0.25V,两根线路的电压差始终保持在0.5V,这意味着给定一根线路的电压波形,则另一根的电压波形将与此相反。这种差分传输方式最大程度地减少了电磁辐射,接受端也很容易读取到信号,而杂乱地电磁辐射正是并行总线的通病。

2. 数据在RAID 5中穿梭

从XOR的逻辑运算规则可以看出,XOR为true的条件比较苛刻,当只有一个操作数为true时XOR才为true,现在我们假定当操作数为true时,操作数所在的硬盘即发生故障,也就是这个操作数丢失,而操作数为false时一切正常。此时问题出现了,假若同时有两个操作数为true,则XOR的返回值是false,这时结果跟当两个操作数同时为false时差不多,即XOR不起作用。更确切地说,“false XOR false”代表RAID 5中的所有硬盘正常(假设只有两块硬盘),也没有必要动用XOR(XOR=false),而“true XOR true”就是阵列中同时有两个硬盘发生故障,这时候XOR也无能为力(XOR=false)。由此可得出结论,RAID 5中要保证数据完整无缺,就只允许一块硬盘出现问题,倘若同时有两个硬盘不济,那么数据将难逃全部丢失的厄运。

RAID 5相对于RAID 3最大的改进是不再集中Parity信息于一块硬盘中,取而代之的是将各个数据盘生成的Parity信息分割为条块并分别存放到组成阵列的各个硬盘中去。无论是RAID 3还是RAID 5,凡是采用Parity作为容错的RAID级别中,任何数据的改变都要修改相应的Parity信息,而RAID 3有多块数据盘且并行运行,但Parity盘只有一块,这就造成存放Parity信息时的性能瓶颈。而且,Parity盘的高工作负荷使得其故障几率大大增加,降低了RAID 3的可靠性。而RAID 5将不同系的Parity信息分派到各块硬盘中,在一定程度上缓解了Parity信息存放时所产生的瓶颈问题,但Panty信息的分派及存放控制均要付出速度上的代价。

RAID 5如何分割数据:数据条块化中的条块单位

RAID 5相对于RAID 3的另一个重要改进是数据的分割(条块化)方式,这两者之间还有一种采用与RAID 5类似数据分割方式的RAID 4。RAID 4介于RAID 3与RAID 5之间,将Block-level Striping代替RAID 3的字节状分割(Byte-level Striping)(即条状单位为块,而RAID 3的为字节),但继续沿用RAID 3的单一Parity盘,而不是RAID 5的Parity信息分派。RAID 3的Byte-level Striping和RAID 0是一样的,前文已经提及,而RAID 5缩采用的则是Block-level Striping,这样做的好处是能够改善其随即存取性能,而RAID 3因受制于Byte-level Striping,其随机读取以及随机写入性能均收到限制。

RAID 4和RAID 5同为采用Block-level Striping,因此不同大小的文件的分配是一样的,即根据文件的块分割大小而在各块硬盘间有所调整,从而达到提升性能的目的:两者不同的是RAID 4中还是将第4块硬盘单独作为Parity盘(图6),而RAID 5的Parity信息则分派到各块硬盘中(图7)。

图6

由5块硬盘组成的RAID 4,对比前文的RAID 3原理图,两者虽然都只有一块Parity盘,但它们并不相同,RAID 3的Parity盘采用的是Byte-level Striping,而RAID 4的是Block-level Striping,导致这个差异的原理很简单——Parity信息来源于数据盘,数据盘采用何种数据分割方式,则Parity盘也跟随。

图7

同样5块硬盘组成的RAID 5。RAID 5不指定单独的Parity盘,而是在所有硬盘上交叉地存取数据及Parity信息。RAID 5与RAID 3、RAID 4相比,最主要的区别在于RAID 3和RAID 4每进行一次数据传输就需涉及到所有的阵列盘,而对于RAID 5来说,大部分的数据传输只对一块硬盘操作,并可进行并行运作,由此提升其随机读写性能。因此,虽然RAID 4和RAID 5同为Block-level Striping,但细节还是有差别的,其取决于Parity信息是否集中储存在单一硬盘。

三.效能与可靠性深入剖析

RAID 5如何将数据写入到硬盘?一个典型的RAID5写入过程共需要8个非连续的步骤,其中第4以及第5步是计算Parity信息的关键步骤,这里被修改的数据存放在硬盘#1,而相关的Parity信息存放在#4。

图8

  • 第1步:准备向阵列写入新数据;
  • 第2步:读取旧的数据块(即准备替换掉的数据)到内部缓冲区(Internal Buffer);
  • 第3步:读取旧数据块的对应Parity信息到内部缓冲区;
  • 第4步:删除目标数据块的Parity信息;
  • 第5步:计算出新的Parity数据(1 XOR 4);
  • 第6步:将新的Parity信息写入到硬盘;
  • 第7步:将新的数据写入到硬盘;
  • 第8步:利用中断(Interrupt)表示I/O通信完成。

1. “写损失”

可以看出,RAID 5中存在比较严重的“写损失”,即每次写操作将产生四个实际的读/写操作,其中两次是读取旧的数据(第2步)和Parity信息(第3步),以及两次写入新的数据(第7步)和Parity信息(第6步)一一任何数据的写入都需要把对应的所有Parity信息读取出来,而不管Parity信息是分布在哪些硬盘上,然后完成校验计算并修改后再写回去。尽管RAID 5不再受到单一Parity盘的限制,但写入Parity信息的瓶颈仍然存在。

因此,对于需要强劲写性能的应用而言,RAID 5并不是很好的选择,也许RAID 0+1/1+0才更符合你的口味,倘若你因为成本的关系而选择RAID 5,那么在数据写入繁重的环境中,RAID 5不太理想的写性能将会表露无遗。而相对于较为糟糕的写入性能,RAID 5的读取性能让人惊叹,实际上RAID 5的读取性能比RAID 0更为出色。Parity信息在读状态时并不需要,因此这导致RAID 5处于读状态时跟RAID 0类似,但显然RAID 5中的硬盘数量比RAID 0要多,一般RAID 0只由两块硬盘构成,过多的硬盘会导致更高的故障率,而RAID 5中硬盘数量的增多并没有显著地增加其故障的机会,一般RAID 5由4块硬盘组成,这能够更充分发挥出RAID的优点——并行运行。

2. 随机读写性能的反差

RAID 5中最大的性能反差是随机读取与写入性能。当需要读取的数据分布在一块或更多硬盘的某部分时,只要另外的读取请求并不要求作用于目标硬盘,则这些不相关的数据就可并行进行读取操作(不相关的意思是彼此的数据不在同一个或几个硬盘之上),理论上,随机写入也应该是这样,但很不幸遇到了这样的问题:当你每次修改任何数据时,系统必须重新计算被修改部分的Parity信息,而Parity信息就需要两次的写操作加上读取所有相关的数据块!假设一个由5块硬盘构成的RAID 5,现在我们需要分布在硬盘#3、#4、#5和#1的数据,其Parity信息在硬盘#2。我们的要求并不过分,只需要稍微修改位于#3的数据块,倘若没有Parity,RAID控制器只需将目标数据写入到#3的相应位置,但实际上并不是这样简单,修改硬盘#3的相关数据直接影响到对应的Parity信息,因此一次写入变成一连串的复杂操作,包括位于硬盘#4、#5和#1数据块的读取,接着是Parity信息的重新计算,即“#4 XOR #5 XOR #1 XOR #3(新的数据块) = DP”,然后将新的数据块写入到#3,最后将更新的Parity信息DP写人到#2——就是为什么RAID 5的随机写入性能如此地差劲,也验证了软件级RAID 5不值得我们推荐,除非你对性能不感兴趣。

3. 利用Caching缓解RAID 5的问题

简单来说,RAID系统中的Caching跟在CPU、硬盘内的Cache很相似,同样都是作为临时存储区用来协助较慢的设备适应较快的设备。很多RAID控制卡都板载有大容量的Cache,这为数据的分配/整合、读取/写入和计算Parity信息提供临时的存储空间,同时,和硬盘上Cache的功能一样,RAID控制卡上的Cache也可缓冲来自内存和硬盘的数据,还可以缓解因接口带宽不足而造成的瓶颈,尤其是对于RAID 5而言,当数据写入时常常涉及大量数据在硬盘和RAID控制卡的CPU、或控制卡和内存之间的交换,Cache此时就能发挥出巨大作用。

能够对提高RAID 5的写性能真正有帮助的是Write Caching,又称回写式高速缓存(Write-back Caching)。RAID 5的写性能远逊于其读性能,并且差距会随着阵列中硬盘数量的增加而扩大,而读/写性能之间的差距越大,RAID 5就能够越多地从Cache中得益。RAID控制卡的Cache有板载固定以及可扩充两种,对于由3至5块硬盘组成的RAID 5,128MB或256MB Cache并不能造成明显的性能差异,而更大规模的RAID系统则会从更大容量的Cache中受益。

4. 如何分析RAID 5的可靠性

现在假定有一个由4块硬盘组成的RAID 5(硬盘#1、#2、#3和#4),并且所有Parity信息存储在每个硬盘中,现在硬盘#2出现问题,因此储存在#2中的数据以及Parity信息都会全部丢失。这时候问题来了,没有了Parity信息怎么进行XOR运算?

很简单!由于硬盘#2的Parity信息属于#1、#3和#4的数据,因此,系统只需执行“#1 XOR #3 XOR #4”就可以重新计算出遗失了的Parity信息,这就是之前所说的“交叉地存取数据及Parity信息”的内涵所在。同样,硬盘#3的Parity信息属于#l、#2和#4中的数据。待恢复了Parity信息后就可以按照“#1 XOR #3 XOR #4 XOR DP”计算出硬盘#2的所有数据——这确实是一项比较繁琐的工作,RAID 5执行数据恢复绝对是一场漫长的马拉松。通过上述分析我们也就发现,假若硬盘#3也来凑热闹,则由于两者Parity信息的计算存在互相依赖的关系,即缺失#3的数据去执行“#1 XOR #3 XOR #4”来重新计算#2的Parity信息,也就谈不上数据恢复了。

为了能跨越磁盘组里的所有硬盘来写入数据及Parity信息,RAID 5的组建最少需要三个硬盘,在这种情况下,会有33%的硬盘空间被浪费,虽然比例较高,但要低于镜像模式的50%,N块硬盘组成的RAID 5系统中可利用的硬盘合计有N-1块——这是以可靠性下降为代价的。当硬盘数目增多时,同位Parity信息需求的硬盘空间比例就会降低,但硬盘故障的几率也会增加,但这种情况不会出现在使用镜像模式的RAID身上,它们比使用Parity的RAID阵列来得更可靠。

四.三种可行的解决方案

通过以上分析可知,RAID 5的运行依赖于密集的运算力,试想每当有写操作时,每秒数百万次的XOR运算!这显然需要强大的硬件支持。目前你可以用三种方法实现RAID 5,当然,为这三种不同的解决方案付出的成本与所获得的RAID 5性能以及其组建灵活性均各不相同。

1. 软件级RAID 5

正如RAID 0、1那样,你也可以完全借助软件来组建SATA RAID 5而根本不需要以硬件形式存在的控制芯片或控制卡。Windows XP内置有软件级RAID 5的引擎,但仍然需要外挂的独立软件去激活它,同时,绝大多数版本的Linux同样能够支持本地SATA RAID 5,且不需要另外其它的软件协助。在硬件上硬盘与主板的连接方式同硬件级SATA RAID 5无异,而操作系统必须利用CPU处理RAID 5运行时所需的庞大运算量,并且这会极大加重I/O的负荷,假如当你运行大型应用程序时,软件级RAID 5所带来的I/O延迟增加将很可能导致程序暂时失去响应,尤其是当写入数据时。将操作系统作为RAID 5的引擎无疑是最便宜的解决方案,但其性能也是最差的,除非你拥有一颗强劲的CPU,否则我们不推荐你使用软件级RAID 5。

2. 板载RAIO 5控制芯片

在BIOS中设置RAID 5毕竟要比在操作系统中设置来得方便,也更灵活。RAID 5控制芯片仍旧需要将大部分RAID 5处理量转移到CPU,当CPU本身已处于高负荷时这会导致系统性能的严重下降。更值得注意的是,板载控制芯片必须借助于系统总线与内存频繁通信,这对于RAID 5而言不是什么好事,因为计算Parity信息需要CPU全权处珲,控制芯片所做的就是控制RAID 5的运作,而计算Parity信息的过程中要涉及到极大量的数据交换——板载控制芯片必须首先将相关数据传送到内存,经过CPU进行XOR运算后,Parity信息再次通过系统总线传输进控制芯片,最后在控制芯片的指挥下写入阵列中,但所有这一切均可在控制卡上完成。

可以想象一下,时常有几百或上千MB的数据在CPU、内存和硬盘之间交换是一种怎样的情形(软件级RAID 5当然也面临同样的问题)。下面提到的独立控制卡中,总线的相关任务就只有将待读取或写入的数据传送至控制卡,而计算Parity信息所需的数据都只在控制卡上流动。尽管如此,考虑到板载控制芯片并不需要额外的支出,这很可能会成为最普及的SATA RAID 5解决方案,因为时下已有越来越多的主板开始支持这项技术。

3. 独立RAID 5控制卡

也称为硬件级RAID 5。这绝对需要昂贵的资金投入,硬件级控制卡上有专门用作驱动RAID的处理器,这一点上文已经提及。这种解决方案在服务器以及高端工作站领域很受欢迎,因为CPU可以从RAID的处理中得到解放从而专注于更重要的常规任务。此外RAID 5控制卡通常配套有软件,用于监控RAID系统,以及为用户组建RAID提供支持。RAID 5控制卡十分昂贵,这要取决于可连接硬盘的多寡、缓存的大小和支持RAID的级别。但随着SATA RAID 5的逐渐普及以及相关市场的开放,RAID 5控制卡的价格也更容易被普通消费者所接受。目前SATA RAID 5控制卡还没有采用PCI Express接口的,但相信PCI Express能够解决目前的接口瓶颈问题。

采用何种的RAID取决于实际应用情况,比如对于某些应用程序而言RAID 5在性能上优于RAID 0,而对于另外一些应用程序来说RAID 0要优于RAID 5,即使是同一种应用,在不同场合两者都没有把握完全战胜对方。

五.按需选择——组建RAID的三选二定律

SATA RAID 5目前来说并不适合桌而PC用户,即使是对于诸如游戏发烧友、狂热的DIYer,RAID 5仍然比不上RAID 0+1/1+0——糟糕的写性能是其死穴,因为对于绝大多数普通应用而言,磁盘子系统的写性能和读性能同样重要。

图9

图9中的三角形形象地说明了RAID世界里传输性能(空间利用率)、组建成本和容错能力这三者的关系。在每个角的尽头,要使得某一项属性的值最大,必须完全牺牲其它两项,例如RAID 0在所有的RAID级别中性能最强,可利用的硬盘空间也最多,但这是以没有任何数据容错功能为代价的。相反,RAID 1最可靠但性能最差。需注意的是,上述两者的讨论都不涉及成本问题——因此RAID 0/1严格来说不能够被归类为真正的RAID结构,一个完整的RAID系统必须具备两项基本功能:传输性能与数据可靠性。

回到这个三角形。点A代表二者的理想平衡,相对其它级别的RAID来说没有突出的某一项也没有强差人意的某一项,RAID 5就是其中的佼佼者。点B、C和D分别表示RAID系统在某两项有较好表现但在第三项表现欠佳,例如RAID 0我们也可以将其归类为B,而RAID 1就是D,因为对这两者的控制都相对来说比较简单(也就是相应类别的RAID控制器结构并不复杂)。我们可以看到ICH在不增加多少成本的情况下就轻易实现RAID 0和RAID 1,在操作系统中RAID 0/1也易于实现,在性能强劲的CPU支持下软件级RAID 0/1并不比硬件级的差多少。而C是难于实现的,因为相对于B、D,C离三角形的左下角最远,这意味着其组建成本难以被人们所接受,但在提供良好性能的基础之上它还可保证可靠性一这就是RAID 0+1/1+0。

六.展望未来:SATA RAID 5路在何方?

对于普通服务器/工作站领域,SATA RAID 5拥有非常广阔的应用前景,因为从组建成本来看,它比传统的SCSI RAID 5便宜得多。

假如你希望组建负荷不是太重的Web服务器(如个人WEB服务器),那么SATA RAID 5的低成本、高性能优势一定能给你带来惊喜。总的来说,SATA RAID 5适合那些对成本敏感、又需要强劲性能与安全性并济的硬盘子系统的领域。

You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site.

Comments are closed.

Back to Page Top