目录
6 配置与调整
6.1 概要
6.2 初步配置
6.3 核心配置
6.4 应用程序配置
6.5 启动服务
6.6 虚拟主机
6.7 配置文件
6.8 用sysctl 调整
6.9 调整磁盘
6.10 调整内核限制
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
6.1 概要
FreeBSD 系统管理配置的情况。这章也会描述一些用来调整FreeBSD 系统性能的参数。
.
.
.
.
.
.
.
.
.
6.2 初步配置
6.2.1 分区设计
6.2.1.1 基础分区
磁道传输数据要比从内磁道传输数据来得快,这一点很重要。记住这点,你可以把比较小的,
FreeBSD 使用手册
II. 系统管理
第6 章配置与调整
正确地配置系统能充分地减少以后维护和升级系统所需的工作量。这章将描述一些
读完这章你将了解到这些:
为什么和如何在你的硬盘上分配空间,规划和放置文件系统和交换分区。
rc.conf 配置文件和/usr/local/etc/rc.d启动系统的基础。
如何在你网络设备上分配虚拟主机。
如何在/etc上使用不同的配置。
如何使用sysctl 变量调节FreeBSD。
如何调整磁盘的性能和修改内核的限制。
在阅读这章之前你应当:
了解UNIX 和FreeBSD 的基础知识(第3 章)。
熟悉如何与FreeBSD 的源文件保持同步。
内核配置和编译的基础(第9 章)。
当使用disklabel 或sysinstall 命令划分你的文件系统时,需要记住硬盘驱动器从外
第1 页FreeBSD 使用手册
经常访问的如root 和swap 放在靠近外磁道的地方。可以把比较大的分区如/usr放在内磁
道上。这样做,按照相同的顺序创建分区:root,swap,/var,/usr。
你的/var分区的大小能反映你机器的使用状况。/var主要用来存放:邮箱,打印spool 和
日志文件。邮箱和日志文件可能会达到一个无法预料的数量,这主要取决于在你的系统上有
多少用户和你的日志文件可以保存多长时间。如果你想要运行一个邮件服务器,一个超过G
数量级的/var分区是必要的。另外, /var/tmp要足够大,以便于能够包含足够的你可能会
添加的packages。
/usr分区保存了支持系统所需的文件和一个叫做/usr/local的用来保存从ports 安装
文件的子目录。如果你不使用ports 也不希望把系统源代码保存在机器上,你可以节省超过
1G 的/usr分区。如果你安装许多ports,我们建议至少要为/usr保留2G 的空间,如果你也
想把系统源代码保存在你的机器上,我们建议为/usr保留3G 的空间。不要低估了这个分区
所需要的空间的大小,它可能会不断增加,让你非常吃惊!当你调整分区的大小时,记住你
的系统可能会不断增加对空间的需求。
注意:一些使用sysinstall 的自动默认分区的用户会发现,一段时间以后他们的root
或/var分区会变得很小。建议尽可能把分区分的大一些。
6.2.1.2 Swap 分区
通常你的交换分区应当是主内存的两倍。例如,如果机器有128 M 的内存,交换分区应
当是256MB。带有比较少内存的机器可以通过增加交换分区来提高机器的性能。我们并不建
议你配置少于256MB 的SWAP 分区,你应当记住将来随着内存的扩充,你的swap 分区也要相
应地扩大。当swap 分区至少是主内存的两倍时,内核的VM 页面调度程序将被用来调节系统
到最佳状态。如果你给你的机器添加更多的内存,配置太少的swap,会导致在VM 页面扫描
代码时变得效率低下。
最后,在配置有很多SCSI(或IDE)磁盘的较大系统中,我们强烈建议你给每一个硬盘
都创建一个SWAP。Swap 分区应当拥有同样的大小。内核可能会处理成任意大小,但内部数
据结构则是最大swap 分区的4 倍。保持swap 分区同样的大小,可以允许内核最佳地调度
swap 空间来访问磁盘。不要为此过分担心,交换空间正是UNIX 系统的长处。
6.2.1.3 为什么要分区?
第2 页FreeBSD 使用手册
为什么要分区?为什么不创建一个大的根分区?我并不介意大小问题!有很多原因证实
这不是一个好主意。首先,每个分区有不同的操作特性,把它们分开可以允许文件系统去自
动调节自己以适应那些特性。例如,根和/usr分区通常是读得比较频繁,写得比较少,而
象/var和/var/tmp则读写都比较频繁。
6.3 核心配置
负责系统配置信息的主要是/etc/rc.conf。这个文件包含了配置文件很宽的范围。在系
统启动时主要被用来配置系统。它的名字直接表明了这点;配置信息一般是rc*这样类型的
文件。一个系统管理员应当在rc.conf 文件中建立一个记录来修改/etc/defaults/rc.conf
的默认配置。默认文件不应当被逐字地拷到/etc。所有系统的任何变化将被记录在rc.conf
文件中。由于rc.conf 可以被sh 命令打开阅读,所以完成这点很简单。例如:
rc.conf:
· rc.conf.site
· hostname=”node15.webcompany.com”
· network_interfaces=”fxp0 lo0”
· ifconfig_fxp0=”inet 10.1.1.1”
rc.conf.site:
· defaultrouter=”10.1.1.254”
· saver=”daemon”
· blanktime=”100”
Rc.conf.site 文件会被分发给每一个使用eg.rsync 的系统,而rc.conf 文件仍保持独立。
通过使用sysinstall 或make world 来升级系统不会覆盖rc.conf 文件,所以系统配置信
息不会被丢失。
第3 页FreeBSD 使用手册
6.4 应用程序配置
典型的,已安装的应用程序有它自己的配置文件,有它自己的语法。这些文件与基本系
统相分离是很重要的,以至于它们能被package 管理工具很好地定位和管理。另外,这些文
件被安装在/usr/local/etc中。一个应用程序有许多配置文件,一个子目录将被创建以支
持它们。
通常,当一个port 或package 被安装时,默认的配置文件也会被安装。这些通常可以
通过.default 后缀来辨别。如果不存在应用程序的配置文件,他们会通过拷贝.default 文
件来创建。例如, 这儿是/usr/local/etc/apache:
· rw-r—r-- 1 root wheel 2184 May 20 1998 access.conf
· rw-r—r-- 1 root wheel 2184 May 20 1998 access.conf.default
· rw-r—r-- 1 root wheel 9555 May 20 1998 httpd.conf
· rw-r—r-- 1 root wheel 9555 May 20 1998 httpd.conf.default
· rw-r—r-- 1 root wheel 12205 May 20 1998 magic
· rw-r—r-- 1 root wheel 12205 May 20 1998 magic.default
· rw-r—r-- 1 root wheel 2700 May 20 1998 mime.types
· rw-r—r-- 1 root wheel 2700 May 20 1998 mime.types.default
· rw-r—r-- 1 root wheel 7980 May 20 1998 srm.conf
· rw-r—r-- 1 root wheel 7933 May 20 1998 srm.conf.default
可以看到只有srm.conf 文件已发生了变化。一个后来的apache 的升级不会修改这个变
化的文件。
6.5 启动服务
对一个系统来说,支持许多服务是很普通的。这些可能是用不同的形式来启动,每一个
都有不同的长处。
第4 页一个port 或packages collection 安装软件通常把一个脚本放在/usr/local/etc/rc.d中,
它可以在系统启动的时候被自动调用,在系统关闭的时候自动停止。这是一种我们推荐使用
的启动服务的方法。这些脚本会作为安装package 的一部分被注册,当package 被删除的时
候它也会被删除。在/usr/local/etc/rc.d中,一个普通的启动脚本是这样的:
#!/bin/sh
echo -n ‘ FooBar'
case “$1” in
start)
/usr/local/bin/foobar
;;
stop)
kill -9 ‘cat /var/run/foobar.pid‘
;;
*)
echo “Usage: ‘basename $0‘ {start|stop}” >&2
exit 64
;;
esac
exit 0
这个脚本随着系统的启动而被呼叫,随着系统的关闭而停止。当一个连接被一个相配的
port 接收到时,一些服务会被inetd 所调用。这个对邮件阅读服务器来说使用比较普遍
(POP,IMAP 等)。这些服务可以通过编辑/etc/inetd.conf文件来启用。可以看看inetd
命令的说明就可以了。
FreeBSD 使用手册
第5 页FreeBSD 使用手册
一些额外的系统功能不太可能会被隐藏在/etc/rc.conf中。这些通常能够使用命令来
调用它们。就象在FreeBSD3.1 中,没有默认的/etc/rc.local。如果它被系统管理员创建,
它将不可能以普通的形式得到尊重。注意rc.local 通常被作为是最后一个访问的记录;如
果有一个比较好的地方能启动一个服务,就是在那儿。
注意:不要把任何命令都放在/etc/rc.conf 中。要启动后台程序,或在启动时运行任
何命令,可以在/usr/local/etc/rc.d 中添加一行脚本。
使用cron 程序来启动系统服务也是可以的。这种方法有很多优势,不仅仅是cron 能运
行这些进程,这些服务也可以被没有root 权限的用户来启动和操作。
这利用了cron 的一个非正式文件的特性;时钟的形式可能会被“@reboot”这种形式所
取代,当系统启动以后,cron 程序被很快执行,这将导致工作暂停运行。
6.6 虚拟主机
FreeBSD 的一个非常普通的应用是虚拟主机功能,一台服务器可以虚拟成多台服务器来
提供网络服务。这只需要分配多个网络地址给一个简单的接口就可以实现。
一个给定的网络接口有一个“real”地址,也会有很多“alias”地址。这些别名通常
被添加到/etc/rc.conf 中。
一个接口“fxp0”的别名记录是这样的:
ifconfig_fxp0_alias0=“inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx”
注意:别名记录必须用alias0 启动,然后按顺序向上处理,如_alias1,_alias2 等。
配置进程将在第一个丢失的数字时停止。别名的子网掩码的计算是很重要的,但幸运的是它
非常简单。对于一个给定的接口,必须有一个正确反映网络的子网掩码的地址。
例如:假设fxp0 接口连接到两个网络,10.1.1.0 的子网掩码是255.255.255.0,而
202.0.75.16 的子网掩码是255.255.255.240。我们要求系统显示从10.1.1.1 到10.1.1.5
和202.0.75.17 到202.0.75.20。
要正确配置适配器可以这样做:
ifconfig_fxp0=”inet 10.1.1.1 netmask 255.255.255.0”
ifconfig_fxp0_alias0=”inet 10.1.1.2 netmask 255.255.255.255”
第6 页FreeBSD 使用手册
ifconfig_fxp0_alias1=”inet 10.1.1.3 netmask 255.255.255.255”
ifconfig_fxp0_alias2=”inet 10.1.1.4 netmask 255.255.255.255”
ifconfig_fxp0_alias3=”inet 10.1.1.5 netmask 255.255.255.255”
ifconfig_fxp0_alias4=”inet 202.0.75.17 netmask 255.255.255.240”
ifconfig_fxp0_alias5=”inet 202.0.75.18 netmask 255.255.255.255”
ifconfig_fxp0_alias6=”inet 202.0.75.19 netmask 255.255.255.255”
ifconfig_fxp0_alias7=”inet 202.0.75.20 netmask 255.255.255.255”
6.7 配置文件
6.7.1 /etc 规划
在配置信息中有很多的目录。这些包括:
一般的系统配置信息:这儿的数据是系统指定的。/etc
系统配置文件的默认版本。/etc/defaults
额外的sendmail 配置,其他MTA 配置文件。/etc/mail
/etc/ppp programs.user-和kernel-ppp 程序的配置。
/etc/namedb Bind 数据的默认定位。通常启动文件是定位在这儿,在/var/db 中
参考其他数据的一个指示。
安装应用程序的配置文件。可以参考每个应用程序的子目录。/usr/local/etc
/usr/local/etc/rc.d 安装应用程序的启动/停止的脚本。
稳定的系统指定的数据文件:bind 区域文件,数据库文件等等。/var/db
6.7.2 主机名
6.7.2.1 /etc/resolv.conf
/etc/resolv.conf 描述了FreeBSD 如何访问internet 的域名系统(DNS)。最普通的
resolv.conf 的记录是:
nameserver 要查询的域名服务器的IP 地址。服务器按照顺序查询。
搜索域名的列表。这通常是由本地的域名决定的。search
本地域名。domain
第7 页FreeBSD 使用手册
一个典型的resolv.conf:
search foobar.com
nameserver 147.11.1.11
nameserver 147.11.100.30
Dhclient 通常会把DHCP 服务器接收到的信息重写resolv.conf。
6.7.2.2 /etc/hosts
/etc/hosts 是一个文本数据库。它是用来联合DNS 和NIS 给IP 地址的影射表提供名字。
本地的电脑通过一个LAN 进行连接,可能会作为一个简单的命名目的而放在这儿,以代替设
置一个名称服务器。另外,/etc/hosts 能被用来提供一个本地internet 名称的记录,减少
搜索普通访问名称的需求。
# $FreeBSD$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain myname.my.domain
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
第8 页FreeBSD 使用手册
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use t