RAID(Redundant Arrays of Independent Disks)独立磁盘冗余阵列, 主要用于通过在硬件层次上将多个物理磁盘或磁盘分区进行组合, 从而在逻辑层次上不同等级LEVEL对数据进行存储, 从而在数据存储的不同性能指标上进行提升. 等级不是根据数字大小进行排序的, 而是只是表示了一种存储方式. 本文主要描述常见的不同等级RAID的原理和特性.


RAID的衡量指标:

1. IO性能: RAID中数据的读写速率

2. 冗余能力: 是否能够对数据进行冗余备份

3. 磁盘空间: 进行RAID之后的磁盘空间, 设定进行RAID的磁盘是n块大小为s的磁盘,

4. 磁盘要求: 需要的磁盘数量要求

RAID主要概念:

chunk: RAID中存储单位的大小, 在将磁盘构建成RAID时会指定相应chunk大小


RAID-0


wKioL1Xg73KQExDRAAE6nBpL9Ss387.jpg


RAID-0原理如上图所示, 主要是实现将多个物理磁盘构成一个大的逻辑磁盘, 在进行数据IO时各个chunk会被依次写入轮询的物理磁盘中, RAID-0主要实现了分区空间的扩展.

RAID0性能分析:

1. IO性能: 读写性能提升, 因为在读写数据时同时向多块磁盘空间内读写数据, 会提升读写速率

2. 冗余能力: 没有实现对数据进行冗余备份, 

3. 磁盘空间: ns

4. 磁盘要求: 最少需要2块磁盘

5. 容错能力: 不允许损坏磁盘


RAID-1


wKiom1Xg7VfA3a9mAAEynot_MHk465.jpg


RAID-1原理如上图所示, 主要是实现将多个物理磁盘构成两个大小相同的主备磁盘组, 在进行数据IO时各个chunk会被同时写入两个磁盘组当中, RAID-1主要实现了对数据的冗余存储.

RAID1性能分析:

1. IO性能: 读取数据时因为有多个数据备份, 读取速率会提高; 写入数据时因为要同时写入多个chunk数据块, 写入速率会下降

2. 冗余能力: 存储多个数据备份

3. 磁盘空间: ns/2

4. 磁盘要求: 最少需要2块磁盘, 且为2的倍数

5. 容错能力: 最多允许损坏1块磁盘


RAID-5


wKioL1Xg73KTv9ovAAE6ubmMsao261.jpg


RAID-5原理如上图所示, 主要是实现在数据IO时会通过n-1块磁盘来读写数据, 第n块磁盘来读写数据的校验块(通过循环冗余校验计算得出), 从而通过循环冗余校验的方式对数据进行备份, 存放校验块的磁盘是在n块磁盘中进行轮询的

RAID5性能分析:

1. IO性能: 读写性能提升, 因为在读写数据时同时向多块磁盘空间内读写数据, 会提升读写速率

2. 冗余能力: 能够提供冗余能力

3. 磁盘空间: (n-1)s/n

4. 磁盘要求: 最少需要3块磁盘

5. 容错能力: 最多允许损坏1块磁盘


RAID01


wKioL1Xg9mjA-wpqAAK5bXO64fk406.jpg


RAID01原理如上图所示, 主要是先通过RAID-0对磁盘在空间上进行扩展, 再通过RAID-1对磁盘组进行冗余备份

RAID01性能分析:

1. IO性能: 读写性能提升, 因为在读写数据时同时向多块磁盘空间内读写数据, 会提升读写速率

2. 冗余能力: 能够提供冗余能力

3. 磁盘空间: 1/2

4. 磁盘要求: 最少需要4块磁盘

5. 容错能力: 不允许不同RAID-0组损坏相同位置的磁盘


RAID10


wKiom1Xg7Veg_0v0AALCYTkRobU844.jpg


RAID10原理如上图所示, 主要是先通过RAID-1对数据进行冗余备份, 再通过RAID-0对磁盘组空间进行扩展

RAID10性能分析:

1. IO性能: 读写性能提升, 因为在读写数据时同时向多块磁盘空间内读写数据, 会提升读写速率

2. 冗余能力: 能够提供冗余能力

3. 磁盘空间: 1/2

4. 磁盘要求: 最少需要4块磁盘

5. 容错能力: 不允许同一RAID-1组损坏2块磁盘, 允许不同RAID-1组损坏多个磁盘


在实际使用中, RAID10比RAID01有更好的实用性.


以上就是常见RAID磁盘阵列的原理和特性, 使用时应根据具体使用环境来选择合适的类别.


本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!