选择一个大容量存储比较好的解决方案,最重要的因素是产品的速度、 性能和成本。通常这三者不可能都满足;要获得比较快和可靠的大容量存储 设备,就比较昂贵。但如果将成本降下来,那它的速度或可靠性就会打折扣。
在设计下面描述的系统时,价格被选为最重要的因素,接下来是速度 和性能。这人系统的数据传输速度及大的取决于网络。性能也非常重要, CCD 驱动器上的所有数据都被备份到了 CD-R 盘,可以很容易的对数据进行恢复。
在选择一个大容量的存储解决方案时,第一步是要设计您自己的需求。 如果您的需求更偏重于速度和性能,那么您的解决方案将就不同于上面的设计。
除了 IDE 系统磁盘外,还有三个 Western Digital 30GB、5400 RPM 的 IDE 磁盘构成了大约 90G 的连接磁盘驱动存储空间。最好是每个 IDE 硬盘 都使用一个自己的 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
Note: 如果 FreeBSD 没有检测到它们,请确定它们的跳线是否设置 正确。大多数 IDE 磁盘有一个 “Cable Select” 跳线。这个 不是 设置 master/slave 硬盘的跳线。查阅文档 信息来确定正确的跳线设置。
接下来考虑的是,如何创建文件系统。应该好好研究一下 vinum(8) (Chapter 17)和 ccd(4) 两种方式,在这里我们选择 ccd(4)
ccd(4) 允许用户将几个相同的的磁盘通过一个逻辑文件系统 连接起来。要使用 ccd(4),您需要在内核中配置 ccd(4) 支持选项。把这行加入到内核配置文件中,然后重建内核:
pseudo-device ccd 4
在 5.X 和以后的版本中,您必须使用下面的行来代替:
device ccd
Note: 在 FreeBSD 5.X 里,不必指定一系统的 ccd(4) 设备, ccd(4) 设备将自动按需要创建新的 -- 设备。
ccd(4) 在FreeBSD 3.0 或以后的版本中也可以作为一个内核模块 来加载
要安装 ccd(4), 首先需要使用 disklabel(8) 来编辑硬盘:
disklabel -r -w ad1 auto disklabel -r -w ad2 auto disklabel -r -w ad3 auto
这儿把整个硬盘创建成 ad1c, ad2c 和 ad3c 。
Note: 从 FreeBSD 5.1-RELEASE 开始, bsdlabel(8) 程序代替 了老版本的 disklabel(8) 程序。bsdlabel(8) 中大量过时的选项 和参数也被取消; 在上面的例子中,选项 -r 应该被删掉。 更的信息可以参考 bsdlabel(8) 手册。
下一步是改变 disklable 的类型。也可以使用 disklabel(8) 来编辑:
disklabel -e ad1 disklabel -e ad2 disklabel -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)
ccd0c 的设备节点可能不存在,所以要 创建它,执行下面的命令:
cd /dev sh MAKEDEV ccd0
Note: 在 FreeBSD 5.0 中,devfs(5) 将自动管理在 /dev, 里的设备结点,所以没有必要使用 MAKEDEV 命令。
现在已给每个磁盘都加上了标签,下面需要建立 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) 以到它能被挂上。
Note: 如果启动进入了单用户模式,在 mount(8) 上 ccd(4) 之前,需要执行下面的命令来配置队列:
ccdconfig -C
要自动挂接 ccd(4),需要为 ccd(4) 在 /etc/fstab 中配置一个记录,以便在启动时它能被挂上。 如下所示:
/dev/ccd0c /media ufs rw 2 2
Vinum 卷管理是一个实现虚拟磁盘的块驱动设备工具。它使磁盘从 块设备的接口和数据映射中独立出来。与传统的存储设备相比,增加了 灵活性、性能和可靠性。 vinum(8) 实现了 RAID-0、RAID-1 和 RAID-5 三种模式,它们即可以独立使用,也可组合使用。
参考 Chapter 17 得到更多 vinum(8) 的信息。
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
您首先需要将磁盘从阵列中移除以便您可以 安全的拆除它:
# atacontrol detach 3
换上磁盘
把磁盘作为备用磁盘安装:
# atacontrol attach 3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present
重建阵列:
# atacontrol rebuild ar0
rebuild 命令挂起直到完成。然而,可以打开另一个终端 (使用 Alt+Fn) 通过下面的命令来检查进程:
# 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
等待操作完成。