选择一个大容量存储比较好的解决方案,最重要的因素是产品的速度、 性能和成本。 通常这三者不可能都满足;要获得比较快和可靠的大容量存储设备, 就比较昂贵。但如果将成本降下来,那它的速度或可靠性就会打折扣。
在设计下面描述的系统时, 价格被选为最重要的因素, 接下来是速度和性能。 这个系统的数据传输速度基本上受限于网络。 性能也非常重要, CCD 驱动器上的所有数据都被备份到了 CD-R 盘, 可以很容易地对数据进行恢复。
在选择一个大容量的存储解决方案时,第一步是要设计您自己的需求。 如果您的需求更偏重于速度和性能,那么您的解决方案将就不同于上面的设计。
除了 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(4) (第 21 章)和 ccd(4) 两种方式,在这里我们选择 ccd(4)
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)
现在已给每个磁盘都加上了标签,下面需要建立 ccd(4)。要这样做, 需要使用 ccdconfig(8) 工具,同时要提供类似下面的选项:
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
每个选项的意义和用法如下所示:
运行 ccdconfig(8) 后 ccd(4) 就配置好了。现在要创建文件 系统了,参考 newfs(8) 选项,执行下同的命令:
newfs /dev/ccd0c
最后,要挂上 ccd(4) ,需要先配置它。把当前的配置文件写入 /etc/ccd.conf 中,使用下面的命令:
ccdconfig -g > /etc/ccd.conf
当重新启动系统时,如果 /etc/ccd.conf 存在, 脚本 /etc/rc 就运行 ccdconfig -C。 这样就能自动配置 ccd(4) 以到它能被挂上。
要自动挂接 ccd(4),需要为 ccd(4) 在 /etc/fstab 中配置一个记录,以便在启动时它能被挂上。 如下所示:
/dev/ccd0c /media ufs rw 2 2
Vinum 卷管理是一个实现虚拟磁盘的块驱动设备工具。它使磁盘从 块设备的接口和数据映射中独立出来。与传统的存储设备相比,增加了 灵活性、性能和可靠性。 vinum(4) 实现了 RAID-0、RAID-1 和 RAID-5 三种模式,它们既可以独立使用,也可组合使用。
FreeBSD 支持很多硬件 RAID 控制器。 这些硬件不需要 FreeBSD 指定软件来管理 RAID 系统。
使用 BIOS 支持的硬件,一般情况下这些硬件可以自行操作。 下面是一个简明的描述设置一个 Promise IDE RAID 控制器。 当硬件设备装好且系统重启后,屏幕上显示一个询问信息。接着进入硬件设置屏幕。在这里, 您可以把所有的磁盘联合在一起使用。这样 FreeBSD 将磁盘看作一个驱动器。其它 级别的 RAID 也可以相应的进行设置。
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
首先您应将包含故障盘的 ata 通道卸下, 以便安全地将其拆除:
# atacontrol detach ata3
换上磁盘
重新挂接 ata 通道:
# atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present
将新盘作为热备盘加入阵列:
# atacontrol addspare ar0 ad6
重建阵列:
# atacontrol rebuild ar0
可以通过下面的命令来查看进度:
# 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
等待操作完成。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.