RAID0、RAID1及RAID5



   RAID 0主要是为了提升数据传输速度而生的,它的原理是当系统下达指令后,会同时从每块硬盘调用/写入数据。这样就可以利用每块块硬盘传输通道所提供的带宽。相信看到这里大家都明白了,组建RAID 0系统的时候,理论上硬盘数量越多,传输速度提升就越大。但是在实际使用中受限于系统IO总线和其他因素的一些影响,还是有一些衰减的,比如一个磁盘的效能是50MB/秒,两个磁盘的RAID 0效能约96MB/秒,三个磁盘的RAID 0也许是130MB/秒而不是150MB/秒。所以,两个磁盘的RAID 0最能明显感受到效能的提升。
  实际上,我们组建RAID系统的时候,并不一定要两块/多块容量相等的硬盘,可以用一块大硬盘和一块相对容量较小的硬盘组建RAID系统,很多JS都说需要两块一样大小的硬盘组建RAID实际上并不正确。但是当硬盘容量不一样时,会按照容量最小的硬盘来计算,并且速度上也会以最小硬盘为标准。比如说一块5400RPM的60G硬盘与一块7200RPM的80G硬盘组建RAID 0系统,结果的总容量是60×2=120GB,而理论速度只会达到5400RPM硬盘的两倍。所以说,如果条件允许,我们还是建议使用两块同型号的硬盘组建RAID系统。
  虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。RAID 0在组建的时候,英文名为Striped。
  前面我们说道了RAID 0的具体工作原理和能够实现的功能,不过稍微对于数据的安全性要求较高的用户,都会选择RAID 1阵列方式。RAID 1的主要功能是让数据更加安全,它的实现原理是在往一块硬盘写入数据的时候,同时也向另一块硬盘写入数据,也就是镜像功能。组建RAID 1阵列的时候需要2块以上的硬盘,并且数量只能是偶数。如2块、4块、6块、8块等,因为需要用做备份,在数据的安全性方面是最好的,但是只能利用到磁盘总容量的一半。



  举例来说,使用两块80GB的SATA硬盘组建RAID 1系统,在操作系统下显示的总容量仍然是80GB,因为另外的80GB硬盘用做备份了。如果这两块硬盘中的一块物理损坏,仍然可以从第二块备份硬盘中恢复回来。同理,如果使用6块硬盘组建RAID 1系统,其中有3块用于存放数据,另外三块用于备份数据。
当然,RAID 1仍然可以支持两块容量不一样的磁盘组建阵列,和RAID 0一样,都是按照容量较小的那一块做标准。比如使用一块100GB和120GB的硬盘组建RAID 1,最后得到的总容量是100GB。
由于RAID 1主要的功能是对数据进行镜像,所以在写入数据时磁盘的数据传输性能是没有提升的。但是在读取数据的时候,仍然会有提升,因为它可以同时从两个硬盘里读取数据,也就是说有两个供应源供应数据。RAID 1在我们普通用户中的使用率相对较小,因为一般的用户都舍不得损失一半的硬盘容量。



  RAID 0可以大幅度的提高性能,RAID 1可以保证数据的安全性。那么如果既想提高性能,又能保证安全性,最廉价的解决方案是什么呢?那就是RAID 5!
  RAID 5使用至少三块硬盘来实现阵列,它既能实现RAID 0的加速功能也能够实现RAID 1的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是1号硬盘和2好硬盘用来存储分割后的文件碎片,那么在下次存储的时候可能就是2号硬盘和3号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存储分割后的文件碎片另一块硬盘用来存储校验信息。这个校验信息一般是通过RAID控制器运算得出的,通常这些信息是需要一个RAID控制器上有一个单独的芯片来运算并决定将此信息发送到哪块硬盘存储。
  RAID 5同时会实现RAID 0的高速存储读取并且也会实现RAID 1的数据恢复功能,也就是说在上面所说的情况下,RAID 5能够利用三块硬盘同时实现RAID 0的速度加倍功能也会实现RAID 1的数据备份功能,并且当RAID 5当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。           
  下面来分析一下RAID 5如何实现对数据的还原,举个例子来说,使用3块硬盘来构成一个RAID 5阵列,用户定义的分割文件大小为64K,此时需要存储的文件大小为128K。首先,当RAID控制器接收到这部分数据之后利用一定的算法得出校验信息,然后将这128K的文件分割成两个大小为64K大小的文件碎片,然后将这两个文件碎片同时分别放往1号硬盘和2号硬盘,最后校验信息被发往3号硬盘。如果这个阵列当中某个硬盘损坏了,还是可以恢复原来的数据:如果上面用来存储校验信息的3号硬盘损坏了,可以通过1号和2号硬盘来重新生成校验信息;如果损坏的是1号或者2号硬盘,可以利用3号硬盘上存储的校验信息重新生成原来的文件碎片。
  RAID 5模式并不是一些都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都需要重新调用。
  同样,如果要做RAID 5阵列的话,最好使用相同容量相同速度的硬盘,RAID 5模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。举例来说,三块80GB硬盘组成的RAID 5系统,总容量会成为160GB。        
  RAID 5既能够实现速度上的加倍,同时也能够保证数据的安全性,所以在很多高端系统当中都使用这种RAID模式。



 RAID10是先做镜象,然后再做条带。



 RAID01则是先做条带,然后再做镜象。

RAID 10为什么比01好?这是基于概率的一个结论,关键的区别在于一个实现做的raid1然后再做raid0,一个是先做raid0然后做raid1,假设有四块磁盘A,B,C,D,我们先做个raid 1/0。将A,B做mirror,再将C,D做mirror,最后将A,B和C,D做成stripe,这时,只有当A,B或者C,D同时坏掉才会导致数据丢失。然后我们再看一下raid 0/1这种方式,将A,B做成stripe,再将C,D做成stripe,最后将A,B和C,D做成mirror。这时,当A,B任意坏掉一块磁盘,C,D当中再任意坏掉一块此盘,数据将丢失。

猜你喜欢

转载自wallimn.iteye.com/blog/1220737