RAID
程序员文章站
2022-05-10 08:05:09
...
RAID
RAID 阵列概述
- 独立冗余磁盘阵列
- Redundant Arrays of Inexpensive Disks
- 通过硬件/软件技术, 将多个较小/低速的磁盘整合成一个大磁盘
- 阵列的价值 : 提升I/O效率、硬件级别的数据冗余
- 不同RAID级别的功能、特性各不相同
RAID实现方式
- 软件RAID
- 由主机中的软件来提供RAID功能
- 主板 -> 磁盘 -> 操作系统 -> RAID软件 -> 数据
- 硬件RAID
- 由集成在主机或存储阵列上专用硬件实现功能
- RAID控制卡(主机上)
- RAID控制器(存储阵列上)
- 磁盘聚合
- 逻辑磁盘和物理磁盘I/O请求
- 故障时数据再生
- 主板 -> 阵列卡 -> 磁盘 -> 操作系统 -> 数据
- 由集成在主机或存储阵列上专用硬件实现功能
RAID技术
分条
分条是将数据分布在多块磁盘以实现磁盘的并行使用的技术.
条带 : 磁盘上一块由若干地址连续的磁盘块构成的、大小固定的区域定义为条带(strip)
分条 : 位于 RAID集所有磁盘上相同位置的条带构成了分条
条带尺寸 : strip size 也称为分条深度, stripe depth 描述了构成条带的磁盘块(Disk Block)数目, 如果数据访问总是从条带的起始位置开始, 那么条带尺寸就等于从单个磁盘一次所能读取或写入的最大数据量.分条中所有的条带都含有相同数目的磁盘块. 而减小条带尺寸就意味着数据被分成更小的块存储在多个物理磁盘上.
分条尺寸 : stripe size 是条带尺寸与RAID集中硬盘数量的乘积. 例如: 一个由5块磁盘组成, 条带尺寸为64KB的RAID集的分条尺寸为320KB(64KB * 5)
分条宽度 : stripe width 是一个分条所包含的数据条带的数目
数据镜像
- 镜像技术将同一数据存储在两个不同的磁盘上
- 控制器会自动利用幸存磁盘上的数据镜像继续对主机的数据请求进行响应
- 替换损坏磁盘时, 控制器会自动将数据将幸存磁盘中的数据副本拷贝回去
- 镜像能提高读访问的性能, 但会降低写访问的性能 因此每次访问都要两块磁盘进行反应
奇偶检验
- 奇偶检验是一种既能为分条RAID提供数据保护, 又能避免镜像所需开销的方法.
实现方法:
往分条中增加一个磁盘来存储校验值, 通过数学方法构造的校验值能够重建丢失的数据, 这种冗余校验能够提供完全的数据保护, 且不需要完整的数据副本.
在真实的检验值计算中采用的是位异或操作
**优点**
```
相比于镜像技术100%的额外存储开支, 对于4块磁盘用于存储数据, 奇偶检验的开支只有25%
```
**缺点**
```
由于校验信息是根据数据磁盘上的数据产生, 一旦数据改变, 就要重新计算校验值. 耗时的校验计算将影响RAID控制器性能
```
RAID级别
级别 | 简单描述 |
---|---|
RAID 0 | 无容错性分条阵列 |
RAID 1 | 磁盘镜像 |
嵌套的 | 多个RAID级别的组合, 如RAID 1 + RAID 0 |
RAID 3 | 带专用校验磁盘的并行访问分条阵列 |
RAID 4 | 带独立磁盘访问和专用校验磁盘的分条阵列 |
RAID 5 | 带独立磁盘访问和分布式校验的分条阵列 |
RAID 6 | 带独立磁盘访问和双重分布式校验的分条阵列 |
RAID 0 : 无容错性分条阵列
- 数据是分条存储在RAID集的各个硬盘上的, 因此利用了全部的存储空间
- 读取数据时, 控制器会将各条带数据重新组合起来
- 适用于那些对I/O带宽需求很大的应用程序
- 缺点 : 无法提供高可用性
RAID 1 : 磁盘镜像
- RAID 1 基于磁盘镜像技术, 通过数据镜像来提供容错性
- 一个RAID 1组至少由两块硬盘构成
- 磁盘故障时, RAID 1 的数据恢复代价是所有RAID级别中最小的.
- RAID 1 适用于那些对高可用性有需求但没成本限制的应用.
嵌套 RAID
- 许多数据中心对RAID阵列的数据冗余和性能都有需求, 因此出现了RAID 1+0 和 RAID 0+1
- 这类RAID需要由偶数数量的磁盘构建, 且至少需要4块硬盘
RAID 1+0 (Striped Mirror, 分条的镜像)
- RAID 1+0 也被称为 RAID 10 或 RAID1/0
- RAID 1+0 适用于写密集、随机访问、数据量小的I/O负载, 如以下应用:
- 高事务率的在线事务处理(Online Transaction Processing, OLTP)
- 大型消息服务
- 负载多为写密集和随机访问的数据库应用
- RAID 1+0 的基本构成是镜像对. 数据先被镜像, 然后再将两个副本分别分条存储在RAID集的多个硬盘上
- 当替换故障磁盘时, 阵列控制器利用镜像组中的幸存磁盘来完成数据恢复, 并继续提供服务. 幸存磁盘中的数据将被复制到新替换的磁盘上
RAID 0+1 (Mirrored Stripe, 镜像的分条)
- RAID 0+1 也被称为 RAID 01 或 RAID 0/1
- RAID 0+1 的基本构成是条带
- 数据将首先分条存储到各个磁盘上, 然后再对整个分条生成镜像.
- 当一块磁盘失效时, 整个分条都将失效
- 重建过程中, 幸存分条中各个磁盘的数据复制到故障分条集的相应替代磁盘去. 这将给幸存磁盘带来额外和不必要的I/O负载, 使RAID集更容易收到二次磁盘失效的影响
RAID 3 : 专用奇偶校验磁盘
- RAID 3 通过存储分带提供高性能, 利用就检验提高容错性.
- RAID 3 中, 数据总是以整个分条为单位对所有磁盘并行读写的, 不存在只更新同一分条中某些条带的部分写操作
- RAID 3 适用于数据备份及视频流服务等涉及大量顺序数据访问的应用, 可以提供很好的性能
RAID 4 : 带独立磁盘访问和专用校验磁盘的分条阵列
- 与RAID 3 类似, 不同的是RAID 4的数据磁盘支持独立访问, 因此某个数据单元可以从某块磁盘中读写, 而无需访问整个分条
- RAID 4 提供了很好的读吞吐率和可接受的写吞吐率
RAID 5 : 带独立磁盘访问和分布式校验的分条阵列
- RAID 5 是一种适用性很强的RAID实现, 同RAID 4 一样也采用了分条技术 与 磁盘可独立访问技术
- 不同的是在于存储校验值的位置, 由于RAID 4 将校验值存储在一个专用的磁盘上, 这就使校验磁盘成为写性能瓶颈.
- 在RAID 5 中, 校验值是分布存储在所有磁盘上的, 这种方法客服了校验值写性能瓶颈的缺陷
- RAID 5 适用于较多随机读写及密集型的应用, 如:
- 消息系统、数据挖掘、中等性能的媒体服务器
- 以及数据库管理员(DBA)优化数据访问所用的关系数据库管理系统(RDBMS)
RAID 6 : 带独立磁盘访问和双重分布式校验的分条阵列
- RAID 6 的工作模式和 RAID 5基本相同
- 引入了第二个校验元素以应对RAID组中的两块磁盘同时失效的情况
- 因此 RAID 6 至少需要4 块磁盘
- RAID 6 也将校验值分布在所有磁盘上, 由于RAID 6的写代价比RAID 5大, 因此RAID 5的写性能要比RAID 6好
- RAID 6 有两个校验集, 因此它的重建操作要比RAID 5 更耗时
RAID对磁盘性能的影响
- 在选择RAID级别时充分考虑它对磁盘性能和应用程序I/O吞吐率(Input/Output Operations Per Second IOPS)的影响是至关重要的
写代价
- 对于RAID 1 ,每个写操作都要在构成镜像的两块磁盘上同时进行
- 对于RAID 5 ,每个写操作都会产生4个实际I/O操作
- 当RAID 5 阵列执行大量琐碎的写操作时, 对于每次写操作, 控制器都要对每个校验段进行读取 计算和回写
各种RAID的比较
RAID | 最少磁盘数 | 存储利用率% | 开销 | 读性能 | 写性能 | 写代价 | 数据保护 |
---|---|---|---|---|---|---|---|
0 | 2 | 100 | 低 | 随机与顺序读都很好 | 很好 | 无 | 无保护 |
1 | 2 | 50 | 高 | 较好,比单个磁盘高 | 较好,比单个磁盘略慢 | 中 | 镜像保护 |
3 | 3 | (n-1)*100/n | 中 | 对随机读较好,对顺序读很好 | 对琐碎的随机写不太好, 对大型连续写较好 | 高 | 可应对单磁盘的失效的校验保护 |
4 | 3 | (n-1)*100/n | 中 | 随机和顺序读很好 | 随机和顺序写都较好 | 高 | 可应对单磁盘的失效的校验保护 |
5 | 3 | (n-1)*100/n | 中 | 随机和顺序读很好 | 随机和顺序写都较好 | 高 | 可应对单磁盘的失效的校验保护 |
6 | 4 | (n-2)*100/n | 中 | 随机和顺序读很好 | 随机和顺序写都较好 | 非常高 | 可应对双磁盘的失效的校验保护 |
1+0和0+1 | 4 | 50 | 高 | 很好 | 较好 | 中 | 镜像保护 |