Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/ja/books/handbook/config/_index.adoc
18098 views
---
title: 第11ç«  蚭定ずチュヌニング
part: パヌトIII. システム管理
prev: books/handbook/partiii
next: books/handbook/boot
showBookMenu: true
weight: 15
params:
  path: "/books/handbook/config/"
---

[[config-tuning]]
= 蚭定ずチュヌニング
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 11
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/config/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

== この章では

システムを正しく蚭定するこずは、 メンテナンスや将来の曎新の際の䜜業の量を枛らしたす。 この章では FreeBSD システムの管理䞊の蚭定の偎面に぀いお蚘述したす。

たたこの章では FreeBSD システムのパフォヌマンスを最適化する チュヌニングに぀いおも蚘述したす。

この章を読むず、以䞋のこずがわかりたす。

* [.filename]#rc.conf# の蚭定ず [.filename]#/usr/local/etc/rc.d# スタヌトアップシステムの基瀎
* ネットワヌクデバむスに察する、仮想ホストの蚭定方法
* [.filename]#/etc# ディレクトリ内のさたざたな蚭定ファ むルの䜿い方
* `sysctl` 倉数を䜿った FreeBSD のチュヌニング方法
* ディスク性胜のチュヌニング方法ず、カヌネルの制限の倉曎方法

この章を読む前に、以䞋のこずをやっおおくずよいでしょう。

* Unix ず FreeBSD の基本を理解する (crossref:basics[basics,UNIX の基瀎知識])。
* FreeBSD の゜ヌスコヌドを最新に保぀こず (crossref:cutting-edge[updating-upgrading,FreeBSD のアップデヌトずアップグレヌド]) ず、 カヌネルコンフィグレヌションおよび構築の基瀎 (crossref:kernelconfig[kernelconfig,FreeBSD カヌネルのコンフィグレヌション]) に芪しんでおく。

[[configtuning-core-configuration]]
== 䞭栞ずなる蚭定

システムの蚭定情報が収められおいる䞻な堎所は [.filename]#/etc/rc.conf# です。 このファむルにはシステムの起動時にシステムの蚭定を行なうものをはじめ 倚岐に枡る蚭定情報が含たれおいたす。 そのファむル名はダむレクトに、それが [.filename]#rc*# ファむル矀の蚭定情報であるこずを瀺しおいたす。

管理者は [.filename]#/etc/defaults/rc.conf# のデフォルトの蚭定を [.filename]#rc.conf# ファむルに゚ン トリを䜜るこずで䞊曞きすべきです。 デフォルトのファむルをそのたた [.filename]#/etc# にコピヌするのはやめるべきです。 それはデフォルト倀であっおサンプルではないのです。 システム固有のすべおの倉曎は [.filename]#rc.conf# ファむ ルの䞭でするべきです。

管理の手間を枛らす為、クラスタヌ化されたアプリケヌションには サむト共通の蚭定ずシステム固有の蚭定を分離するさたざたな戊略が適甚できたす。 掚奚されるアプロヌチは、サむト共通の蚭定は [.filename]#/etc/rc.conf.site# のような別のファむルに眮き、 それをシステム固有の蚭定情報しか含たせない [.filename]#/etc/rc.conf# からむンクルヌドするこずです。

[.filename]#rc.conf# は man:sh[1] によっお読み蟌たれおいるので、これはじ぀に簡単に達成できたす。 たずえば、

* rc.conf:
+
[.programlisting]
....
	. rc.conf.site
	hostname="node15.example.com"
	network_interfaces="fxp0 lo0"
	ifconfig_fxp0="inet 10.1.1.1"
....

* rc.conf.site:
+
[.programlisting]
....
	defaultrouter="10.1.1.254"
	saver="daemon"
	blanktime="100"
....

[.filename]#rc.conf.site# ファむルは `rsync` のようなプログラムを䜿うこずで党システ ムに配垃でき、䞀方 [.filename]#rc.conf# ファむルはナニヌクなたたを保぀こずができたす。

システムを man:sysinstall[8] や `make world` 等で 曎新した堎合 [.filename]#rc.conf# ファむルは䞊曞きされたせん。 なのでシステムの蚭定情報が倱われるこずもありたせん。

[[configtuning-appconfig]]
== アプリケヌションの蚭定

基本的に、むンストヌルされたアプリケヌションには独自の文法を持぀ 固有の蚭定ファむルがありたす。 これらのファむルがベヌスシステムから分離されおいるずいうこずは重芁で、 このためパッケヌゞ管理ツヌルによる配眮ず管理が容易になっおいたす。

基本的に、それらのファむルは [.filename]#/usr/local/etc# にむンストヌルされたす。 蚭定ファむルの数が倚数にのがるアプリケヌションに察しおは、 それら甚にサブディレクトリが䜜られたす。

通垞、ports やパッケヌゞがむンストヌルされるず 蚭定ファむルのサンプルが䞀緒にむンストヌルされたす。 倧抵、識別のためにサフィックスずしお ".default" が぀いおいたす。 アプリケヌションのための蚭定ファむルがただ存圚しおいなければ、 .defaults ファむルをコピヌするこずで䜜成できたす。

[.filename]#/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
....

ファむルサむズの差から、[.filename]#srm.conf# ファむルだけが倉曎されおいるこずが分かりたす。 埌に apache を曎新した時にも、 この倉曎されたファむルは䞊曞きされるこずはありたせん。

[[configtuning-starting-services]]
== サヌビスの起動

䞀぀のシステムでサヌビスをいく぀も立ち䞊げおいるずいうこずは よくあるこずです。 それらには独自の立ち䞊げかたがあるこずがあり、 それぞれ有利な点がありたす。

Ports collection やパッケヌゞからむンストヌルした゜フトりェアは しばしば [.filename]#/usr/local/etc/rc.d# にスクリプトを眮き、 システムが起動した時には `start`、システムをシャッ トダりンする時には `stop` を匕数にしお実行したす。 これは `root` で実行すべき、たたは `root` で起動するこずを期埅されおいるシステム ワむドなサヌビスを起動する堎合に掚奚される方法です。 これらのスクリプトはパッケヌゞの䞀郚ずしおむンストヌル時に蚘録され、 パッケヌゞずずもに削陀されたす。

[.filename]#/usr/local/etc/rc.d# にある 䞀般的なスクリプトは次のようなものです。

[.programlisting]
....
#!/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
....

このスクリプトはその目的を果すべく起動時に `start`、 シャットダりン時に `stop` を぀けお呌ばれたす。

サヌビスの䞭には固有のポヌトに接続を受けたずきに man:inetd[8] から起動されるものもありたす。 これはメヌルリヌダサヌバ (POP や IMAP 等) の堎合によくありたす。 これらのサヌビスは [.filename]#/etc/inetd.conf# ファむルを線集するこずで有効化されたす。 このファむルの線集に関する詳现は man:inetd[8] を芋おください。

これらの他に [.filename]#/etc/rc.conf# による有効化/無効化がカバヌされおいないサヌビスもありたす。 それらは䌝統的に [.filename]#/etc/rc.local# にコマンドを曞き蟌むこずで実行されおいたした。 FreeBSD 3.1 にはデフォルトの [.filename]#/etc/rc.local# は存圚しおいたせん。 もし管理者によっお䜜られおいれば、 その時は䞀般的なやりかたずしお認められるべきでしょう。 [.filename]#rc.local# は最埌の堎所ず考えられおいるずいうこずを 知っおおいおください。 サヌビスを起動させるのにもっずいい堎所があるなら そこから始めおください。

[NOTE]
====
[.filename]#/etc/rc.conf# でその他のコマンドを実行__しないでください__。 そのかわり、デヌモンの起動やブヌト時のコマンド実行は [.filename]#/usr/local/etc/rc.d# にスクリプトを配眮しおください。
====

この他にサヌビスの起動に man:cron[8] を利甚するこずもできたす。 このアプロヌチには、man:cron[8] がそのプロセスを `crontab` の所有者暩限で実行したり、サヌビスが 非特暩ナヌザによっお立ち䞊げられ管理されるなどずいった有利な点が いく぀もありたす。

これで man:cron[8] の機胜の利点を埗るこずができたす。 日時の指定を `@reboot` で眮き換えるこずでゞョブは システムがブヌトした盎埌、man:cron[8] が起動した時に実行されたす。

[[configtuning-virtual-hosts]]
== バヌチャルホスト

FreeBSD の非垞にありふれた甚途の䞀぀にバヌチャルサむトの ホスティングがありたす。 これは䞀぀のサヌバがネットワヌクには耇数のサヌバずしお珟れるものです。 これは䞀぀のネットワヌクむンタフェむスに 耇数のアドレスを割圓おるこずで実珟されたす。

ネットワヌクむンタフェむスは "真の" アドレスを 䞀぀ず "別名" のアドレスを耇数持ちたす。これらの別 名は通垞 [.filename]#/etc/rc.conf# に別名の゚ントリを眮くこずで远加されたす。

[.filename]#fxp0# むンタフェむスぞの別名の゚ント リは以䞋の様なものです。

[.programlisting]
....
ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
....

別名の゚ントリは alias0 から始たり昇順に呜名されなければなり たせん (たずえば、_alias1, _alias2 の様になりたす)。蚭定プロセス は最初に欠けた番号のずころで停たりたす。

別名のネットマスクの蚈算は重芁ですが、幞いなこずに非垞に簡単です。 個々のむンタフェむスに぀いおそのネットワヌクのネットマスクを正しく 衚珟しおいるアドレスが必ず䞀぀必芁です。 そのネットワヌクに所属しおいるそれ以倖のアドレスのネットマスクは すべお 1 でなければなりたせん。

䟋ずしお、[.filename]#fxp0# むンタフェむスが二぀ のネットワヌクに接続されおいるものを考えおみたしょう。 䞀぀はネットマスクが 255.255.255.0 である 10.1.1.0 ネットワヌクで、もう䞀぀はネットマスクが 255.255.255.240 である 202.0.75.16 ネットワヌクです。 システムは 10.1.1.0 には 10.1.1.1 ずしお、 202.0.75.20 には 202.0.75.17 ずしお珟れるようにしたす。

以䞋の゚ントリはネットワヌクむンタフェむスを䞊述の環境に正しく 蚭定するものです。

[.programlisting]
....
 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"
 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"
....

[[configtuning-configfiles]]
== 蚭定ファむル

=== [.filename]#/etc# のレむアりト

蚭定のための情報が含たれおいるディレクトリはたくさんありたす。 それぞれ以䞋のものを含んでいたす。

[.informaltable]
[cols="1,1", frame="none"]
|===

|[.filename]#/etc#
|システム党般の蚭定情報。 ここにあるデヌタはシステム 固有のものです。

|[.filename]#/etc/defaults#
|デフォルトのシステム蚭定ファむル。

|[.filename]#/etc/mail#
|远加的な man:sendmail[8] の蚭定、他の MTA の蚭定ファむル。 

|[.filename]#/etc/ppp#
|ナヌザモヌド、およびカヌネルモヌドの ppp プログラムの蚭定。 

|[.filename]#/etc/namedb#
|man:named[8] のデヌタのデフォルトの眮堎。通垞 boot ファむルはここに眮かれ、 [.filename]#/var/db# に眮かれた他のデヌタを 参照するディレクティブを含みたす。

|[.filename]#/usr/local/etc#
|むンストヌルされたアプリケヌションの蚭定ファむル。 アプリケヌションごずのサブディレクトリを含んでいるこずがありたす。

|[.filename]#/usr/local/etc/rc.d#
|むンストヌルされたアプリケヌションの起動/停止スクリプト。

|[.filename]#/var/db#
|氞続的なシステム固有のデヌタファむル。 たずえば man:named[8] のゟヌンファむル、デヌタベヌスファむル等。
|===

=== ホスト名

==== [.filename]#/etc/resolv.conf#

[.filename]#/etc/resolv.conf# は FreeBSD に むンタヌネットドメむンネヌムシステム (DNS) にどのようにアクセスするかを指定したす。

[.filename]#resolv.conf# の最もよくある゚ントリは 

[.informaltable]
[cols="1,1", frame="none"]
|===

|`nameserver`
|リゟルバが問い合わせるべきネヌムサヌバの IP アドレス。 サヌバはリストの順に 3 番目たで問い合わせられたす。

|`search`
|ホスト名をルックアップするための怜玢リスト。 通垞、ロヌカルなホスト名のドメむンから決定されたす。

|`domain`
|ロヌカルドメむン名。
|===

基本的な [.filename]#resolv.conf#。

[.programlisting]
....
search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30
....

[NOTE]
====
`search` オプションず `domain` オプションは、 どちらか䞀方しか䜿っおはいけたせん。
====

DHCP を利甚しおいる堎合、man:dhclient[8] は通垞 [.filename]#resolv.conf# を DHCP サヌバから受け取っ た情報で曞き換えたす。

==== [.filename]#/etc/hosts#

[.filename]#/etc/hosts# は叀きむンタヌネットを 偲ばせるシンプルなテキストのデヌタベヌスです。 これはホスト名ず IP アドレスをマッピングする DNS や NIS ず組み合わせお䜿われたす。 LAN で぀ながれおいるロヌカルな蚈算機は、 名前匕きを簡単にするために man:named[8] サヌバを立ち䞊げるかわりにここに曞くこずができたす。 さらに [.filename]#/etc/hosts# はむンタヌネット名のロヌカルなレコヌドを提䟛し、 よくアクセスされる名前を倖郚に問い合わせるのを枛らすためにも䜿えたす。

[.programlisting]
....
# $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

#
# 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 the following IP networks for
# private nets which will never be connected to the Internet:
#
#       10.0.0.0        -   10.255.255.255
#       172.16.0.0      -   172.31.255.255
#       192.168.0.0     -   192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers.  PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#
....

[.filename]#/etc/hosts# は、 次のようなごく簡単なフォヌマットになっおいたす。

[.programlisting]
....
[むンタヌネットアドレス] [正匏なホスト名] [別名1] [別名2] ...
....

䟋:

[.programlisting]
....
10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2
....

これ以䞊の情報は man:hosts[5] をあたっおください。

=== ログファむルに関係する蚭定

==== [.filename]#syslog.conf#

[.filename]#syslog.conf# は man:syslogd[8] プログラムのための蚭定ファむルです。 これはどのタむプの `syslog` メッセヌゞを察応する ログファむルに蚘録するかを指定したす。

[.programlisting]
....
# $FreeBSD$
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit          /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.*                                      /var/log/security
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
cron.*                                          /var/log/cron
*.err                                           root
*.notice;news.err                               root
*.alert                                         root
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info                                   /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.*                                            /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!startslip
*.*                                             /var/log/slip.log
!ppp
*.*                                             /var/log/ppp.log
....

これ以䞊の情報は man:syslog.conf[5] のマニュアルペヌゞに あたっおください。

==== [.filename]#newsyslog.conf#

[.filename]#newsyslog.conf# は、通垞 man:cron[8] によっお予定を決めお実行されるプログラム man:newsyslog[8] のための蚭定ファむルです。 man:newsyslog[8] は、 ログファむルをい぀保存しお再線するかを決定したす。 [.filename]#logfile# は [.filename]#logfile.0# に移され、[.filename]#logfile.0# は [.filename]#logfile.1# に、そしお以䞋同様に移されたす。 たた、ログファむルを man:gzip[1] 圢匏で保存するこずもできたす。 この堎合ファむル名は [.filename]#logfile.0.gz#, [.filename]#logfile.1.gz# の様になりたす。

[.filename]#newsyslog.conf# はどのログファむルが管理され、どのくらいの期間保存され、 そしおい぀ touch されるかを指定したす。 ログファむルはあるサむズに到達するか、ある決められた時刻・ 日時で再線されあるいは保存されたす。

[.programlisting]
....
# configuration file for newsyslog
# $FreeBSD$
#
# filename          [owner:group]    mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron                           600  3     100  *     Z
/var/log/amd.log                        644  7     100  *     Z
/var/log/kerberos.log                   644  7     100  *     Z
/var/log/lpd-errs                       644  7     100  *     Z
/var/log/maillog                        644  7     *    @T00  Z
/var/log/sendmail.st                    644  10    *    168   B
/var/log/messages                       644  5     100  *     Z
/var/log/all.log                        600  7     *    @T00  Z
/var/log/slip.log                       600  3     100  *     Z
/var/log/ppp.log                        600  3     100  *     Z
/var/log/security                       600  10    100  *     Z
/var/log/wtmp                           644  3     *    @01T05 B
/var/log/daily.log                      640  7     *    @T00  Z
/var/log/weekly.log                     640  5     1    $W6D0 Z
/var/log/monthly.log                    640  12    *    $M1D0 Z
/var/log/console.log                    640  5     100  *     Z
....

これ以䞊の情報は man:newsyslog[8] のマニュアルペヌゞに あたっおください。

=== [.filename]#sysctl.conf#

[.filename]#sysctl.conf# は [.filename]#rc.conf# によく䌌おいたす。 倀は``倉数=倀``のかたちでセットされたす。 指定された倀はシステムがマルチナヌザモヌドに移行した埌でセットされたす。 すべおの倉数がこのモヌドで蚭定可胜ずいうわけではありたせん。

以䞋は [.filename]#sysctl.conf# のサンプルで 臎呜的なシグナルを蚘録しないように、たた Linux プログラムに それらが実際は FreeBSD 䞊で動いおいるこずを知らせる様に チュヌニングしおいたす。

[.programlisting]
....
kern.logsigexit=0       # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=FreeBSD
compat.linux.osrelease=4.3-STABLE
....

[[configtuning-sysctl]]
== sysctl によるチュヌニング

man:sysctl[8] は皌働䞭の FreeBSD システムに倉曎を加えるためのむンタフェむスです。 これには経隓を積んだ管理者甚の TCP/IP スタックや 仮想メモリシステムのパフォヌマンスを劇的に改善する 先進的なオプションが含たれたす。 500 を越えるシステム倉数を man:sysctl[8] で読んだり セットしたりできたす。

本質的には man:sysctl[8] の機胜は次の二぀、 システムの蚭定を読むこずず倉曎するこずです。

読み取り可胜なすべおの倉数を衚瀺するには以䞋のようにしたす。

[source,shell]
....
% sysctl -a
....

個々の倉数、たずえば `kern.maxproc` を読むには以䞋のようにしたす。

[source,shell]
....
% sysctl kern.maxproc
kern.maxproc: 1044
....

特定の倉数をセットするには、盎感的な文法 _倉数_=_倀_ を䜿っおください。

[source,shell]
....
# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
....

sysctl 倉数の倀は通垞、文字列、数倀、真停倀のいずれかです。 (真停倀は yes の堎合には `1` で no の堎合には `0` です)。

[[configtuning-disk]]
== ディスクのチュヌニング

=== sysctl 倉数

==== `vfs.vmiodirenable`

`vfs.vmiodirenable` sysctl 倉数のデフォルトは 1 (オン) で、 0 (オフ) たたは 1 (オン) にセットするこずができたす。 このパラメヌタはディレクトリがシステムによっおどのように キャッシュされるかを制埡したす。 ほずんどのディレクトリは小さく、 ファむルシステムにおいおは単䞀フラグメント (兞型的には 1K) であり、バッファキャッシュではさらに小さくなっおいたす (兞型的には 512 バむト)。 しかしデフォルトモヌドで動䜜しおいる時は、 倧量のメモリを搭茉しおいおも バッファキャッシュは固定数のディレクトリしかキャッシュしたせん。 この sysctl をオンにするず、バッファキャッシュが VM ペヌゞキャッシュを、 ディレクトリをキャッシュするために䜿うこずを可胜にしたす。 これによる利点は、党おのメモリがディレクトリを キャッシュするのに䜿えるようになるずいうこずです。 欠点は、キャッシュに䜿われる最小のメモリの倧きさが 512 バむトではなく 物理ペヌゞサむズ (倧抵は 4K) になるこずです。 倚数のファむルを操䜜するサヌビスを皌動しおいるなら、 垞にこのオプションをオンにするこずを掚奚したす。 そのようなサヌビスには、web キャッシュや倧芏暡なメヌルシステム、 ニュヌズシステムなどが含たれたす。 このオプションは䞀般にメモリを消費したすが、 性胜を削枛するこずはありたせん。 ただし実隓しお調べおみるべきでしょう。

==== `hw.ata.wc`

FreeBSD 4.3 では IDE のラむトキャッシュがオフになりたした。 これは IDE ディスクぞの曞き蟌み垯域幅を枛らしおしたうこずになりたすが、 ハヌドドラむブベンダに起因するデヌタの䞀貫性に関する 重倧な問題のために必芁なこずだず考えられたした。 基本的には、曞き蟌み完了時期に぀いお IDE ドラむブが嘘を぀くずいう問題です。 IDE ラむトキャッシュがオンであるず IDE ハヌドドラむブはデヌタを順番に曞きこたないばかりか、 ディスクの負荷が高い時にはいく぀かのブロックの曞き蟌みを 無期限に延期しおしたいたす。 クラッシュや電源故障の堎合、 ファむルシステムの重倧な砎壊をもたらしたす。 したがっお私たちはデフォルトを安党偎に倉曎したした。 残念ながらこれは倧倉な性胜の䜎䞋をもたらし、 私たちはあきらめおこのリリヌス埌にオンに戻したした。 `hw.ata.wc` sysctl 倉数を芋おデフォルトを チェックしおみるべきです。 もし IDE ラむトキャッシュがオフになっおいたら、 hw.ata.wc カヌネル倉数を 1 に戻すこずでオンに戻すこずができたす。 これはブヌト時にブヌトロヌダから行わなければなりたせん。 カヌネルがブヌトした埌に行っおも効果はありたせん。

詳しくは man:ata[4] を芋おください。

=== ゜フトアップデヌト

man:tunefs[8] プログラムはファむルシステムを现かくチュヌ ニングするのに䜿えたす。このプログラムにはさたざたなオプションがありた すが、ここでは゜フトアップデヌトをオンオフするこずだけを考えた す。以䞋の様にしお切り替えたす。

[source,shell]
....
# tunefs -n enable /filesystem
# tunefs -n disable /filesystem
....

ファむルシステムはマりントされおいるあいだは man:tunefs[8] で倉曎するこずができたせん。 ゜フトアップデヌトを有効にする いい機䌚はシングルナヌザモヌドでどのパヌティションもマりント されおいない時です。

[NOTE]
====
FreeBSD 4.5 からは、ファむルシステム生成時に man:newfs[8] の `-U` オプションを䜿っお ゜フトアップデヌトを有効化できるようになりたした。
====

゜フトアップデヌトはメタデヌタの性胜、 䞻にファむルの䜜成ず削陀の性胜を劇的に改善したす。 すべおのファむルシステムで゜フトアップデヌトを有効にするこずを掚奚したす。 ゜フトアップデヌトに関しお、2 ぀の欠点を意識すべきです。 1 ぀めは、゜フトアップデヌトはクラッシュ時におけるファむルシス テムの䞀貫性は保蚌したすが、 物理ディスクの曎新が䜕秒か (1 分に達するこずもありたす!) 遅れる可胜性が高いこずです。 システムがクラッシュした堎合、より倚くの䜜業結果が消えおしたうかもしれたせん。 2 ぀めは、゜フトアップデヌト はファむルシステムブロックを解攟するのを遅らせるずいうこずです。 あるファむルシステム (たずえばルヌトファむルシステム) が満杯近くの時に それに察する倧芏暡な曎新、たずえば `make installworld` をするず、空き領域を䜿い果たしお曎新が倱敗しおしたうこずがありたす。 

[[configtuning-kernel-limits]]
== Kernel 制限のチュヌニング

=== File/Process 制限

==== `kern.maxfiles`

`kern.maxfiles` はあなたのシステムの芁求に 応じお増枛させるこずができたす。 この倉数はあなたのシステムのファむル蚘述子の最倧倀を瀺したす。 ファむル蚘述子テヌブルが溢れるような時には、システムメッセヌ ゞバッファに頻繁に `file: table is full` ず衚瀺されたす。これは、 `dmesg` コマンドで確認できたす。

ファむル、゜ケット、パむプ (fifo) は それぞれオヌプンされるずファむル蚘述子を䞀぀消費したす。 倧芏暡なプロダクションサヌバでは その時実行されおいるサヌビスの皮類や数に応じおは あっさり数千のファむル蚘述子が必芁になりたす。

`kern.maxfile` のデフォルト倀はカヌネル コンフィグレヌションファむルの `MAXUSERS` オ プションで決たりたす。`kern.maxfiles` は `MAXUSERS` の倀に比䟋しお増加したす。 カスタムカヌネルをコンパむルする際は、このカヌネルコンフィグ レヌションオプションをシステムの利甚法に合わせお蚭定するずよ いでしょう。カヌネルは、この数倀からほずんどの制限の初期倀を 決定したす。業務甚マシンに、実際に 256 名のナヌザが䞀床に接 続するこずはないかもしれたせんが、倧芏暡なりェブサヌバに必芁 なリ゜ヌスは同皋床になりたす。

[NOTE]
====
FreeBSD 4.5 からは、 カヌネルコンフィグレヌションファむルで `MAXUSERS` を `0` に蚭定するず、システムの RAM 容量に基づいお適切なデフォルト倀が遞択されたす。
====

=== ネットワヌクの制限

カヌネルコンフィグレヌションオプション `NMBCLUSTERS` は、そのシステムで利甚可胜なネッ トワヌク mbuf の量を決定したす。通信量の倚いサヌバで MBUF の量 が少ないず、FreeBSD の性胜が䜎䞋しおしたいたす。クラスタ䞀぀は およそ 2kB のメモリに察応しおいるので、1024 だずカヌネルメモリ から玄 2 MB をネットワヌクバッファに予玄するこずになりたす。ど れだけ必芁になるかを、簡単な蚈算で出すこずができたす。同時に最 倧 1000 接続たでゆくりェブサヌバがあり、それぞれの接続によっお 受信バッファ 16kB ず送信バッファ 16kB が消費されるなら、りェ ブサヌバをたかなうのに 32MB 皋床のネットワヌクバッファが必芁 になりたす。経隓的に有甚な倀は、それを 2 倍したものなので、 32MBx2 = 64MB/2K = 32768 になりたす。