FreeBSD構築時のPOINT(拾い書き)

個人的な勉強メモ。FreeBSD ハンドブック Chapter 6.より抜粋+α
(manエントリのある用語はcron(8), hosts(5)のように書いてある)


その1 パーティション:

ATA HDD x 2 設定例

(上からパーティション作成順)

ad0 ad1
/
swap
/var
/usr
2048MB
1024MB
2048MB
All of rest
swap
/home
1024NB
All of rest

おまけコメント:
i) swapは搭載メモリの2倍以上で威力を発揮(最低でも256MB)
ii) /var は1GB以上
iii) /usr/src/sys 含むなら/usrは3GB以上(シングルドライブの時には重要)
iv) 各ドライブのスワップパーティションはほぼ同一に(swapは最大4箇所)


その2 rc.conf:

/etc/rc.confの設定

別ファイルのインクルード例

rc.conf: rc.conf.site:
. rc.conf.site
 hostname="node15.webcompany.com"
 network_interfaces="fxp0 lo0"
 ifconfig_fxp0="inet 10.1.1.1"
defaultrouter="10.1.1.254"
 saver="daemon"
 blanktime="100"

おまけコメント:
システムを sysinstall(8) や 'make world' 等で 更新する場合 rc.conf ファイルは上書きされない


その3 アプリケーションの設定・デーモンの起動:

/usr/local/etcの設定

*.conf.defaultは絶対触らない。消してもダメ

そのアプリがDaemon(デーモン)の場合は/etc/rc.confでの起動厳禁!以下のようにする
i) /usr/local/etc/rc.dへ移動
ii) 当該デーモン(eg.: hoged)のシェルスクリプトhoged.shをhoged.sh.sample等から作成
iii) hoged.shをchmod +xすればFreeBSD起動時に実行

おまけメモ:
固有ポート接続による起動を行う時はinetd(8)を使用
権限アレンジが必要ならばcron(8)使用。リブート起動は日時指定を '@reboot' で置換


その4 各種設定ファイル:

大づかみな設定ファイルの在処

Path Remarks
/etc システム全般の設定情報
/etc/defaults 設定情報のデフォルトファイル
/etc/mail sendmailの追加設定およびMTAの設定ファイル
/etc/ppp ユーザモードおよびカーネルモードのpppデーモンの設定
/etc/namedb bind(8) のデータ置場
/usr/local/etc インストールされたアプリケーションの設定ファイル(下層も含む)
/usr/local/etc/rc.d 上記の起動/停止スクリプト
/var/db システム固有の恒久データ(eg.:dhcpd.leases, pkg and etc.)

HOSTに関する設定

/etc/resolv.confの設定(DNS解決設定)

エントリ
nameserver DNSサーバのIPアドレス(3つまで)
search ホスト名をルックアップする検索リスト
domain ローカルドメイン名

/etc/hostsの設定:

主にLAN内サーバ名前解決の設定を行うが、既知のグローバルIPとdomain名を登録すればローカルDNSとして動作
詳細はhost(5)
書式:[インターネットアドレス] [正式なホスト名] [別名1] [別名2] ...
設定例:210.188.237.186 www.raj-corp.com raj-corp.com

ログに関する設定

/etc/syslog.confの設定(任意)

syslogd(8)のための設定ファイル。
標準的なインストールを行った場合はデフォルトで使用できる。
設定するときの詳細はsyslog.conf(5)

/etc/newsyslog.confの設定(任意)

newsyslogd(8)のための設定ファイル。
/var/log以下のファイルのパーミッションや記録タイミングトリガを設定する
設定するときの詳細はnewsyslog(8)


その5 sysctl.confの設定とsysctlの使い方:

変数=値にて設定。設定値はsysctl -wにてシステムがマルチユーザモードへ移行後にセットされる
設定するときの詳細はsysctl.conf(5), sysctl(8),sysctl(3)

sysctl.confのチューニング例
致命的シグナルを記録対象から除外
# Do not log fatal signal exits (e.g. sig 11)
kern.logsigexit=0
LinuxプログラムにFreeBSD上で動作していることを通知する
compat.linux.osname=FreeBSD
compat.linux.osrelease=4.3-STABLE
システム上で開く“であろう”最大ファイル数の設定
#(value should be multiple of 8192)
kern.maxfiles=65536
いわゆる受信RWINと送信TWINの設定
#(value should be multiple of 8192)
net.inet.tcp.recvspace=131072
net.inet.tcp.sendspace=131072
sysctlのリファレンス
すべての変数を表示 % sysctl -a
eg.: kern.maxprocを読む % sysctl kern.maxproc
kern.maxproc: 1044
個々の変数を設定(eg.: kern.maxfilesを5000に) # sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000

その6 ディスクのチューニング:

全物理メモリをディレクトリキャッシュ可能にする
(デフォルトは0{=off}->1{=on})
ただし最小キャッシュメモリが512Byte->4KByte
となるので確認要
# sysctl vfs.vmiodirenable=1
IDE write cacheの制御(0{=off}/1{=on}) % sysctl hw.ata.wcで確認
# sysctl hw.ata.wc=1
ソフトアップデート
(主にファイル作成・削除パフォーマンス向上)
※:注意書きがhandbookにあるので一読
# shutdown nowでシングルユーザモード
@有効にする場合
# tunefs -n enable /filesystem
@無効にする場合
# tunefs -n disable /filesystem

その7 kernel制限のチューニング:

ファイル記述子テーブルのOverfolw時は、dmesgにfile: table is fullが頻出するため、
あらかじめ大きく取るか、あるいはdmesgの状況をみてkern.maxfilesを調整。
具体的にはsysctlを使用する(その5参照)

kern.maxfilesは基本的にkenel configのmaxuserに従って増減する。
maxuser=client数でkern.maxfiles=セッション数と考えれば分かりやすいか?

おまけメモ(うんちく):
FreeBSD 4.5-STABLE(2002/3/28現在)で、kernel configのコメント記述によれば、maxusers=0
とすると搭載物理メモリを検出して自動的にmaxuser数を増減してくれるようです。う〜ん。すごい!
(makoさんthanks!)


RAJ商会