磁盘冗余阵列
解决的问题
提高数据可靠性和 I/O 性能
异或运算
P校验:
P = D_1 xor D_2 xor D_3 ... xor D_n(RAID5)
Q校验:
Q = g_1 D_1 xor g_2 D_2 xor g_3 D_3 ... xor g_n D_n(RAID6)
RAID 方案
| 方案 | 空间利用率 | 读写性能 | 特点 |
|---|---|---|---|
| RAID 0 | / | 单块磁盘的N倍 | 条带化 |
| RAID 1 | 50% | / | 磁盘镜像 |
| RAID 3 | N-1 / N | 单块磁盘的N-1倍 | 一块盘用于奇偶校验,读写最频繁,也最容易损坏! |
| RAID 5 | N-1 / N | 单块磁盘的N-1倍 | 采用分布式奇偶校验,解决了单块校验盘的高频读写问题,与 RAID3 一样最多允许1块磁盘同时损坏 |
| RAID 6 | N-2 / N | 低于单块磁盘 | 读取时,跳过P、Q校验,性能是N-2;写入时,需要经历“两读两写”,过程可以参考 RAID6 专项介绍 |
| RAID 10 | 50% | 单块磁盘的N倍 | 结合了 RAID0 与 RAID1 |
RAID6
采用双重分布式校验,使用伽罗华域计算校验结果,即:在Q校验中引入常数因子g,与P校验组成线性无关的方程组。
写入惩罚值是4,修改文件时对数据操作过程为:(总共需要进行6次 I/O 操作!)
- 读旧数据
- 读旧的 P 校验块
- 读旧的 Q 校验块
- 伽罗华域 CPU 计算
- 写入新数据
- 写新的 P 校验块
- 写新的 Q 校验块
总结
- 所有磁盘,包括校验盘和数据盘,它们的容量应该相同,这就保证了存储数据位置的一致性
- 我们这里说的磁盘损坏是宏观上整块磁盘不工作了,但如果从微观角度进行细分,上述结论将不成立。比如,对于raid3,只要同时损坏的两块磁盘的数据位不同,同样可以修复
- 我们以上讨论都是基于晶体管这种开关元件来确定的逻辑,对于未来如果存在3进制或者其他存储方式,校验难度只会更加复杂
- 读写性能可以分开计算,但是从使用角度来看,磁盘需要同时兼顾读写性能,遵循短板效应
💬 评论区