RAID 是英文 Redundant Array of Independent Disk 的首字母缩写,中文意思是:独立磁盘冗余阵列。通俗的讲就是把多块硬盘组成一个独立的磁盘阵列进行管理
RAID 解释:RAID(独立冗余磁盘阵列)是一项能提升外部存储解决方案性能的简单技术。它能让您根据自己的需要选择最佳的设备使用方式。简单地说,RAID 技术可以将一个硬盘上的任务分散或复制到多个(少则两个)磁盘上,借此来提高性能或建立数据冗余以防驱动器发生故障。您可以通过设定设备的 RAID 模式来决定设备以何种方式处理数据。
对于普通用户而言,使用 RAID 技术管理硬盘其实是没有多大必要,但是对于企业用户,尤其是要使用高可用、稳定等解决方案保证硬盘数据稳定、安全、可靠时,RAID 就显得尤为重要。因为 RAID 技术可以为硬盘提供安全性和稳定性的保障,保证硬盘数据容错性或者读写性能的提升等
利用RAID技术于存储系统的好处
通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能
通过把数据分成多个数据块(Block)并行写入/读出多个磁盘以提高访问磁盘的速度
通过镜像或校验操作提供容错能力
RAID 可以按照硬盘数量和组织方式不同分为不同类型的 RAID 实现
常见的有: RAID 0、RAID 1、RAID 5、RAID 6、RAID 01、RAID 10
不常见的有:RAID 2、RAID 3、RAID 4、RAID 7、RAID 50、RAID 53
四、各种 RAID 介绍
下面我们介绍不同实现方式下的 RAID,探索一下各种 RAID 的优点和缺点,在什么场景下使用何种 RAID。
开始之前要先穿插介绍一下 RAID 实现中有时需要使用到 Spare(备用硬盘)
Spare 是在 RAID 实现中需要额外添加的硬盘,当组成 RAID 的硬盘都正常工作的时候,Spare 硬盘是处于空闲状态的,只有当组成 RAID 的硬盘中有损坏的时候,Spare 硬盘才会自动替换损坏的硬盘位置,加入到 RAID 阵列中
RAID 术语
条带化:指将数据分到多个驱动器上。条带 RAID 阵列通常用于将最大的容量合并到单个卷中。
镜像:指将数据复制到多个磁盘上。镜像 RAID 阵列通常能在阵列中有磁盘(至少一个)发生故障时确保数据不丢失,具体取决于阵列的 RAID 级别。
容错:指可让 RAID 阵列在磁盘发生故障时继续工作(即用户仍然可以使用阵列中存储的数据)
原理: 将数据条带化,最少需要两块硬盘(每块硬盘的容量一样,实际生产环境中建议使用同品牌同型号同批次同容量的硬盘组成 RAID 0),即将所有组成 RAID 0 的硬盘的可用容量组合在一起,形成计算机上的一个逻辑卷。通俗的讲就是至少使用两块硬盘来存储数据,但是我要存储的数据不是全部存在某一块硬盘上,而是把我要存储的数据分成均等的多部分,然后平均分散存储在组成 RAID 0 的磁盘阵列上
下图是用四块硬盘组成 RAID 0 的示意图,其中每块硬盘都被分成 ABCD 四个条带,然后我要存数据就先存把数据均分成四部分,如果 A1 能存下其中一份,那就直接将四部分分别存入 A1-A4,如果存不下就先存满 A1-A4,剩下的按同样的方式存 B1-B4,以此类推
简单来说如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,n块可以同时写,速度提升很快,但由于没有备份,可靠性很差。n最少为2
可用容量:组成 RAID 0 所有硬盘容量的总和
优点
成本低,可以提高整个磁盘的性能和吞吐量
提高读写速度,对硬盘的总容量没有损失
处理大文件很快
缺点
一旦阵列中某块硬盘损坏了,所有数据将不可恢复
**原理:**镜像存储,RAID 1 至少需要两块硬盘组成,两块硬盘互为备份,存储的内容完全相同。建议硬盘容量大小也要一样,如果不一样,那实际可用容量不超过较小的那块硬盘的容量
RAID 1 的示意图,左右两边存储的数据是完全相同的
简单来说如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2
可用容量:不超过较小的那边硬盘的容量总和
优点
读取性能翻倍。
提供数据冗余,如果其中一块数据丢失,可以通过另一块还原
缺点
磁盘的利用率低,成本高
磁盘控制器的负载大
原理: RAID 2 本质上是 RAID 0,只是加入了汉明码来做数据的纠错。以此来优化 RAID 0
汉明码:(Hamming Code)是广泛用于内存和磁盘纠错的编码。汉明码不仅可以用来检测转移数据时发生的错误,还可以用来修正错误。(要注意的是,汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)
优点
加入了数据纠错机制
缺点
成本增高,需要额外的盘做汉明码纠错
**原理:**RAID 3 使用字节级别的条带化技术,并采用专用的奇偶校验磁盘。RAID 3 阵列能在一个磁盘出现故障的情况下确保数据不丢失。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。如果数据尚未重建到更换驱动器上,而此时又有一个磁盘出现故障,那么阵列中的所有数据都将丢失。本质上和 RAID 0 相同,与 RAID 2 相似,作为 RAID 0 的优化版本
RAID 3 的实现架构图,图中 Disk 4 就是那块专用的奇偶校验磁盘
简单来说若你有n块盘,其中1块盘作为校验盘,剩余n-1块盘相当于作RAID 0同时读写,当其中一块盘坏掉时,可以通过校验码还原出坏掉盘的原始数据,当中间缺了一个数据时,可以通过其他盘的数据和校验数据推算出来,由于n-1块盘做了RAID 0,每一次读写都要牵动所有盘来为它服务,而且万一校验盘坏掉就完蛋了。最多允许坏一块盘。n最少为3
优点:
加入了数据纠错机制
提高读取和写入速度
缺点:
做奇偶校验会消耗系统性能,容易导致系统出现性能瓶颈
校验盘坏掉数据就无法恢复
变种(RAID 3 + Spare)
这种变种在主磁盘遇到故障的时候不需要立即处理,Spare 磁盘会无缝顶替上去
原理:和 RAID 3 一样,唯一的区别是在数据分割上 RAID 3 对数据的访问是按位进行的,RAID 4 是以数据块为单位,也就是按磁盘进行的,每次是一个盘
原理: RAID 5 综合了 RAID 0 的条带化技术以及阵列数据冗余技术(阵列最少包括三个磁盘)。RAID 3 和 RAID 5 之间的区别在于,RAID 3 配置提供的性能更高,但总容量略低。数据会在所有磁盘之间分条,并且每个数据块的奇偶校验块 § 写入到同一条带上。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。单个磁盘出现故障时,数据不会丢失,但如果数据尚未重建到更换驱动器上,而此时又有一个磁盘出现故障,那么阵列中的所有数据都将丢失
Ap-Dp 奇偶校验是放到和数据同一条带上的
简单来说在RAID 3的基础上有所区别,同样是相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘
优点:
块式的集体访问效率高
有校验机制。
空间利用率高
缺点:
组成 RAID 5 的磁盘越多,安全性能越差,容易丢失数据。连续两块硬盘损坏,数据就找不回来了
读出效率很高,写入效率一般
变种(RAID 5 + Spare)
这种变种通过加入空闲的 Spare 盘,在系统将数据重建至备用驱动器时用户仍可以继续访问数据。它能提供良好的数据安全,但磁盘空间由于热备用磁盘的存在(在其他磁盘出现故障之后才使用)而受到限制。磁盘故障不需要立即处理,因为系统会使用热备用磁盘对自己进行重建,但故障磁盘还是应尽快更换
原理: 与 RAID 5 相比,RAID 6 增加了第二个独立的奇偶校验信息块,双重奇偶校验,在 RAID 6 中,数据会在所有磁盘(最少四个)间进行分条,并且每个数据块的两个奇偶校验块(如下图中的 p 和 q)写入到同一条带上。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。这种 RAID 模式最多允许两个磁盘出故障而不丢失数据,而且它能更快地重建故障磁盘上的数据
RAID6 在RAID 5的基础上,又增加了一种校验码,和解方程似的,一种校验码一个方程,最多有两个未知数,也就是最多坏两块盘
优点:
读取性能好
有奇偶校验机制
缺点:
成本高,写入性能差
原理: RAID 0 + RAID 1,两边都是条带化的 RAID 0 存储数据,然后互为备份,组成镜像存储 RAID 1。
下图是 RAID 01 的架构图,在 RAID 01 阵列中,最多允许两个磁盘出现故障而不会丢失数据,但故障磁盘必须属于同一 RAID 0 队列。在图中,也就是当磁盘 1 和磁盘 2 出现故障时,数据会保存到磁盘 3 和磁盘 4
RAID 0+1是把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力
优点:
有数据备份,出现单点故障时可以恢复数据
有全冗余能力
快速读/写能力
缺点:
成本高
原理: RAID 1 + RAID 0,它合并了其他级别(尤其是 RAID 1 和 RAID 0)特点的另一种 RAID 级别。这是一种“镜像集条带”,意思是数据在两个镜像阵列间分条。“条带化”在阵列之间发生,而“镜像”是在相同的阵列中出现,两种技术的组合加快了重建的速度。RAID 10 阵列包含的磁盘数应为四的倍数。
下图是 RAID 10 的架构图,在 RAID 10 阵列中,每个镜像对中,可以有一个磁盘出现故障而不丢失数据。不过,故障磁盘所在阵列的工作磁盘会成为整个阵列中的弱点。如果镜像对中的另一个磁盘也发生故障,则会丢失整个阵列
优点
高速度和低容错差控制
缺点
成本高
扩充性差