精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络书籍>>《FreeBSD使用大全》>>FreeBSD连载(61):其他内核设置选项

主题:FreeBSD连载(61):其他内核设置选项
发信人: Hopper()
整理人: hahalee(2000-02-28 20:03:23), 站内信件
http://www.sina.com.cn 2000年1月3日 13:39 王波

其他内核设置选项
  了解了最基本的GENERIC设置文件的内容,使用者就能根据实际情况,将不必
要的设置删除,配置一个适合自己硬件的内核。然而GENERIC内核并不能包括更丰
富的设置,包括很多支持的硬件种类,或者特定的内核特性等。

  除了上面提到的这些较常用到的选项之外,FreeBSD中还支持一些不常使用的
设备和选项,例如一些老式的连接到声卡上的光驱、游戏杆等,FreeBSD甚至也支
持IP over ATM协议和ATM网卡,千兆以太网卡等最新的网络设备和协议。

  所有的选项均可以在LINT文件中找到对应配置的例子,就需要根据具体硬件
将配置增加到用户自己的配置文件中。

  无论增加哪种硬件设备之后,都要检查系统中是否有相应的设备文件存在。
通用内核中不存在的设备,缺省也没有生成对应的设备文件。因此需要进入/dev
目录中,使用/dev/MAKEDEV命令来产生相应的设备文件。 


调整内核性能

  当运行一台高性能服务器的时候,缺省设置并不能充分发挥内核的所有能力
。为了调整系统性能,便需要考虑更多的设置选项。

maxusers 256
options         "MAXMEM=(256*1024)"
options         "MAXDSIZ=(256*1024*1024)"
options         "DFLDSIZ=(256*1024*1024)"
options         NMBCLUSTERS=4096        
options         CHILD_MAX=512           
options         OPEN_MAX=512          
options SMP
options APIC_IO
options SOFTUPDATES
 
 

  由于服务器系统运行在高负载下,需要产生数量巨大的进程数目,并打开相
当多的文件。为了提供更好的支持就需要增加系统中表格的大小,这应该增加ma
xusers设置参数。

  系统启动时首先通过BIOS来检测系统中的内存,但是一般的BIOS最多只能报
告64M内存,因此FreeB SD需要自己检测系统中的内存数量。然而系统内存检测并
不一定检测到系统中的所有内存,因此需要在内核设置中指定内存大小,MAXMEM
选项就用来指定系统物理内存的容量。上例中将系统内存设置为256MB。

  此外,缺省情况下FreeBSD限制每个应用程序使用128MB的内存,这对于一般
的应用程序是满足的。但是对于特定的应用程序的服务器,如大容量的新闻组服
务器,将占用大量内存,因此就需要增加相应的参数。内核选项MAXD SIZ为最大
限制,DFLDSIZ为这个限制的缺省值,那么将应用程序的内存使用限制设为256MB
的配置项为上例所示。

  为了增加FreeBSD的网络性能,可以增加NMBCLUSTERS的值,这个设置决定网
络界面接收数据时的缓冲mbuf的大小,增加这个值就能使系统能同时响应更多的
并发请求,这对于Web等高负载服务器特别重要。CHIL D_MAX定义一个进程能打开
的最多子进程数数目,而OPEN_MAX定义一个进程能同时打开的文件描述字的数目
,这三个参数为继承自4.4BSD中的设置参数,在FreeBSD下一般不需要调整,因此
并没有写在LINT配置文件中,一般情况下,NMBCLUSTERS的缺省值对于高负载服务
器略小一些,而CHILD_MAC和OPEN_MAX的缺省值能满足一般的高负载服务器的要求


  通常这些数值参数需要根据实际情况进行调整,而不应该一味的增大。使用
vmstat,netstat,top 等系统工具可以观察系统在实际情况下的运行状态,以决
定需要进行哪些调整。

  SOFTUPDATES选项能增加UFS类型的文件系统存取速度,对于大部分种类的网
络服务器,系统瓶颈在于磁盘访问速度,而使用这个选项可以改善文件系统的存
取性能。这个选项之所以没有被作为缺省设置,主要是因为版权原因。然而为了
编译带有SOFTUPDATES选项的内核,还必须手工建立一些符号连接,因为SOFTUPD
ATES使用的源代码并不直接位于正确的编译路径下,而是位于一个非标准路径下
,FreeBSD使用这种方法提醒FreeBSD用户,表示这个部分的版权与BSD版权许可不
同,需要单独处理。

# cd /usr/src/sys/ufs/ffs
# ln -s /usr/src/contrib/sys/softupdates/*.[ch] .
 
 

  当建立了上述连接之后,带有SOFTUPDATES选项的内核才能被正确编译,然而
即使内核支持这个选项,还需要在文件系统中设置softupdate选项,相应文件系
统才能真正使用这个功能,这需要对相应的文件系统使用tunefs命令:

# tunefs -n enable /dev/rda0s1d
 
 

  这个命令只需执行一次就行了,为了避免出现问题,请在系统的单用户模式
下执行这个命令。同样可以使用tune fs -n disable可以屏蔽这个功能。

  此外,对于多处理器的服务器系统,还可以使用SMP选项和APIC_IO选项以支
持多处理器。

  可以在编译内核时打开更多的优化选项,缺省情况的只能提供十分基本的优
化,而且是使用标准版本的gcc 2. 7.2.1来编译系统的。可以安装egcc,并指定
更高的优化选项,如-O6和-mPentium,来获得更高级别的优化和利用Pentium芯片
专用指令。由于egcc仅仅支持ELF格式的执行文件,因此不能用于3.0之前(包括
3 .0-REKLEASE)使用a.out格式内核的系统。

  当使用egcc编译内核时,需要更改执行config后产生的内核目录下的Makefi
le,需要重新定义C C选项为/usr/local/bin/egcc,并更改优化选项-O为-O -mp
entium,但是由于egcc 不支持gcc的编译选项-fformat_externsion,因此还需要
更改Makefile引用的/usr/s rc/share/mk/bsd.kern.mk文件,删除这个文件中这
个编译选项的定义。

  虽然理论上编译器优化不影响编译结果,但是编译器本身也会存在问题,使
得在某些情况下发生错误。尤其对于系统内核,它决定系统的稳定性。因而在编
译时采用过高的优化时就要特别小心,极其偶然的情况下会过高优化的内核会造
成系统崩溃。因此在正式使用一个优化内核之前,应该保留一个原有的、使用普
通优化选项的内核。新内核经过一定时间实际运行的考验,确认没有问题之后才
能放心用于正式使用。


声卡设备

  通常对于SoundBlaster兼容的声卡,可以使用的以下配置选项:

controller     pnp0
controller     snd0
device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
options  SBC_IRQ=5
device   sbxvi0  at isa? drq 5
device   sbmidi0  at isa? port 0x330
device   opl0     at isa? port 0x38a
 
 

  其中pnp0控制器是帮助设置ISA接口的PNP声卡的资源,这主要用于使用BIOS
为ISA PNP设备分配资源的情况下。但如果不是ISA PNP的声卡,就不需要这个设
置,而且如果ISA PNP声卡能设置为非PNP类型,最好将其设置为非PNP类型,ISA
总线下的PNP声卡比较难以设置。

  如果系统中安装有DOS的话,可以启动到DOS下,使用该卡的设置程序或一些
系统硬件分析软件寻找BIOS分配给ISA PNP卡的资源。

  snd0提供最基本的声卡支持代码,sb0为SoundBlaster兼容声卡驱动程序,要
根据声卡的配置参数更改sb0驱动程序的IRQ、DMA以及port数值。改变IRQ值的时
候,不仅应该在sb0的配置行中改变,还应该使用SBC_IRQ配置选项。

  sbvxi0也是SoundBlaster 16所需的代码,大部分声称与SoundBlaster兼容的
声卡并不能做到完全兼容SoundBlaster 16,最多兼容SoundBlaster或SoundBlas
ter Pro,因此就不能支持这个设备,只有真正的SoundBlaster 16才能使它发挥
作用。sbmidi0为So undBlaster声卡的MIDI接口的驱动程序,很多兼容声卡也不
支持这个设备。opl0为SoundBlast er兼容声卡使用的Yamaha OPL-2和OPL-3芯片
使用的驱动。

  使用上面的配置选项,设置正确的资源参数,就可以支持soundblaster兼容
声卡。但是不同声卡对So undblaster的兼容性不同,因此系统检测时就不能检测
到所有的设备,如midi设备或sbvxio0设备,但一般都可以检测到sb0设备,这就
能提供基本的声卡设备支持。

  声卡设备还需要相应设备文件snd0的支持:

# cd /dev
# ./MAKEDEV snd0
 
 

  当使用这些选项重新编译好内核,并启动之后,就可以查看声卡系统是否工
作正常。首先应使用 dmesg命令查看系统是否侦测出了声卡设备,如果没有侦测
出,就可能是硬件参数配置的问题,需要使用 UserConfig更改配置。

# dmesg | grep snb0
snd0: <SoundBlaster 16 4.16> 
snd0: <SoundBlaster 16 4.16> 
snd0: <SoundBlaster MPU-401> 
snd0: <Yamaha OPL3 FM> 
 
 

  通过直接读取设备文件sndstat可以查看出当前声卡的状态,根据系统检测出
的设备不同,sndstat 报告的系统中安装的驱动也不同,至少应该报告一个soun
dBlaster设备:

# cat /dev/sndstat
VoxWare Sound Driver:3.5-alpha15-970902 
(Wed Aug  6 22:58:35 PDT 1997 Amancio [email protected])
Config options: 

Installed drivers: 
Type 1: OPL-2/OPL-3 FM
Type 2: SoundBlaster
Type 6: SoundBlaster16
Type 7: SB16 MIDI

Card config: 
SoundBlaster at 0x220 irq 5 drq 1
SoundBlaster16 at 0xffffffff irq 1 drq 5
SB16 MIDI at 0x330 irq 1
OPL-2/OPL-3 FM at 0x388 irq 1

Audio devices:
0: SoundBlaster 16 4.16

Synth devices:
0: Yamaha OPL-3

Midi devices:
0: SoundBlaster 16 Midi

Timers:
0: System clock

Mixers:
0: SoundBlaster
 
 

  设备文件audio用于声音的输入、输出,如果声卡没有IRQ/DRQ冲突,就能正
常使用这个设备,从而可以通过这个设备进行录音和播放声音文件,可以通过标
准的操作命令来操作这个设备文件。

# dd if=/dev/audio of=out.au bs=1024 count=10
# cat out.au > /dev/audio
 
 

  此后就可以安装相关的声音应用软件了,这些软件通常位于ports的软件包目
录下,例如播放mp3格式的音乐文件的软件mpg123:

# cd /usr/ports/audio/mpg123
# make install
# mpg123 test.mp3
 
 


其他的声卡驱动程序

  除了SoundBlaster声卡之外,FreeBSD还可以支持SoundBlaster AWE 32/ 64
、Gravis Ultrasound、Microsoft Sound System、Roland MPU 401、ProAudioS
pectrum等声卡。支持这些声卡的驱动也在LINT文件中给出了范例,但这些驱动程
序不是单独使用的,需要与上面提到的基本设备sb0相互合作。

  如果计算机上没有声卡,也可以使用个人计算机的喇叭模拟声卡。这样的音
响效果并不令人满意,而且也会消耗大量处理器时间,因此应该尽量使用,模拟
声卡的设备驱动为pca0。

  有些情况下某些soundblaster声卡使用以上的sd0声卡设备选项并不能正常工
作,会遇到IRQ/D RQ的冲突问题。此外还可以使用另一个驱动程序pcm0,这个驱
动程序能支持一些sb0不支持的SoundBlast er兼容声卡。当然pcm0的功能相对弱
一些,不能支持midi功能。设备sb0能和其他几个设备同时发挥作用,而p cm0设
备不能和前面提到的其他设备相互协作,使用pcm0的配置文件应该为: 

controller     pnp0
controller     snd0
device pcm0 at isa? port 0x220 irq 7 drq 1 vector pcmintr
 
 

  有时由于pnp设置资源的问题,使得pcm驱动将声卡识别为第二个设备pcm1,
而报告pcm0与pcm1存在冲突,此时可以简单的建立设备snd1,而忽略pcm0的冲突
信息,此后就一直使用snd1作为声卡设备。


设置ISA PNP声卡

  为了给PNP声卡设置正确的资源值,可以在UserConfig中的命令行方式下搜寻
PNP设备、配置PNP 设备的硬件参数。如同在前面提到的,对PNP设备需要在User
Config的命令行方式下使用pnp命令进行设置。为了保留这个设置,每次启动时都
自动进行设置,就需要将设置写入根文件系统中的一个设置文件中,例如/kerne
l.config,例如对于Soundblaster Vibrx16,执行的pnp命令及写入kernel.conf
ig的内容包括:

pnp 1 0 os enable irq0 5 drq0 0 drq1 1 port0 0x220 port1 0x300 port2 0
x388
pnp 1 1 os enable port0 0x201
quit
 
 

  由于pnp命令就为pnp设备分配了资源,那么内核配置文件中的pcm0使用的参
数设置就要与它相一致。

  当设置完kernel.config中,还需要设置Boot Loader的资源文件/boot/boot
.rc文件,使其能在启动时自动执行设置命令。

load /kernel
load -t userconfig_script /kernel.config
autoboot
 
 

  由于个人计算机上的声卡种类相当多,而FreeBSD支持的声卡类型相对较少,
如果用户计算机使用的声卡与FreeBSD支持的类型都不兼容,也可以考虑使用Fre
eBSD下的商业声卡驱动,商业驱动程序能够支持更多类型的硬件。Opensound是F
reeBSD下的一种商业声卡支持驱动,其主页是http://www.4front.com。


磁盘设置

  FreeBSD提供了对磁盘上的文件系统和交换空间的管理能力,可以供使用者进
行设置。 FreeBSD的使用者可以设置对用户的磁盘空间设置,建立伪磁盘设备等
,以更好的方式管理磁盘和文件。


磁盘空间限制

  FreeBSD提供了强大的系统管理功能,除了可以在/etc/login.conf中使用登
录类别对用户占用的处理器资源进行限制之外,还可以对用户占用的磁盘资源进
行限制。用户磁盘空间的限制是通过quota来完成的。这样就可以控制用户对硬盘
资源的使用,防止硬盘空间被无意或恶意用光而造成系统故障。这对于提供公共
访问的计算机比较重要。quota需要内核支持,在编译内核时必须加入选项:

options  QUOTA
 
 

  接下来是决定对哪个文件系统使用quota来限制用户磁盘资源,要更改/etc/
fstab中该文件系统对应的行,从而更改分区安装时使用的参数,例如要对wd0s1
e进行限制,则更改fstab中的对应行为:

/dev/wd0s1e  /usr ufs  rw,userquota,groupquota 1  1
 
 

  然后更改/etc/rc.conf中的有关quota的设置check_quotas的值为”YES”,
使用新内核重新启动计算机之后,就可以使用下列命令打开用户磁盘设置。

# quotacheck  -av
# repquota  -a
 
 

  这些命令在第一次启动支持quota的系统时使用,用来检查磁盘上的quota状
态。如果一切正常,就可以使用edquota来更改每个用户的磁盘限制了。

# edquota  -u user1
# edquota  -p user1  user2  user3
 
 

  第一个命令就为更改user1的磁盘空间限制,第二行将user1的quota限制复制
给user2和user3。

  日常维护要使用quota命令,例如来检查user1的quota设置可以使用下面的命
令。

# quota -v user1
 
 

  为了避免出现问题,需要每天执行一次quotacheck命令,来检查全部设定是
否正常,因此这个命令可以放入/etc/daily或crontab中,定期执行。

# quotacheck -a
 
 


伪磁盘设备

  交换设备的数量是受内核设置的限制,内核中的NSWAPDEV的值就确定了最多
可使用的交换设备的数量,而NO_SWAPPING选项可以用来屏蔽任何交换设备。

options  NSWAPDEV=20
#options NO_SWAPPING
pseudo-device vn 4
pseudo-device ccd 4
 
 

  当增加了交换设备的数量之后,就能增加交换空间,更好的发挥FreeBSD的虚
拟内存机制。

  FreeBSD支持的vn伪磁盘设备可用于设置交换文件。缺省内核支持的vn伪设备
数量为一个,因此仅可以设置一个交换文件。一般仅需要更改/etc/rc.conf文件
中的swapfile选项为交换文件的名字,系统自动使用vnconfig命令来将文件和虚
拟设备联系在一起。

  为了增加对多个交换文件或多个镜像文件的支持,可以增加内核中伪设备vn
的数量,然后还需要创建相应数量的v n设备。此后就可以使用这多个伪磁盘设备
,并使用vnconfig命令管理多个磁盘镜像文件或交换文件。

  除了伪磁盘设备vn之外,FreeBSD系统还提供一个将多个磁盘文件系统映射为
一个磁盘的伪设备ccd,这样原有的小磁盘分区就能联合起来,形成一个大的文件
系统。ccd要求内核中支持ccd这个伪设备,当内核中支持了cc d伪设备之后,就
可以通过设备文件/dev/ccd0c等来使用这个伪磁盘了(缺省/dev下只有ccd0的设
备文件,可以根据需要建立其他的设备文件)。

  将多个磁盘分区与单一的ccd设备联系起来,还需要使用ccdconfig进行配置
,最基本的ccdconf ig使用例子为:

# ccdcofnig -c ccd1 0 0 /dev/da0s2g /dev/da1s2e
 
 

  这个例子使用-c参数对ccd1设备进行配置,指出ccd1由/dev/da0s2g和/dev/
da1s2e两个分区联合组成。如果这两个磁盘分区都是100M大小,那么新的设备/d
ev/ccd1c就有200M大小。然后就可以在ccd1设备上建立文件系统,并使用这个设
备了。

# newfs /dev/ccd1c
# mount /dev/ccd1c /mnt
 
 

  这是一个对ccd进行配置并使用的最简单的例子,这里没有对ccdconfig命令
中紧跟ccd设备的两个数字参数的意义进行解释。而通过选择这两个参数的不同数
值,能将多个磁盘文件系统采用不同的RAID方式映射为单个设备。

  RAID为冗余磁盘阵列的简称,它意味着物理上使用多个磁盘,而逻辑上却只
有一个磁盘设备。RAID之所以流行,是因为它使用了分段(strip)和冗余的概念
,就是说通过RAID映射的逻辑磁盘上的数据是以分段的方式保存的,例如一个文
件的第一段数据保存在第一个物理磁盘上,第二段数据保存在第二个物理磁盘上
,依次类推。这样在存取这一个文件上的连续数据时,多个磁盘可以同时进行存
取操作,因此增加了磁盘访问速度。而冗余则是物理磁盘的空间大于逻辑磁盘的
大小,通过物理磁盘上多余的磁盘空间,保存冗余信息,这样一旦多个磁盘中的
某一些出现问题,数据能通过冗余数据得到恢复,而不会丢失。

  按照不同的冗余组织方式,RAID被分为不同的级别。最简单的RAID称为RAID
 0,这个级别中没有冗余,多个磁盘只是以分段的方式组织起来,由于使用分段
的方式存取,可以同时访问这两个磁盘,因此存取单个文件的速度会有所改善。
更高一级的RAID级别为RAID 1,它同时使用两个磁盘,每个磁盘都是另一个磁盘
的镜像,这样一旦一个磁盘出现问题,还可以在另一个磁盘找到数据,保证了数
据完整性,但这样设置,有一半的磁盘空间都用做了冗余,浪费了磁盘空间。此
外还有RAID 3级别,至少要使用3个物理磁盘,前两个磁盘中分段存储数据,第三
个磁盘的冗余空间中并不是直接保存原有的数据,而是保存根据前两个磁盘中对
应分段中的数据进行计算得到一个校验和。在前面某一个磁盘被破坏后能通过冗
余磁盘中保存的校验和来恢复原有数据。由于RAID 3中校验和是单独保存在一个
物理磁盘上的,不能充分发挥分段存取的优势,因此RAID 5中将校验和与其他数
据一起分段、分布保存在各个磁盘上,提供了更好冗余效果。因此当前常用的RA
ID级别为RAID 0, RAID 1和RAID 5,可根据不同的需要进行选择使用。

  当在ccdconfig中使用两个0作为参数来设置ccd伪设备时,ccd是以最普通的
直接连接方式来连接多个磁盘的,当数据写满第一个磁盘后,才接着写入第二个
磁盘,这里没有使用任何分段存储策略,因此这是一种不完善的RA ID 0方式。然
而也可以设置ccd以使用分段存储策略,以大来存取速度的优势,这就需要设置分
段存储中的段的大小,即设置交错因子的大小,因此就需要改变第一个数字参数
,例如: 

# umount /mnt
# ccdconfig -u ccd1
# ccdconfig -c ccd1 32 0 /dev/da0s2e /dev/da1s2g
 
 

  上面第一条命令是卸载已安装的ccd文件系统,第二条命令是将原有的ccd1设
备释放出来,使用这两条命令是因为前面操作中已经将ccd1设置过并安装到文件
系统中了。第三条命令为重新设置ccd1的命令,其参数中紧随ccd 1设备的参数设
置为32,这个参数代表交错因子为32个磁盘块,即数据每隔32个磁盘块大小,进
行分段保存到不同的磁盘上,显然前面的参数设置为0表示不进行分段存储。

  由于ccd使用的磁盘设备为预分配的磁盘分区空间,那么这些分区的大小很可
能不一致。当一个磁盘设备用光,而另一个较大的设备还有空余的时候,分段策
略就不再有效了。此时ccd可以有两种选择,一个是尽量利用磁盘空间,必要时不
再进行分段存储,顺序存储数据;另一种选择是不使用这些不能进行分段存储的
空间,以保证分段存储带来的优势。当cc d命令的第二个数字参数设置为0时,将
尽量利用磁盘空间,因此就ccd伪设备就混合使用分段存储和顺序存储。但也可以
将其设置为2,这样ccd只使用分段存储策略,忽略分区不一致的空间。推荐在建
立磁盘文件系统时为ccd划分大致相等的空间,这样就可以充分利用分段带来的好
处,并且不浪费磁盘空间。

  当使用分段存储之后,理论上在两个磁盘上同时分段存储,存取速度可以加
快。这种速度的提高是针对单次数据存取而言的,例如在读取一个大文件时,cc
d可以同时从两个磁盘读取。可以看出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,这种方式又称为磁盘镜像方式,主要用于保护磁盘数据不
会因为偶然损坏而丢失数据,但同时多使用一倍的磁盘空间。此时需要将ccdcon
fig中的第二个数字参数设置为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,但由于版权的原因(
产生校验和的算法被其专利保护),其中的RAID 5代码没有被直接放入FreeBSD系
统中,随同FreeBSD一起提供的vinum只提供RAID 0和RAID 1能力。由于ccd用于R
AID 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中之后,使用ccdco
nfig -C将直接读取这个设置文件,来设置ccd的各个设备,启动时也将自动执行
这个设置任务。

# ccdconfig -g > /etc/ccd.conf
 
 

  由于ccdconfig及vinum会直接和内核中的伪设备交谈,因此使用它们具备一
定的危险性,对它们进行设置时就有造成系统当机的可能性。因此进行设置不要运
行其他进程,最好进入单用户状态进行操作,在设置完毕之后,系统就会正常运
行了。如果在设置时连续出现当机问题,可以尝试改变设置时使用的ccd设备及其
顺序,例如本来使用ccd0 的改变为使用ccd1,再进行重新配置,以避开ccd驱动
中可能存在的问题。


非标准配置

  标准系统内核配置均列在配置文件LINT中,这对于绝大多数情况是足够的。
然而很多新特性并没有包括在这些标准内核配置中,如果要使用这些独立特性,
就需要单独安装这些非标准配置。

  在FreeBSD的开发模式中,可以有任意多个项目组,这些项目组开发的结果要
合并到正式的FreeBSD源码中的时候,就必须被FreeBSD core team认可。与Linu
x的开发方式相比,这种方式较为保守。因此虽然FreeBSD中能够支持很多种特性
,但很多都没有包括在FreeBSD的正式版本中。因此使用者要了解Free BSD具备的
其他新特性,就必须检查标准配置之外的各种配置。今天的非标准配置,可能就
是明天的标准配置。

  在FreeBSD的主页中,介绍了基于FreeBSD的各种商业和自由的开发计划,例
如System V系统防真功能、实现IPv6和IPSec的KAME计划等。

  除了正在开发的功能之外,新特性不能被合并到标准配置中的另一个原因是
版权原因,很多软件有较严格的版权声明,不能直接放到FreeBSD系统中。另一个
原因是FreeBSD的核心小组认为这个特性没有太大的需求,不需要被支持。

未完,待续。。

--
小多子:你知道我们佟家百年不衰的道理么?
        那就是,不要一条路走到黑!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.123]

[关闭][返回]