1. 概述
由加州大学伯克利分校 D. A. Patterson 教授等人提出,一种将多个磁盘在一起构建呈更快、更大、更可靠的磁盘系统技术;称为廉价冗余磁盘阵列 ( Redundant Array of Independent Disks ),或独立硬盘冗余阵列 ( Redundant Array of Inexpensive Disks );简称磁盘阵列;
简单来说,可以理解为一套系统,专门用来管理一组磁盘;从外部来看,RAID 看起来更像一个磁盘,而非多个磁盘,对于使用他的主机系统来说,是一个大磁盘;从内部来看,是一个非常复杂而庞大的系统,他包含,磁盘,处理器,管理系统等等的一套东西;
2. RAID 的评估
对于 RAID 技术,我们会从多个方面去考量去评估,以便选择一个适用于系统的 RAID 技术;
2.1. 容量
简单来说,给你 N 个磁盘,它可以使用的容量;如果没有冗余,那么自然是 N ,如果是 1 对 1 副本复制,那么自然是 N/2 的可用容量;基于 RAID 技术的不同,其可用容量也不同,这也是硬件成本;
2.2. 可靠性
在 RAID 技术中,可靠性是最重要的一点,我使用这个 RAID ,最多可以接受多少块磁盘故障,但是仍然不影响我们整套存储系统;
2.3. 性能
性能评估非常复杂,一般来说考量其 读写速度,吞吐量,延迟 等指标;
3. RAID 模式
3.1. 标准 RAID
3.1.1. RAID 0 - 条带化
对于 RAID 0 来说,其实,不是 RAID 级别,因为没有冗余,但是因为性能和容量是非常优秀的;在所有 RAID 技术中,他是最快的,但是因为没有冗余功能,也不具备容错能力;如果一个磁盘损坏,则所有数据都会丢失,非常危险!
3.1.2. RAID 1 - 镜像
对于 RAID 1 来说,是一种没有校验的镜像,磁盘空间利用率只有 50%,成本很高;同时因为写入问题,需要完成两次物理写入,虽然是并行的写入,但是需要等待两次物理写入完成,所以会遭遇两个请求中最差的寻到和旋转延迟,因此比写入单个磁盘略高;
但是其实,因为没有校验机制的存在,两块磁盘如果数据出现差异,那么对于 RAID 1 来说,我不知道此时应该相信哪一个硬盘,这种称为:脑裂;事实上,RAID 1 磁盘数量越多,那么越有可能发现,RAID 1 只会从第一个工作的磁盘里面提供数据,无法检测哪个硬盘数据不对;在此处,引出 RAID 一致性问题;
对于 RAID 系统更新,会有一致性问题;如果说将数据发送给 RAID 的时候,由 RAID 自身决定往哪里写入,那么在写入的时候,可能说,我先写入 0 ,那么此时因为不可知的原因,在发生 1 的写入请求之前,崩了,这个时候对 0 已经写完;但是实际上对 1 并未发出写入请求;此时我们希望两个一致,或者是原子性更新,要不然都更新,要不然都是旧数据;而在 RAID 中,我们会采用 预写日志 技术,即 write-ahead log 技术;( 在数据库中,这种技术也是重要技术;)去保证在崩溃时回复;RAID 硬件一般包含一些非易失性 RAM,来执行这类记录;
3.1.3. RAID 3 - 数据交错存储
采用数据交错存储 ( Bit - interleaving ) 技术,通过编码再将数据比特分隔分别存在硬盘中,在用奇偶校验后,存储在额外校验盘中,因为数据内比特分散在不同硬盘,所以读取的时候,多个盘会一起工作;在一个硬盘矩阵内,坏多余一个硬盘几率较小,故安全性有一定保证;但是这个技术不常用;因为他每次写入,都会更新校验盘,导致校验盘工作负载大,最终校验盘称为写入性能瓶颈,而且仅可容许单个盘损坏;
3.1.4. RAID 4 - 块交织技术
采用块交织技术 ( Block interleaving ) ;与 RAID 3 不同的是,分割按照区块为单位分别存储在硬盘中;
3.1.5. RAID 5 - 旋转奇偶校验
RAID 5 和 RAID 4 基本完全相同,除了将奇偶校验块跨驱动器旋转;以消除 RAID 4 的奇偶校验磁盘的瓶颈;
3.1.6. RAID 6
RAID 5 与 RAID 6 相比,增加了第二个独立的奇偶校验信息块;两个独立的奇偶系统可以使用不同的算法,数据可靠性非常高;任意两块磁盘同时失效,也不会影响数据的完整性;
3.2. 混合 RAID
3.2.1. JBOD
无规范,通常有两类主流做法:1. 使用单独的连接端口同时控制各个硬盘;2. 将多个大硬盘合并一个逻辑硬盘;
资料存放从第一个硬盘开始顺序往后,但是硬盘损毁,数据无法救回,若是第一个硬盘,那么所有硬盘无法救援;(因为大部分的数据文件都是将磁盘分割表存放在磁盘前端);危险程度比 RAID 0 更强;但是不会像 RAID 0 对数据要访问所有硬盘;
3.2.2. RAID 7
非公开标准;Storage Computer Corporation 提出,在 RAID 5 的基础上增加了专用缓存,更多的控制和管理;目标是提供更高的读写性能;通过高速缓存来提供更高的读写速度;
3.2.3.RAID 10/01
RAID 1 + 0:先做 RIAD 1 再对 RAID 1 做 RAID 0;
RAID 0 + 1:先做 RAID 0 再对 RAID 0 做 RAID 1;
3.2.4. RAID 50 等...
先做 RAID 5 再做 RAID 0;还有 RAID 53,RAID 60 之类的;都是诸如此类;
3.3. 总结各个 RAID 模式
RAID 模式 | 最少硬盘 | 最大容错 | 可用容量 | 读取性能 | 写入性能 | 延迟-读 | 延迟-写 | 安全 |
---|---|---|---|---|---|---|---|---|
JBOD | 1 | 0 | n | 1 | 1 | t | t | 无 |
0 | 2 | 0 | n | n | n | t | t | 无 |
1 | 2 | n-1 | 1 | n | 1 | t | t | 高,一个正常即可 |
3 | 3 | 1 | n-1 | n-1 | n-1 | t | 2t | 中下至中 |
4 | 3 | 1 | n-1 | n-1 | n-1 | t | 2t | 中下至中 |
5 | 3 | 1 | n-1 | n-1 | n-1 | t | 2t | 中下至中 |
6 | 4 | 2 | n-2 | n-2 | n-2 | t | 3t | 中至中高,仅安全性较 RAID 5 高 |
4. 实现模式
4.1. 软件方式
主要通过 CPU 来进行处理,会耗费 CPU 资源运算 RAID,价格低;
4.2. 硬件方式
专门的阵列卡等;氪金佬专属,性能高;
5. 总结
实际上来说,一般应用较多的,还是 RAID 0,1,5,6;和一部分混合 RAID 来实现;
一般很多家庭 NAS 用户会选择 RAID 5 来进行,切记,这也不是最保险的,两块盘如果是相同批次;很可能出现,一块盘损坏,另一块盘在重建 RAID5 的时候,损坏,此时数据寄勒;切记 RAID 不是备份;数据还是要以备份为主;尤其是 家庭式 NAS 在使用过程中;切记多备份;
6. ZFS 技术
一个更加先进的文件管理系统~