RAID 全称 Redundant Array of Independent Disks,独立冗余磁盘阵列,将多块独立物理硬盘按不同方式组合形成一个逻辑硬盘,提供比单盘更高的存储性能和数据备份。RAID 是为了减少数据丢失而发明的一种方法。
- RAID 0,数据平均写入多个磁盘阵列,读写都是并行的,磁盘 IOPS 提高一倍
- RAID 1,提高数据安全性,一份数据复制到多个磁盘,不能提高 IOPS,但是数据冗余多份
- RAID 5,数据平均写到总磁盘数减 1 的磁盘中,在一块磁盘上中写入数据的奇偶校验信息,即使一块磁盘发生故障,也可以通过磁盘数据和奇偶校验来恢复数据
- RAID 0+1,一份数据同时写入多个备份磁盘分组,多个分组内并行读写
RAID 0
至少需要两块物理硬盘,将数据以位或者字节分割,并行地读 / 写到磁盘(英文的术语叫做 stripe),但是没有数据冗余,当其中一块硬盘故障时,所有数据无法恢复。假设有两块物理硬盘前提下,读写速度提高 2 倍,数据安全性降低 2 倍。
RAID 0 不适用于数据安全性高的场合。
RAID 1
RAID 1 至少需要两块物理硬盘实现,通过磁盘数据镜像冗余,在成对的独立磁盘上互为备份,用简单的话讲就是通过冗余一份或多份数据的方式提高数据安全性。原始数据繁忙时,直接从镜像拷贝数据,RAID 1 可以提高读取性能。假设两块物理硬盘前提下,存储空间只能利用 50%,单位成本最高,提供很高的数据安全性和可用性,当其中一块硬盘故障时,可以自动切换到另一块磁盘读写。可以承受单个硬盘故障而不会造成数据丢失。当容错至关重要,而空间和性能不是关键要求时,通常采用 RAID 1。
RAID 1 适用于安全性要求比较高的场合。
RAID 3
至少需要三块物理硬盘,数据条块化分布不同硬盘,使用冗余的单块磁盘存放奇偶校验,当物理盘故障,奇偶盘和数据盘可以重新恢复数据,而如果奇偶盘故障则不影响数据使用。
RAID 3 可对连续数据读写提供很好的性能,但对于随机数据写操作可能成为瓶颈。
RAID 5
至少需要三块物理硬盘,提供热盘实现故障恢复,校验位会分布存放在三块磁盘中;当其中一块故障,则可以恢复数据;如果其中两块损坏,则所有数据都会损坏。
RAID 5 通过奇偶校验位提高了数据安全性,可实现单盘故障后的数据恢复。
RAID 10
RAID10 又被称为 RAID 1+0 或者 RAID 0+1,至少需要四块物理磁盘。RAID 01 则是 1,2 磁盘,3,4 磁盘先组 RAID 0,然后组起的两个 RAID 0 阵列组 RAID 1。 RAID 10 则是先组 RAID 1 然后组 RAID 0。在提供性能的同时提供一定的安全性能。
图文解释
假设要写入的数据是{A1,A2,A3,……,A8},那么:
- 对于RAID1来说,需要做这样的转换:
+--+--+--+--+--+--+--+--+
+-->|A1|A2|A3|A4|A5|A6|A7|A8|
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+
|A1|A2|A3|A4|A5|A6|A7|A8|-->| Disk0
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+
RAID 1 +-->|A1|A2|A3|A4|A5|A6|A7|A8|
+--+--+--+--+--+--+--+--+
Disk1
- 对于四盘RAID0来说,需要做这样的转换:
+--+--+
+-->|A1|A5|
| +--+--+
| Disk0
| +--+--+
+-->|A2|A6|
+--+--+--+--+--+--+--+--+ | +--+--+
|A1|A2|A3|A4|A5|A6|A7|A8|-->| Disk1
+--+--+--+--+--+--+--+--+ | +--+--+
RAID 0 +-->|A3|A7|
| +--+--+
| Disk2
| +--+--+
+-->|A4|A8|
+--+--+
Disk3
- 对于四盘RAID10来说,需要做这样的转换:
+--+--+--+--+
+-->|A1|A3|A5|A7|
| +--+--+--+--+
| Disk0
| +--+--+--+--+
+-->|A1|A3|A5|A7|
+--+--+--+--+--+--+--+--+ | +--+--+--+--+
|A1|A2|A3|A4|A5|A6|A7|A8|-->| Disk1|
+--+--+--+--+--+--+--+--+ | +--+--+--+--+
RAID 10 +-->|A2|A4|A6|A8|
| +--+--+--+--+
| Disk2
| +--+--+--+--+
+-->|A2|A4|A6|A8|
+--+--+--+--+
Disk3
- 对于四盘RAID5来说,需要做这样的转换(其中B7、B8、Q3需要先从硬盘读出,P1、P2、P3需要进行计算):
+--+--+------+
+-->|A1|A4|B7->A7|
| +--+--+------+
| Disk0
| +--+--+------+
+-->|A2|A5|Q3->P3|
+--+--+--+--+--+--+--+--+ | +--+--+------+
|A1|A2|A3|A4|A5|A6|A7|A8|-- | Disk1(P3=B7 XOR A7 XOR B8 XOR A8 XOR Q3)
+--+--+--+--+--+--+--+--+ | +--+--+------+
RAID 5 +-->|A3|P2|B8->A8|
| +--+--+------+
| Disk2(P2=A4 XOR A5 XOR A6)
| +--+--+
+-->|P1|A6|
+--+--+
Disk3(P1=A1 XOR A2 XOR A3)
这些转换、计算过程,如果由 CPU 执行硬盘控制器的驱动程序代码完成,就是软RAID;如果由RAID卡上的主控芯片完成,就是硬RAID。
总结
RAID | 最小磁盘数量 | 磁盘利用率 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
RAID 0 | 2 | 100% | 成本低,提高磁盘读写 | 无冗余和修复能力,任何磁盘损坏将丢失所有数据 | 对读写性能要求较高,安全性要求不高的图形工作站 |
RAID 1 | 2 | 50% 或者 min(磁盘 1,磁盘 2) | 冗余备份,数据安全性高 | 成本高,磁盘利用率低 | 数据随机写入,安全性高的数据库服务器 |
RAID 3 | 3 | 2/3 | 专用奇偶校验磁盘冗余备份,数据安全性高 | 成本略高,磁盘利用率低 | 视频编辑,数据库 |
RAID 5 | 3 | 2/3 | 分布奇偶校验信息冗余备份,数据安全性高 | 成本略高,磁盘利用率低 | 金融,数据库等 |
RAID10 | 4 | 50% | 分布奇偶校验信息冗余备份,数据安全性中 | 成本略高,磁盘利用率低 | 日常等 |
最后推荐几个小工具,往往有些时候数据安全性和成本不能同时兼顾,所以当一旦想要使用 RAID,可以先考虑一下自己的需求,然后根据自己需要的容量,以及数据安全性综合考虑。
几个 RAID 容量计算小工具: