RAID (Redundant Arrays of Independent Disks,RAID),可以通过软件或者硬件来实现,将多个较小的磁盘整合成一个具有容错功能的较大的磁盘,,本文记录相关内容。
磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID),通俗点可以叫具有容错功能的不贵的磁盘阵列,RAID是一种技术,可以通过软件或者硬件来实现,将多个较小的磁盘整合成一个具有容错功能的较大的磁盘,具体RAID等级根据使用需求来选择,有以下几种:
JBOD,Just a Bunch Of Disk,一堆硬盘。
在分类上,JBOD不是标准的RAID等级,只是将多个硬盘空间合并成一个大的逻辑硬盘,没有错误冗余机制。
RAID 0:等量模式,stripe,效率最高。
应用场景:不追求安全,只要速度,大规模并发的读取场景。如数据库(备)、存储库(备)。
RAID 1:镜像模式,mirror,完整备份。
应用场景:只追求安全性,不追求速度。比如系统盘和监控服务器。
RAID 5:奇偶校验,效率与数据备份兼顾,Disk Striping 硬盘分割技术。
应用场景:对安全性和速度有基本的需求。比如普通数据库、存储库。
RAID 6:两套奇偶校验,可以看作RAID 5的升级版,加入第二个独立的奇偶校验快。
应用场景:对安全性和速度有基本的需求。比如普通数据库、存储库。
RAID 10:先分割,再镜像。(常用,可靠性高)
RAID 01:先镜像,再分割。(可靠性低)
应用场景:对安全和性能都有较高要求的场景,比如数据库(主)、存储库(主)
软RAID:由操作系统模拟的RAID,由cpu来代替硬件RAID卡进行调度任务,一旦硬盘损坏,操作系统就会损坏,模拟的RAID就会失效。
假设要写入的数据是{A1,A2,A3,……,A8},那么:
12345678 | +--+--+--+--+--+--+--+--+ +-->|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 |
---|
12345678910111213141516 | +--+--+ +-->|A1|A5| | +--+--+ | Disk0 | +--+--+ +-->|A2|A6|+--+--+--+--+--+--+--+--+ | +--+--+|A1|A2|A3|A4|A5|A6|A7|A8|-->| Disk1+--+--+--+--+--+--+--+--+ | +--+--+ RAID 0 +-->|A3|A7| | +--+--+ | Disk2 | +--+--+ +-->|A4|A8| +--+--+ Disk3 |
---|
12345678910111213141516 | +--+--+--+--+ +-->|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 |
---|
12345678910111213141516 | +--+--+------+ +-->|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:n块独立硬盘+硬件RAID卡组成的,就算硬盘发生故障,RAID卡也不会发生故障,可以起到磁盘容错的作用。