RAID (Redundant Arrays of Independent Drives), 磁盘阵列,是一种将若干物理硬盘组合成一个新的存储设备,同时提供额外的备份和纠错功能的技术。用于解决单个磁盘访问速度慢,容量小,安全性不够的传统缺陷。
今天介绍一下两个比较流行的 RAID 模式:RAID 10 和 RAID 5 。
RAID 0
RAID 0 是最简单的 RAID 模式,同时也是 RAID 10、RAID 50、RAID 60 等复杂模式的基础。RAID 0 的最小存储单位是条带,多块磁盘分解成若干条带,再从逻辑上组合成一块连续的虚拟硬盘。因此 RAID 0 具备并发的操作能力。

写速度通常会高于单块磁盘。
不过 RAID 0 的数据安全性不够,任意一块磁盘掉线后整个设备不可用,数据安全性最差。
RAID 0 的设备容量是所有磁盘的总和,磁盘容量随磁盘数量增加而线性增大。
RAID 1
RAID 1 是多副本模式,同时使用两块或两块以上的磁盘存储同一份数据。写入时,数据同时写入所有磁盘;读取时,选择任意磁盘读取。

读取速度与单块硬盘一致;写入速度比较慢,因为需要同时写入多个副本。
可以容忍任意磁盘掉线,只要最终还能剩下一个盘,数据就可用。所以 RAID 1 模式下数据安全性非常强。
设备的容量和单块磁盘一致,如果磁盘数量是 n 的话,设备总量容是总磁盘容量的 1/n。设备安全性随着磁盘数量增加而增大。
RAID 10
RAID 10 模式是 RAID 1 和 RAID 0 顺序嵌套组合。

RAID 10 是所有磁盘先用 RAID 1 组合起来,再用 RAID 0 模式组成一个虚拟磁盘设备。如果 RAID 1 的副本数量是 n,那么设备容量是所有磁盘总容量的 1/n。这个模式兼顾了 RAID 0 无限扩容和 RAID 1 数据镜像备份的优点。最小能容忍 n-1 个磁盘掉线,最大能接受总磁盘数量的 (n-1)/n 磁盘掉线。
因为 RAID 0 带条并行分布的特点,RAID 10 的读写速度会比 RAID 1 快。
相应的还有 RAID 01 模式。RAID 01 的组成方式和 RAID 10 相反,先用 RAID 0 将所有磁盘组合成两组磁盘,再把两组磁盘用 RAID 1 组合成一个带备份的磁盘。这个模式的优点是数据读写速度更快,缺点是数据安全性不佳,一块硬盘掉线就会导致整个 RAID 0 磁盘组掉线,极端情况下两块硬盘就可以导致所有数据丢失。
RAID 5
RAID 5 是带数据校验的模式。

其校验的原理,是把所有数据以条带为单位,均匀的分割成若干个小块,比如 A1, A2 ... An 。然后把所有数据块累加,得到校验数据块:

某个数据块可以由其他数据块和校验数据块计算生成:

因此任意一个数据块消失,都可以通过校验数据恢复。
实际操作中,加法有进位的问题,校验数据块会大于普通数据块,不利与数据的均匀分布。所以在实现校验算法的时候,RAID 5 用的是布尔操作的异或运算:
E = A1 ^ A2 ... An
校验公式就变成了:
Am = EA ^ A1 ^ A2 ... An
由校验算法的原理可知,RAID 5 最多允许一块磁盘掉线。如果掉线的数据盘,相应数据由其他数据盘和校验盘计算生成;如果掉线的是校验盘,则数据盘正常对外提供读写功能。
所以如果磁盘总量是 n 的话,RAID 5 的可用磁盘空间是总磁盘容量的 (n-1)/n 。
和 RAID 10 一样,RAID 5 也能和 RAID 10 嵌套组合起来,做成 RAID 50 模式。
总结
RAID 10 和 RAID 5 都是常用的 RAID 模式。
RAID 10 是一个安全性极佳的存储方案,优点是读取速度极高,数据安全性极好,结构简单,故障后重建速度快。缺点是磁盘利用率低,成本高,写入效率低。
RAID 5 提供了一个开销比较小的安全存储方案。优点是磁盘冗余度低,存储成本低。缺点是需要额外计算校验值,所以写入速度极慢,CPU 开销大;同时只能允许一块磁盘掉线,数据安全性不如 RAID 10 ;故障后重建也非常比多副本模式长很多。
