Appearance
No.8 存储管理:RAID
什么是 RAID ?
RAID 是 Redundant Array of Independent Disks 的缩写,中文名是独立磁盘冗余阵列。它是一种通过将多个硬盘组合起来,形成一个逻辑上的硬盘阵列,从而提高数据的读写速度和数据的冗余性的技术。
OMV7 将 RAID 功能拆分成了单独的插件,所以你需要先安装 openmediavault-md
插件,然后才能在管理界面中看到 RAID 的相关设置。
支持的 RAID 阵列类型
如图所示,OMV7 支持的软件 RAID 阵列类型有:
RAID 类型 | 名称 | 最低硬盘数 | 可扩容 | 容量利用率 | 数据冗余 |
---|---|---|---|---|---|
RAID 0 | 条带 | 2 | ✘ | 100% | ✘ |
RAID 1 | 镜像 | 2 | ✔ | 50% | ✔ |
JBOD | 线性 | 2 | ✘ | 100% | ✘ |
RAID 5 | 奇偶校验 | 3 | ✔ | (n-1)/n | ✔ |
RAID 6 | 双奇偶校验 | 4 | ✔ | (n-2)/n | ✔ |
RAID 10 | 1+0 | 4 | ✔ | 50% | ✔ |
RAID 5 和 RAID 6 的写入放大问题
RAID 5 和 RAID 6 通过计算奇偶校验数据实现冗余,在写入新数据时需要读取其他数据和旧奇偶校验数据,重新计算新的奇偶校验数据,然后将新数据和新奇偶校验分别写入所有磁盘。这个过程涉及多次磁盘读写操作,导致了写入放大(Write Amplification)问题,即一次逻辑写入被转化为多次物理读写。
从理论上讲,RAID 6 的写入放大情况会比 RAID 5 更严重。RAID 6 需计算两份独立的奇偶校验数据(P 和 Q 校验块),读写操作会更多;而 RAID 5 只需计算一份奇偶校验数据。但在实践中,RAID 6 通常应用于较大规模的磁盘阵列,磁盘数量的增加一定程度上会抵消写入放大的影响。
相比之下,RAID 1 和 RAID 10 在写入时仅需在两个镜像盘上执行写操作,不涉及奇偶校验计算,因此写入放大问题较小。RAID 10 尤其在并发读写场景下,性能表现卓越。
RAID 10 的性能和冗余
RAID 10 是将多个硬盘分成两组,每组内的硬盘做镜像,然后两组硬盘做条带。RAID 10 既有 RAID 0 的读写性能,又有 RAID 1 的数据冗余,因此在性能和冗余性上都有较好的表现。
在需要扩容时,RAID 10 可以通过增加一组镜像硬盘来扩容,不会因为扩容而影响现有数据的读写性能。
不过,RAID 10 的缺点是硬盘利用率较低,只有 50%。这意味着,如果你有 4 块 1TB 的硬盘,那么你只能使用 2TB 的空间,另外 2TB 的空间被用来做镜像。
磁盘容量不一致的问题
在使用 RAID 1、RAID 5、RAID 6、RAID 10 等阵列时,如果你使用的硬盘容量不一致,那么阵列的容量将以最小容量的硬盘为准。
比如,你有 4 块硬盘,分别是 1TB、2TB、2TB、3TB,当你使用这 4 块硬盘创建 RAID 5 时,阵列的容量将是 1TB * 3 = 3TB。