19.4.RAID3 - 带有专用奇偶校验的字节级条带

RAID3 是一种用于将几个磁盘驱动器结合成一个具有专用奇偶校验盘的单一卷的方法。在一个 RAID3 系统中,数据被分割成若干字节,除了作为专用奇偶校验盘的一个磁盘外,这些字节被写入阵列中的所有磁盘。这意味着,从一个 RAID3 实现中的磁盘读取会访问阵列中的所有磁盘。通过使用多个磁盘控制器可以提高性能。RAID3 阵列提供1个驱动器的容错,同时提供 1-1/n 倍于阵列中所有驱动器总容量的容量,其中 n 是阵列中的硬盘数量。这样的配置大多适用于存储较大的数据,如多媒体文件。

建立一个 RAID3 阵列,至少需要 3 个物理硬盘。每个磁盘必须是相同的大小,因为 I/O 请求是交错进行的,可以并行地读或写到多个磁盘。另外,由于 RAID3 的性质,硬盘的数量必须等于 3 、 5 、 9 、 17,以此类推,或者 2^n+1。

本节演示了如何在 FreeBSD 系统上创建一个软件 RAID3。

注意:

虽然理论上可以从 FreeBSD 的 RAID3 阵列中启动,但这种配置并不常见,也不建议使用。

19.4.1. 创建一个专用的RAID3阵列

在 FreeBSD 中,对 RAID3 的支持是由 graid3(8) GEOM 类实现的。在 FreeBSD 上创建一个专用的 RAID3 阵列需要以下步骤。

  1. 加载 geom_raid3.ko 模块
# graid3 load

或者

# kldload geom_raid3
  1. 确保存在一个合适的挂载点。这条命令创建了一个新的目录,作为挂载点。
# mkdir /multimedia
  1. 确定将被添加到阵列中的磁盘的设备名称,并创建新的 RAID3 设备。最后列出的设备将作为专用的奇偶校验盘。这个例子使用了三个未分区的 ATA 硬盘:数据用 ada1ada2,奇偶校验用 ada3
# graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3
Metadata value stored on /dev/ada1.
Metadata value stored on /dev/ada2.
Metadata value stored on /dev/ada3.
Done.
  1. 对新创建的 gr0 设备进行分区,并在其上放置一个 UFS 文件系统。
# gpart create -s GPT /dev/raid3/gr0
# gpart add -t freebsd-ufs /dev/raid3/gr0
# newfs -j /dev/raid3/gr0p1

许多数字会在屏幕上滑过,经过一段时间后,这个过程就完成了。卷已经被创建,并准备好被挂载。

# mount /dev/raid3/gr0p1 /multimedia/

现在RAID3阵列已经可以使用了。

需要额外的配置,以便在系统重启时保留这一设置。

  1. geom_raid3.ko 模块必须在阵列被挂载之前被加载。为了在系统初始化时自动加载内核模块,在 /boot/loader.conf 中添加以下一行。
geom_raid3_load="YES"
  1. 为了在系统启动过程中自动挂载阵列的文件系统,必须在 /etc/fstab 中添加下列卷信息。
/dev/raid3/gr0p1	/multimedia	ufs	rw	2	2