FreeBSD 使用手册
上一页 | 第18章 　存储 | 下一页

# 18.4 RAID

## 18.4.1 软件 RAID

### 18.4.1.1 连接磁盘驱动器配置 (CCD)

Original work by Christopher Shumway. Revised by Jim Brown.

选择一个大容量存储比较好的解决方案，最重要的因素是产品的速度、 性能和成本。 通常这三者不可能都满足;要获得比较快和可靠的大容量存储设备， 就比较昂贵。但如果将成本降下来，那它的速度或可靠性就会打折扣。

在设计下面描述的系统时， 价格被选为最重要的因素， 接下来是速度和性能。 这个系统的数据传输速度基本上受限于网络。 性能也非常重要， CCD 驱动器上的所有数据都被备份到了 CD-R 盘， 可以很容易地对数据进行恢复。

在选择一个大容量的存储解决方案时，第一步是要设计您自己的需求。 如果您的需求更偏重于速度和性能，那么您的解决方案将就不同于上面的设计。

#### 18.4.1.1.1 安装硬件

除了 IDE 系统磁盘外，还有三个 Western Digital 30GB、5400 RPM 的 IDE 磁盘构成了大约 90G 的连接磁盘驱动存储空间。 理想情况是每个 IDE 硬盘都独占 IDE 控制器和数据线， 但为了尽可能降低成本， 通常并不会安装更多的控制器， 而是通过配置跳线，使每个 IDE 控制器都管理一个主盘和一个从盘。

重启动后，系统 BIOS 被配置成自动检测硬盘。FreeBSD 检测到它们：

    ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
    ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
    ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
    ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

> 注意: 如果 FreeBSD 没有检测到它们，请确定它们的跳线是否设置 正确。大多数 IDE 磁盘有一个 “Cable Select” 跳线。这个 不是 设置 master/slave 硬盘的跳线。查阅文档 信息来确定正确的跳线设置。

接下来考虑的是，如何创建文件系统。应该好好研究一下 vinum(8) (第 21 章)和 ccd(4) 两种方式，在这里我们选择 ccd(4)

#### 18.4.1.1.2 安装 CCD

ccd(4) 允许用户将几个相同的的磁盘通过一个逻辑文件系统 连接起来。要使用 ccd(4)，您需要在内核中配置 ccd(4) 支持选项。把这行加入到内核配置文件中，然后重建内核：

    device   ccd

对 ccd(4) 的支持也可以内核模块的形式载入。

要安装 ccd(4), 首先需要使用 bsdlabel(8) 来编辑硬盘：

    bsdlabel -w ad1 auto
    bsdlabel -w ad2 auto
    bsdlabel -w ad3 auto

此处将整个硬盘创建为 `ad1c`, `ad2c` 和 `ad3c`。

下一步是改变 disklable 的类型。也可以使用 bsdlabel(8) 来编辑：

    bsdlabel -e ad1
    bsdlabel -e ad2
    bsdlabel -e ad3

这儿在每个已经设置了 `EDITOR` 环境变量的磁盘上打开了 disklable，在我我例子中使用的是 vi(1)。

可以看到：

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

添加一个新的 `e` 分区给 ccd(4) 用。这可以是 `c` 分区的一个副本， 但 `fstype` 必须 是 `4.2BSD`。做完之后，您会看到一面这些：

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
      e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

#### 18.4.1.1.3 建立文件系统

现在已给每个磁盘都加上了标签，下面需要建立 ccd(4)。要这样做， 需要使用 ccdconfig(8) 工具，同时要提供类似下面的选项：

    ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e

每个选项的意义和用法如下所示：

  配置设备的第一个参数，在这是 `/dev/ccd0c`。 `/dev/` 部分是任选项。
  下一个参数是文件系统的插入页(interleave)。插入页定义了一个 磁盘块中一个分段或条带(stripe)的大小，通常是 512 个字节。所以一个为 32 的插入页将是 16,384 字节。
  插入页为 ccdconfig(8) 附带了标记。如果您要启用驱动器镜像， 需要在这儿指定它。在这个配置中没有做 ccd(4) 的镜像，所以把它 设为 0 (zero)。
  ccdconfig(8) 的最后配置是设备的排列问题。使用完整的设备 路径名。

运行 ccdconfig(8) 后 ccd(4) 就配置好了。现在要创建文件 系统了，参考 newfs(8) 选项，执行下同的命令：

    newfs /dev/ccd0c

#### 18.4.1.1.4 自动创建

最后，要挂上 ccd(4) ，需要先配置它。把当前的配置文件写入 `/etc/ccd.conf` 中，使用下面的命令：

    ccdconfig -g > /etc/ccd.conf

当重新启动系统时，如果 `/etc/ccd.conf` 存在， 脚本 `/etc/rc` 就运行 `ccdconfig -C`。 这样就能自动配置 ccd(4) 以到它能被挂上。

> 注意: 如果启动进入了单用户模式，在 mount(8) 上 ccd(4) 之前，需要执行下面的命令来配置队列：

>     ccdconfig -C

要自动挂接 ccd(4),需要为 ccd(4) 在 `/etc/fstab` 中配置一个记录，以便在启动时它能被挂上。 如下所示：

    /dev/ccd0c              /media       ufs     rw      2       2

### 18.4.1.2 Vinum 卷管理

Vinum 卷管理是一个实现虚拟磁盘的块驱动设备工具。它使磁盘从 块设备的接口和数据映射中独立出来。与传统的存储设备相比，增加了 灵活性、性能和可靠性。 vinum(8) 实现了 RAID-0、RAID-1 和 RAID-5 三种模式，它们既可以独立使用，也可组合使用。

参考 第 21 章 得到更多 vinum(8) 的信息。

## 18.4.2 硬件 RAID

FreeBSD 支持很多硬件 RAID 控制器。 这些硬件不需要 FreeBSD 指定软件来管理 RAID 系统。

使用 BIOS 支持的硬件，一般情况下这些硬件可以自行操作。 下面是一个简明的描述设置一个 Promise IDE RAID 控制器。 当硬件设备装好且系统重启后，屏幕上显示一个询问信息。接着进入硬件设置屏幕。在这里， 您可以把所有的磁盘联合在一起使用。这样 FreeBSD 将磁盘看作一个驱动器。其它 级别的 RAID 也可以相应的进行设置。

## 18.4.3 重建 ATA RAID1 阵列

FreeBSD 允许您热插拔阵列中损坏的磁盘。 在您重新启动系统之前请注意这一点。

您可能会在 `/var/log/messages` 或者在 dmesg(8) 的输出中看到类似下面这些的内容：

    ad6 on monster1 suffered a hard error.
    ad6: READ command timeout tag=0 serv=0 - resetting
    ad6: trying fallback to PIO mode
    ata3: resetting devices .. done
    ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
    status=59 error=40
    ar0: WARNING - mirror lost

使用 atacontrol(8)，查看更多的信息：

    # atacontrol list
    ATA channel 0:
        Master:      no device present
        Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

    ATA channel 1:
        Master:      no device present
        Slave:       no device present

    ATA channel 2:
        Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
        Slave:       no device present

    ATA channel 3:
        Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
        Slave:       no device present

    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

1. 首先您应将包含故障盘的 ata 通道卸下， 以便安全地将其拆除：

       # atacontrol detach ata3

2. 换上磁盘

3. 重新挂接 ata 通道：

       # atacontrol attach ata3
       Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
       Slave:   no device present

4. 将新盘作为热备盘加入阵列：

       # atacontrol addspare ar0 ad6

5. 重建阵列：

       # atacontrol rebuild ar0

6. 可以通过下面的命令来查看进度：

       # dmesg | tail -10
       [output removed]
       ad6: removed from configuration
       ad6: deleted from ar0 disk1
       ad6: inserted into ar0 disk1 as spare

       # atacontrol status ar0
       ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

7. 等待操作完成。

上一页 | 起始页 | 下一页
添加磁盘 | 上一级 | USB 存储设备

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.