個人的な勉強メモ。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!)
|