21.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 阵列中启动,但这种配置既不常见,也不建议使用。 21.4.1.创建一个专用的 RAID3 阵列 -------------------------------- 在 FreeBSD 中,对 RAID3 的支持是由 `graid3(8) `__ GEOM 类实现的。在 FreeBSD 上创建一个专用的 RAID3 阵列需要以下步骤。 1. 加载 **geom_raid3.ko** 模块,执行以下任意一条命令: .. code:: shell-session # graid3 load 或者 .. code:: shell-session # kldload geom_raid3 1. 确保存在一个合适的挂载点。这条命令创建了一个新的目录,作为挂载点: .. code:: shell-session # mkdir /multimedia 1. 确定将被添加到阵列中的磁盘的设备名称,并创建新的 RAID3 设备。最后列出的设备将作为专用的奇偶校验盘。这个例子使用了三个未分区的 ATA 硬盘:数据用 **ada1** 和 **ada2**\ ,奇偶校验用 **ada3**\ 。 .. code:: shell-session # 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 文件系统。 .. code:: shell-session # gpart create -s GPT /dev/raid3/gr0 # gpart add -t freebsd-ufs /dev/raid3/gr0 # newfs -j /dev/raid3/gr0p1 在屏幕上会滑过许多数字,经过一段时间后,这个过程就完成了。卷已经被创建,并准备好被挂载: .. code:: shell-session # mount /dev/raid3/gr0p1 /multimedia/ 现在 RAID3 阵列已经可以使用了。 需要额外的配置,以便在系统重启时保留这一设置。 1.必须在阵列被挂载之前加载模块 **geom_raid3.ko**\ 。为了在系统初始化时自动加载内核模块,在 **/boot/loader.conf** 中添加以下一行: .. code:: shell-session geom_raid3_load="YES" 1. 为了在系统启动过程中自动挂载阵列的文件系统,必须在 **/etc/fstab** 中添加下列卷信息: .. code:: shell-session /dev/raid3/gr0p1 /multimedia ufs rw 2 2