Skip to content

No.8 存储管理:RAID

什么是 RAID ?

RAID 是 Redundant Array of Independent Disks 的缩写,中文名是独立磁盘冗余阵列。它是一种通过将多个硬盘组合起来,形成一个逻辑上的硬盘阵列,从而提高数据的读写速度和数据的冗余性的技术。

OMV7 将 RAID 功能拆分成了单独的插件,所以你需要先安装 openmediavault-md 插件,然后才能在管理界面中看到 RAID 的相关设置。

支持的 RAID 阵列类型

RAID 阵列类型

如图所示,OMV7 支持的软件 RAID 阵列类型有:

RAID 类型名称最低硬盘数可扩容容量利用率数据冗余
RAID 0条带2100%
RAID 1镜像250%
JBOD线性2100%
RAID 5奇偶校验3(n-1)/n
RAID 6双奇偶校验4(n-2)/n
RAID 101+0450%

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。