什么是RAID
硬盘经常会坏掉,为了保证硬盘必须时刻保持可用。所以有了RAID,它将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个硬盘是正常的。当然,高可用只是RAID其中的一个功能。它还能提升储存容量、加快存取速度等能力。
RAID分为0~6级,另外还有RAID 1+0,简称RAID 10。下面分别介绍这几种RAID实现原理。
下图就是一个RAID实物图:
下图是RAID示意图:
它跟插线板是相似的概念。区别在于,插线板是为了扩展电源插孔,RAID是为了扩展硬盘插槽。
RAID分级
RAID-0
RAID 0没有数据冗余、没有奇偶校验。因此,如果一个硬盘坏掉了,整个RAID阵列的数据都没法正常使用了。它存在的意义在于加快读写速度,提升硬盘容量。通常在数据可靠性要求不高的情况下才会使用RAID 0。比如游戏、科学计算。
因为每个硬盘都可以独立读写,如果硬盘有n块,那么读写速度提升是n倍。
下图是RAID 0的数据分布方式:
RAID-1
RAID 1模式下,如果有n块硬盘,那么会把数据保存n份一模一样的。这样即使一份数据坏掉了,剩下的备份可以正常工作。性能方面,随机存取速度相当于所有硬盘的总和,写入性能和原来单个硬盘的性能一样。
RAID-1E
这种模式跟RAID 1的区别在于,当硬盘数量大于2时,RAID 1E对于同一份数据最多保存两份一模一样的。这样可以充分的利用硬盘空间。下图说明了这种储存方式。
RAID-1+0
这种模式全称是RAID-1加上RAID-0。它实现的原理如下图所示:
用几句话来描述吧。它相当于先把这些硬盘成对成对的用RAID-1方式组合起来,然后再把这些组合结果用RAID-0方式组合起来。这种模式下它支持高可用,又能有很好的读写性能。这种方式,由于需要存两份一模一样的数据,因此容量会损失一半。
这种方式是目前最常用的。
RAID-2
这种模式现在已经不太常用了。它把每个数据位都打散,然后均匀的放到各个硬盘上。使用了Hamming代码来做纠错,将Hamming代码放到专门的几个硬盘里面。下图可以看到这种模式的数据分布:
RAID-3
这种模式现在也已经不太常用了。它把每个数据字节都打散,然后均匀的分散到各个硬盘。然后将奇偶校验的数据放到专门的硬盘里。关于奇偶校验的数据在后面会提到。这种模式下,由于每个数据都分散到各个硬盘的不同地方,因此每次操作都需要所有硬盘来参与。所以,对于随机存取的场景下,这种模式的性能是很差的。对于特别长的顺序读写是非常合适的,比如视频监控数据。
RAID-4
这种模式把每个数据块打散,然后均匀的分散到各个硬盘。另外还设置了专门的硬盘用来储存奇偶校验的数据。这种模式下,随机读取的性能非常好。但是随机写入的性能却不行。因为需要将所有奇偶校验的数据全部写到专门的硬盘里面。
RAID-5
这种模式把每个数据块打散,然后均匀分布到各个硬盘。与RAID-4不同的是,它将奇偶校验的数据均匀的分散到不同的硬盘。这样如果有一个硬盘坏掉了,丢失的数据可以从奇偶校验里面计算出来。
通常RAID-5的容量会损失1/3,用来储存奇偶校验信息。
这种模式兼顾了成本、性能,也是比较常用的一种模式。
RAID-6
这种模式与其他模式的区别在于,它支持两块硬盘同时损坏,并且仍然能够正常工作。它有这般神奇的能力,是因为它保存了两种奇偶校验。一种是普通的XOR方式,跟RAID-5一样。另外一种比较复杂,需要消耗比较多的CPU。这种奇偶校验方式在后面再讲。
RAID0 和JBOD的区别
性能对比
RAID0,是RAID级别中性能最高的一种,并联硬盘,多个磁盘可以同时工作,每个磁盘处理它负责的那部分数据,充分利用总线的带宽。
JBOD,多个硬盘串联,数据的存储是从第一个硬盘开始,依次往后存放。性能只取决于单盘的速度。
安全性与容错性:
- JBOD:不提供数据安全保障。它简单的组合小盘成大盘的方法,其存储容量等于组成它的所有磁盘的容量的总和。
- RAID 0:由于RAID 0没有数据冗余和校验,因此不提供数据保护功能。只要任何一块硬盘损坏,就会丢失所有数据。因此,RAID 0不可应用于需要数据高可用性的关键领域。
JBOD 坏一块盘,其他盘的数据还是好的。 RAID0 坏一块盘,全部数据损坏。
- 应用场景:
- JBOD:主要用于扩展存储容量,因其结构简单、成本较低而被广泛应用于各种需要大容量存储的场景。
- RAID 0:由于其高存储性能,特别适用于对性能要求较高但对数据安全不太在乎的领域,如图形工作站等。对于个人用户来说,RAID 0也是提高硬盘存储性能的绝佳选择。
RAID 相关指令
系统下查看Raid卡
lspci | grep LSI
查看 RAID 控制器c0信息
storcli /c0 show