一、RAID基础概念

全称为Redundant Arrays of Inexpensive Disk(廉价磁盘冗余阵列),它的概念来自美国加州大学伯克利分校的一名教授发表论文《A case for Redundent Arrays of Inexpensive Disks RAID》,在这片论文中就阐述了可以将多块廉价的硬盘按照特定的结构组织起来当一块硬盘使用,从而提高I/O能力、耐用性。之后RAID就这么流行了。后来为了让硬盘组织起来更加高效,就需要在硬件层次在引入一个控制器,但是由于控制器的加入,这个磁盘阵列就不廉价了,于是就改名为Redundant Arrays of Independent Disk(独立冗余磁盘阵列)

二、RAID级别

raid的级别就是多块磁盘组织在一起的工作方式有所不同,带来的特性也不同

1. RAID-0

raid-0也称为条带卷(strip),它将多块硬盘平行组织来实现I/O并行,在存储数据时,首先将数据流分割成多块(chunk),然后平均分配到底层的磁盘上

  • 读、写性能提升,但是它并不是没有上限的,因为数据分割需要时间,将来数据读取时,合并也需要时间,硬盘过多时,性能的拐点也将出现
  • 可用空间为:硬盘个数 x 组合中空间最小值
  • 无容错能力,因为任何一块硬盘损坏,数据都是不完整的。并且多块硬盘的故障概率也是单块的多倍,从这个角度讲,不但无容错能力,反而容错能力还下降了
  • 最少磁盘2块
    请添加图片描述

2. RAID-1

镜像卷(mirror),存储数据时,每块硬盘都会将数据存储一份,所以即便其中一块硬盘损坏了也没关系

  • 读性能提升、写性能下降,因为存储数据需要在每个硬盘上都存储一份副本,但是读取数据就可以从多块硬盘中并行读取
  • 可用空间:组合中硬盘空间最小值
  • 有冗余能力
  • 最少磁盘2块
    RAID-1

3. RAID-4

RAID-4最少需要三块硬盘,其中使用两块做数据盘,另一块做数据校验盘。数据存储时,把数据按照RAID-0的方式等分,然后在校验盘中存储刚存储数据的校验码

  • 读、写性能提升
  • 可用空间为:(硬盘个数 - 1) x 组合中硬盘空间最小值
  • 容错能力:可以损坏一块硬盘。无论损坏的是数据盘或者是校验盘,损坏的数据都可以通过其他正常盘上的数据计算得到。不过,假如损坏的是数据盘,那么如果想得到完整的数据,就需要在每一次读取数据的过程中加入与校验盘计算数据的步骤,虽然可以得到完整的数据,但是其他两块正常的盘I/O压力也就增大了,像这种损坏一块盘仍然继续工作的机制,被称为降级模式,所以当RAID-4中如果损坏了一块硬盘,一定要赶紧停止业务,换上新硬盘,计算完数据后填补进新硬盘中后,就可以继续工作了。不过,现在的RAID-4中,会添加一块热备盘,就是为了防止出现损坏硬盘时,人工发现过慢导致修复不及时。再则,RAID-4还有个天生的缺陷,就是无论哪个数据盘操作数据,都会去访问校验盘,所以光是性能瓶颈这一个缺点,就足以把它其他的优势抹杀了。
  • 最少三块盘
    RAID-4

4. RAID-5

为了解决RAID-4的校验盘性能瓶颈的问题,RAID-5采用循环校验机制,意思是没有专用的校验盘,每块硬盘轮流来存储校验数据

  • 读、写性能提升
  • 可用空间:(硬盘个数 - 1) x 组合中空间最小值
  • 容错能力为一块盘,但是RAID-5也有一个天生的缺点,就是看你是先把第一块盘当校验盘还是把最后一块盘当校验盘,导致的结果就是数据会出现左对称或右对称
  • 最少三块盘
    RAID-5

5. RAID-6

也是做循环校验,不过它使用校验两次

  • 读写性能提升
  • 可用空间:(硬盘个数 - 2) x 组合中硬盘空间最小值
  • 容错能力为2块
  • 最少4块盘
    RAID-6

6. RAID-10

组合RAID-1和RAID-0,意思是先把磁盘做成RAID-1,再在RAID-1的基础上做RAID-0。数据存储时先分片,在镜像

  • 读写性能提升
  • 可用空间:磁盘个数 * 组合中磁盘空间最小值 / 2
  • 容错能力:最多支持每组RAID-1中,可以坏一块,如果同一组RAID-1中的硬盘都坏了,那么整个就都坏了。所以它的容错能力有两个极端,最多坏一半都行,但是对于单组RAID-1,最多也只能坏一块
  • 最少磁盘4块
    RAID-10

7. RAID-01

先做RAID-0,在做RAID-1,数据存储先镜像,在分片

  • 读性能提升
  • 可用空间:磁盘个数 x 组中磁盘空间最小值 / 2
  • 容错能力:如果损坏的磁盘全都在一组RAID-0中,那么这组磁盘就算全部损坏了也可以,但是如果损坏两块硬盘,属于不同组的RAID-0,那么几乎是全部损坏了。因为数据RAID-01的数据存储方式是首先将数据进行镜像,在把镜像后的数据进行分片,但是如果两边RAID-0的分片稍微的不一致,就会导致数据无法合并
  • 最少磁盘4块
    RAID-01

8. RAID-50

先做RAID-5,在做RAID-0,数据存储先分片,然后再raid-5上在切片校验

  • 读、写性能提升
  • 可用空间:(磁盘个数 - 校验盘个数)x 组中磁盘空间最小值
  • 容错能力:每组最多坏一块
  • 最少磁盘6块
    RAID-50