三、 RAID的选用
独立磁盘冗余阵列的英文名称为Redundant Array of Independent Disks,也就是我们通常所说的RAID。RAID的作用就是把多个独立的磁盘组合在一起,成为一个磁盘组,而这个磁盘组我们可以将它看成一个大的磁盘,这是因为这个磁盘组的性能并没有受到多个磁盘组合而造成性能减弱,相反还有所增强,因此,RAID技术被广泛用于数据存储行业中。在大型存储中,我们通常通过存储机柜来实现数据存储;而在服务器上的存储,我们就通过支持RAID功能的RAID卡来实现。
1、 RAID种类及作用
RAID分为很多种,如常见的RAID 0、RAID 1一直到RAID 7,另外还有组合,如RAID0+1(也被称为RAID 10)、RAID0+5(50)、RAID 5+3(RAID 53),每一个RAID级别都有其优点和缺点。下面和大家一起认识四种常用的RAID (RAID 0、RAID1、RAID0+1、RAID5)工作方式。
RAID 0
采用磁盘分段的方法把数据写到多个磁盘,而不是只写到一个盘上,这叫RAID 0,在磁盘阵列子系统中,数据按系统规定的“段”(Segment)为单位依次写入多个磁盘,例如数据段1写入磁盘1,段2写入磁盘2,段3写入磁盘3等等。当数据写完最后一个磁盘时,它就重新从盘1的下一可用段开始写入,写数据的全过程按此重复直至数据写完;简单来说RAID 0使用的是平行存取方式。
我们来看一下RAID 0系统的工作原理,图1是由三块磁盘组成的RAID 0系统:
图1 RAID 0系统的工作原理
由上图可以清楚地看到,该系统由三块磁盘同时读写同一数据的不同数据块来达到三倍于原来磁盘的速度。实际上,RAID也可以只使用两块磁盘。上图中,在任何时刻,这三块磁盘都在同步地工作,但它们读写的内容却完全不同。由于一个传输过程由三个磁盘各完成1/3,也就相当于传输带宽增加了三倍,所以操作时间也就减少了2/3。其中RAID 0控制器的作用就是将原来的数据均分为三份给三块磁盘写入或将三块磁盘读出的数据合并在一块儿交给外部数据总线。磁盘数量越多,速度就越快,容量就越大(单盘速度×硬盘数量=RAID0的总速度;单盘容量×硬盘数量=RAID0的总容量)。但是,可靠性是单独使用一块磁盘的1/N。磁盘量越多,可靠性就越低(即是容易比单盘发生故障),一个磁盘出故障或磁盘坏了数据将会丢失。所以RAID 0最好备份一下结构和分区表信息,便于一般故障的恢复。
RAID 1
RAID 1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性、可修复性,具有很高的数据冗余能力,但磁盘利用率为50%,成本高,多用在保存关键性重要数据的场合。但是在RAID中,它同样是占用了一些CPU时间,把写往主盘的数据同步地写到镜像盘。它的工作方式如图2所示。
图2 RAID 1工作原理图示
上图中,写在磁盘1和磁盘2上的数据是完全一样的,如写在磁盘1上的数据1、2、3,也同样写在磁盘2上,对外只显示一个带有数据1、2、3的磁盘。
RAID 1有以下特点:
-
RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。
-
磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。
-
只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的磁盘出现问题时系统都可以正常运行。
-
出现磁盘故障之后RAID系统不再可靠,因为只有一个磁盘正常运作,应当及时的更换损坏的磁盘,否则剩余的镜像磁盘时间长了也可能出现问题,那么整个系统就会崩溃。
-
更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。
-
RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
-
RAID1磁盘的写速度可能下降1/4左右,读取速度比单盘可能提高1/4 左右,因为RAID1读取时,系统会同时从两个盘上搜索,把先读取到的数据传输回来。
RAID 1+0(也被称为RAID 10)
虽然RAID 1也可以获得少许的性能提升,但是相对RAID 0来说恐怕是微不足道了。因此,在性能和安全兼顾的情况下,就出现了RAID 1+0。RAID 1+0至少使用4个磁盘,这样,RAID 1+0在理论上同时保证了RAID 0的性能和RAID 1的安全性,代价是比RAID 0或1再多一倍的磁盘数量。其工作原理如图3所示。RAID 10是建立在RAID 0和RAID 1基础上的,具体的组合结构看图:
图3 RAID 1+0工作原理图示
从中可以看出,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。其实,图3只是一种RAID 10方式,更多的情况是从主通路分出两路(以4个磁盘时为例),做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。这就是RAID 10名字的来历(也因此被很多人称为RAID 0+1)。 由于利用了RAID 0较高的读写效率和RAID 1较高的数据保护、恢复能力,使RAID 10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID 10对存储容量的利用率和RAID 1一样低,只有50%,读写速度增加是单盘的一倍。下面就让我们总结一下它的特点:
RAID 5
RAID 5 是一种存储性能、数据安全和存储成本兼顾的方案,它使用的是Disk Striping(硬盘分割)技术,RAID 5不是利用镜像而是利用分散奇偶校验冗余数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案,RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror(镜像)低而磁盘空间利用率要比Mirror高。
如上图所示,四个硬盘组成的RAID 5采用数据分块并行传送的方法,但是它在数据分块之后需计算它们的奇偶校验和。数据存储方式为: P4为磁盘1的数据0,数据3和数据6的奇偶校验信息,其它以此类推;P3为磁盘2的数据1,数据4和数据9的奇偶校验信息;P2为磁盘3的数据2,数据7和数据10的奇偶校验信息;P1为磁盘4的数据5,数据8和数据11的奇偶校验信息。由图中可以看出,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。
RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。RAID5是采用奇偶校验的方法维护数据,这些奇偶校验的信息只占用一块磁盘的容量,所以RAID5的实际容量相当于阵列中的磁盘数减1,数据读写速度等于单盘的速度×盘数,具有相对较好的综合性能。
RAID 5E(RAID 5 Enhencement)是在 RAID 5级别基础上的改进,与RAID 5类似,数据的校验信息均匀分布在各硬盘上,但是在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID 5E和RAID 5加一块热备盘好象差不多,其实由于RAID 5E是把数据分布在所有的硬盘上,性能会与RAID5 加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持RAID 5级别。
RAID 5E
RAID 5EE
与RAID 5E相比,RAID 5EE的数据分布更有效率,每个硬盘的一部分空间被用作分布的热备盘,它们是阵列的一部分,当阵列中一个物理硬盘出现故障时,数据重建的速度会更快。
综上所述,RAID 总体来说有以下作用:
-
增强了速度 ,服务器可以在同一时间从多个磁盘上读取数据。
-
提升I/O每秒的数量,增加可用运用时间,減少维护。
-
增加资料安全性及稳定性, 大量资料快速及简易管理。
-
扩容了存储能力,多个磁盘组成更大的空间提供给服务器使用。
-
可高效恢复磁盘,RAID提供了相当高的数据冗余功能,我们可以保证数据的完整无缺。
2、 软RAID与硬RAID
RAID也有全软、半软半硬与全硬之分。全软RAID就是指RAID的所有功能都是操作系统(OS)与CPU来完成,没有第三方的控制/处理(业界称其为RAID协处理器)与I/O芯片。这样,有关RAID的所有任务的处理都由CPU来完成,可想而知这是效率最低的一种RAID。由于全软RAID是在操作系统下实现RAID,不能保护系统盘,亦即系统分区不能参与实现RAID。有些操作系统,RAID的配置信息存在系统信息中,而不是存在磁盘上,当系统崩溃,需重新安装时,RAID的信息也会丢失。尤其是全软RAID 5是CPU的增强方式,会导致30%-40%的I/O功能降低,所以在服务器中不建议使用全软RAID。
半软半硬RAID是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品,它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。它可以支持RAID 0和RAID 1 RAID (1+0)。但因为缺乏自己的I/O处理芯片,所以这方面的工作仍要由CPU与驱动程序来完成。而且,半软半硬RAID所采用的RAID控制/处理芯片的能力一般都比较弱,不能支持高的RAID等级。
全硬的RAID则全面具备了自己的RAID控制/处理与I/O处理芯片,甚至还有阵列缓冲(Array Buffer),对CPU的占用率以及整体性能是这三种类型中最优势的,但设备成本也是三种类型中最高的。简单来说半软半硬是依靠主机本身CPU和内存运行,全硬RAID,自带有微处理与I/O处理芯片及内存,不依靠你主机的CPU内存,直接把相关信息提交给OS处理,从而使性能获得很大的提高。它的缺点是要占用PCI总线带宽,所以PCI I/O 可能变成阵列速度的瓶颈。
RAID卡有多种,除主板集成能够做的RAID的硬RAID外,还有各种专门RAID卡。如泰安7901以及目前板载SATA RAID都是典型的HOST RAID卡,只有I/O处理芯片,虽然它也能做RAID1,RAID0和RAID10,但都是通过BIOS和驱动程序实现的,其性能较全硬RAID卡如Adaptec的2系列的(2030s等)要低,优点是价格要低至少一半。
其实要识别全硬RAID也很简单:如果不挂驱动在LINUX下能认到RAID而不是单磁盘的就是全硬RAID了。因为LINUX对RAID驱分很严,HOST RAID是作为软RAID来对待的,没有厂家专用驱动LINUX就把它当作SCSI卡来处理。 |