转载自:http://www.cnblogs.com/PBDragon/archive/2012/10/09/2716573.html
1.RAID技术概述
RAID:即廉价磁盘冗余阵列 / 独立磁盘冗余阵列
RAID (redundant array of independent disks, originally redundant array of inexpensive disks) is a storage technology that combines multiple disk drive components into a logical unit.
其基本思想就是把多块独立的物理磁盘按不同的方式组合起来形成一个磁盘阵列(逻辑硬盘),从而提供比单个硬盘更高的存储性能和数据备份的功能。在用户看起来,组成的磁盘阵列就像个硬盘,对磁盘阵列的操作与单个硬盘一样。
2. RAID0:即条带技术,所有磁盘完全地并行读,并行写,所以读写性能最高(有几块硬盘,读写性能就提高到几倍)。但是完全没有冗余,所以容错最差,任意一块磁盘损坏,则数据完全丢失。RAID0 并行读写的原理是:在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的读写速度是最快的:
3. RAID1:即镜像技术,镜像写,并行读,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是磁盘利用率最低:
4. RAID5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。RAID5 至少需要三颗硬盘, RAID5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID0和RAID1的折衷方案。RAID5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID5具有和RAID0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较便宜:
6.RAID6是在RAID5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID5等级。与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。 RAID6同RAID5最大的区别就是在RAID5的基础上除了具有P校验位以外,还加入了第2个校验位Q位。当一块磁盘出现数据错误或者丢失的时候,恢复方法同RAID5,无须使用Q校验位。当前盘数据块的校验数据不可能存在当前盘而是交错存储的。这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID5还差(但是存储缓存系统可以抵消一部分此点不足),而且控制系统的设计也更为复杂。RAID6的磁盘利用率、读取性能和容错能力要优于RAID5。
目前的磁盘容量已经很大,如果一块磁盘出现故障,那么整个RAID组中的磁盘都需要进行数据重构,磁盘容量越大需要的时间越长,在数据重构的时间内如果再发生磁盘故障,那么所有的数据都将丢失。因此RAID6技术将可靠性提高了1000倍以上。目前的磁盘容量已经很大,如果一块磁盘出现故障,那么整个RAID组中的磁盘都需要进行数据重构,磁盘容量越大需要的时间越长,在数据重构的时间内如果再发生磁盘故障,那么所有的数据都将丢失。因此RAID6技术将可靠性提高了1000倍以上。
5. RAID10
先镜像,再条带。将磁盘分成两组,两组分别先做镜像RAID1,然后在RAID1的基础上做两组RAID1再条带,从而得到RAID10。
6. RAID01
先条带,再镜像。磁盘分成两组,两组分别先做条带RAID0,然后在RAID0的基础上做两组RAID0再镜像,从而得到RAID01。
7. RAID10和RAID01的比较
两者最重要的区别在于:RAID10的底层是镜像RAID1,而镜像就保证了当有一块硬盘比如A1损坏时,并不影响他的写功能,读性能可能稍微有所降低(大概降低1/8)。但是RAID01的底层是条带RAID0,而条带就导致了只要有一块硬盘比如左边的Disk0中的A1损坏时,那么整个左边的RAID0就不能使用了,所以整个RAID01就变成了只有右边的RAID0可以使用了,也就是从RAID01变成了RAID0,读性能马上降低一般,写性能没有影响,可靠性变得最差。仅仅凭借这一点,我们就绝不应该使用RAID01,而应该选择RAID10。
在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。
8. RAID10和RAID5的比较
应该说能够与RAID10竞争的只有RAID5了,两者在不同的场景有大量的使用。在安全性上RAID10要比RAID5强,当RAID5有一块硬盘损坏时,读性能有很大的下降,因为损坏硬盘中的数据要通过其他硬盘中的数据和校验一起才能计算出来,所以在数据库存储时一般选择RAID10。在磁盘使用率上RAID5要比RAID10高很多,所以对安全性要求不是特别高的场合比如文件存储一般大量使用RAID5。相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。
9. 应用情况
RAID2、3、4较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID2、3、4大多只在研究领域有实现,而实际应用上则以RAID5为主。在数据库等重要领域一般使用RAID10。所以在实际生产中要么选择RAID5,要么选择RAID10,当然也有少量的RAID6存在。除非特定厂商的产品有比较特殊的特定的选择。Oracle的存储最好还是使用RAID10技术,最为可靠。