独立硬盘冗余阵列(RAID,Redundant Array of Independant Disks),旧称为廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks)。1987年美国加州伯克利分校的一篇名为《A Case for Redundant Arrays of Inexpensive Disk(RAID)》论文诞生,这标志着RAID技术的开始。
那么什么是RAID呢?简单的来讲就是把多个硬盘组合起来,成为一个硬盘阵列组,操作系统会把它当做是一个硬盘,其性能能够达到甚至超过单个昂贵容量大的硬盘。RAID提供了多种硬盘组合的方式,相比单个硬盘来说,提高了硬盘得I/O能力。多个磁盘之间相互冗余,提高了耐用性。
RAID的硬盘组合方式有:RAID-0,RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-7,RAID10,RAID-01,RAID-50,RAID-53,RAID-60,JBOD。
RAID的实现模式
Software RAID:
软件磁盘阵列,由CPU处理和协调一个RAID里面各个硬盘的作业,这样就会给CPU带来较多的运算压力,分为3种:
1)基于主板的的磁盘阵列:通常上是由主板上的芯片组提供RAID功能。
2)硬件辅助磁盘阵列:需要RAID卡和相关厂商提供的驱动程序,RAID功能是由驱动程序和CPU运算来提供
3)操作系统的RAID功能:Linux、windows Server等操作系统内置的RAID功能
虽然软RAID实现的有多种,但是在生产环境还是不建议使用的。
Hardware RAID:
硬件磁盘阵列,在RAID卡上内置了CPU处理器,这样就不占用服务器的CPU了。一般硬件磁盘阵列都会有备份的电源模块和NVRAM(非易失性内存),当系统断掉后,备份电源开始供电,将硬盘读写的日志保存在内存中,当系统恢复,备份电源关闭供电,再在NVRAM读取日志数据,继续完成上次断电前没有完成的作业。
常用RAID介绍
常用的RAID有:RAID0,RAID-1,RAID-5,RAID6,RAID-10,RAID50。
RAID0
RAID0,也称条带卷(striping)。在RAID0中,数据会被切成片,按一定顺序会被写到所有的磁盘里面,如下图:
若一片数据被切割成了A1-A8,将存储在一个由2块Disk组成的RAID0,那么第一段数据块A1会被存储在Disk0中,第二段数据块A2会被存储在Disk1中,第三段数据块会被存储在Disk0中,以此类推,这一片数据会被均分到2块磁盘上。
RAID0的优缺点:
1)速度快,写和读的能力得到了提高;
2)RAID0没有冗余的能力,一旦一块磁盘出现了故障,则所有的数据都将不会恢复;
3)RAID0需要N块磁盘才能实现(N>=2);
4)能够存储数据的大小为N*min(S1,S2,S3,S4....)
在RAID0中有两个重要的参数:
条带宽度:stripe width,它指的是可以被并行写入的数据块的个数,也就是实现RAID0中磁盘的个数;
条带大小:stripe size,它指的是每次写入磁盘的数据块的大小,大小一般为2KB或者512KB甚至更大,size越小,数据被分割的次数就越多。stripe size对性能是有一定的影响的,在生产环境中,需要调整好。
RAID1
RAID1,镜像化,在RAID1中,数据会被复制成多份,存储在多个磁盘上,如下图:
若一片数据将要被存储,数据会被复制成多份(取决RAID1的磁盘个数),然后存储到每一个磁盘上。
RAID1的优缺点:
1)冗余性和数据的可靠性最高,只要不是磁盘同时损坏了,一般都不会带来数据丢失的问题;
2)RAID1的容量取决容量最小的那个磁盘,写入速度也是取决于最小的那个磁盘,较大的磁盘的剩余空间可 以分区使用,不会造成浪费;
3)RAID1的读取速度理论上来说是磁盘个数的倍数;
4)RAID1需要N块磁盘才能实现(N>=2)
5)能够存储数据的大小为min(S1,S2,S3...)
RAID3
RAID3,数据类似于RAID0,被条带化的存储在多个磁盘中,数据以字节为单位,与RAID0不同的是,RAID3单独使用了一块独立的磁盘用来存储数据的奇偶校验值,如下图所示:
数据被切片存储在Disk0-2上,同时计算处奇偶校验值存储在Disk3上,这样即使Disk0-2中损坏一块磁盘,也能根据奇偶校验值得到损坏磁盘的数据。
RAID3的优缺点:
1.较高的容错能力;
2.不适合写入操作较多的情景,会给校验盘带来一定的负载,适合读取操作较多的应用环境;
3.RAID3需要N块磁盘(N>=3);
4.能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。
RAID4
和RAID3类似,RAID4不是以字节为存取单位,RAID4的数据以块(一般为512字节)为单位,如下图:
以块为单位带来的好处就是,减少了奇偶检验的次数,比如,如果一段数据的大小为10个字节,在RAID3上可能需要计算2次奇偶检验值了,但是在RAID4上,10个字节都会被放在第一个磁盘上,并不需要计算。
RAID4的优缺点:
1.较高的容错能力;
2.提高了小量数据的I/O能力;
3.RAID4需要N块磁盘(N>=3);
4.能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。
RAID5
RAID5可以理解成是RAID0和RAID1的折中方案,把数据条带化后存储,并且将数据奇偶检验值存储在所有的硬盘上,如下图:
数据被条带化存储到了磁盘上,并且每个磁盘上都能够存储奇偶检验值,其读写速度和RAID0差不多,可能写的时候要慢一点,比较要计算奇偶检验,这样,即使坏掉一块磁盘,只需要更换上好的磁盘,RAID会利用剩下奇偶检验去重建磁盘上的数据。
RAID5的优缺点:
1)较高的容错能力;
2)读写速度快;
3)RAID4需要N块磁盘(N>=3);
4)能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。
RAID6
与RAID5类似,只是增加了第二个独立的奇偶检验信息块,使用了两种不同的奇偶检验算法,如下图所示:
数据仍然是被条带化得存储在磁盘上,但是会计算出两个独立的奇偶检验值,相对于RAID5来说有更多的I/O操作和计算量,所以RAID6通常不会以软件来实现,一般会使用硬件实现,RAID6也是最常见的磁盘阵列。
RAID6的优缺点:
1)较高的容错能力
2)同一RAID6中最多运行同时损坏2块磁盘,更换磁盘后,数据将被重新计算写入;
3)RAID6需要N个磁盘(N>=4);
4)RAID容量为(N-2)*min(s1,s2,s3,...)
RAID 01
RAID 01是一种混合的磁盘阵列,即是RAID0和RAID1的混合,先做条带,再做镜像:
RAID01中,同组RAID0只要出现一个磁盘损坏,那么这个RAID 0就不能你使用了,值剩下其他组的磁盘运作,可靠性较低。
RAID01的优缺点:
1)数据可靠性低
2)RAID01需要N个磁盘(N>=4)