61 FreeBSD连载:其他内核设置选项( 六 )


当使用分段存储之后,理论上在两个磁盘上同时分段存储,存取速度可以加快 。这种速度的提高是针对单次数据存取而言的,例如在读取一个大文件时,ccd可以同时从两个磁盘读取 。可以看出ccd所作只是改变数据存取的位置,通过将可能会同时访问的数据放置到可以同时访问的多个磁盘上,来提高存取速度 。然而而由于ccd是使用软件方式实现的分段,软件方式不能提高磁盘I/O的硬件限制,而高负荷的服务器,同时会有多个进程对多个磁盘进行I/O操作,ccd的作用就不太明显了 。此时使用硬件RAID的方式更为有效 。
FreeBSD支持DPT的硬件RAID卡,很多服务器附带的RAID卡均是OEM这家厂商的产品,虽然它们使用其他厂商的商标,但实质还是同一个厂家的产品 。因此在使用RAID卡时,需要检查其手册或卡上的芯片标识,判断其是否为OEM产品,以获得RAID卡的真实型号 。
此外,还有一些SCSI-to-SCSI的RAID卡,因此只要该卡使用SCSI控制芯片为FreeBSD所支持,该卡就能在FreeBSD下使用 。
虽然ccd设备能够提高存取速度,但对于建立交换磁盘空间意义不大,一般也并没有必要将交换空间建立在ccd设备上 。这是因为FreeBSD对交换设备本身也采用了交错存取的策略,如果在多个磁盘上设定了多个交换空间,系统会自动使用交错方式使用交换空间,而不必依赖ccd设备的帮助 。
对于IDE磁盘,尤其对于连接在同一条IDE线上的IDE磁盘,使用分段策略是无益的 。因为同一条IDE总线上不能进行并发存取数据,分段存储反而影响速度 。即使是连接在两个IDE总线上的两个IDE磁盘,由于IDE磁盘的存取十分占用CPU的处理时间,因此分段存储带来的益处也极为有限,只有SCSI磁盘才能充分发挥分段存储的带来的好处 。
ccd也支持RAID 1,这种方式又称为磁盘镜像方式,主要用于保护磁盘数据不会因为偶然损坏而丢失数据,但同时多使用一倍的磁盘空间 。此时需要将ccdconfig中的第二个数字参数设置为4,它将强制使用相同大小的各个物理磁盘的空间并使用RAID 1方式 。当前的ccd还不支持RAID 5 。
# ccdconfig -c ccd1 32 4 /dev/da0s2e /dev/da1s2g虽然ccd能够支持RAID 1,但通常并不使用它来进行RAID 1 。主要原因是ccd并没有提供相应的软件工具,使得能够在系统出现问题时,能从镜像磁盘中恢复出数据 。由于ccd设备和物理磁盘的存储格式存在差异,并不能直接安装上ccd镜像磁盘其中的一个,要恢复存储的数据就需要其他工具的帮助 。由于ccd本身并没有提供这种工具,就只能依靠从原始磁盘上读取数据的方式恢复,就使得恢复数据比较困难,所以很少有使用者真正利用ccd来进行磁盘镜像 。
如果需要使用RAID 1以增强系统的可靠性,可以考虑使用vinum,这个软件使用一个内核可加载模块,能提供RAID 0、RAID 1和RAID 5,但由于版权的原因(产生校验和的算法被其专利保护),其中的RAID5代码没有被直接放入FreeBSD系统中,随同FreeBSD一起提供的vinum只提供RAID 0和RAID 1能力 。由于ccd用于RAID 0更容易,而vinum提供了相当完善的RAID 1功能,因此习惯上使用ccd来提供RAID 0,而使用vinum提供RAID 1 。具备RAID 5能力的vinum版本可以从Cybernet公司获得(http://www.cybernet.com),或者与vinum的开发者联系获得测试版 。vinum是一个相当复杂的软件,这里就不再讨论其设置和使用方法了 。
当设置好ccd之后,就可以将其配置放入配置文件中 。使用ccdconfig -g命令可以将当前的配置显示出来,把这些设置放入/etc/ccd.conf中之后,使用ccdconfig -C将直接读取这个设置文件,来设置ccd的各个设备,启动时也将自动执行这个设置任务 。
# ccdconfig -g > /etc/ccd.conf由于ccdconfig及vinum会直接和内核中的伪设备交谈,因此使用它们具备一定的危险性,对它们进行设置时就有造成系统当机的可能性 。因此进行设置不要运行其他进程,最好进入单用户状态进行操作,在设置完毕之后,系统就会正常运行了 。如果在设置时连续出现当机问题,可以尝试改变设置时使用的ccd设备及其顺序,例如本来使用ccd0的改变为使用ccd1,再进行重新配置,以避开ccd驱动中可能存在的问题 。

推荐阅读