Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル

ハードコピー版(英語)を購入する

目次


Previous: 4.7 仮想サーバ Chapter 4
ディスク共有
Next: 5. ブラウジングと高度な共有の設定
 

4.8 ロギング設定オプション

Samba が起動しているかどうかを確認したい時がある。Samba が期待する動作を行っていなかったり、全く動作していなかったりする時は特にそうであろう。何がどうなっているかをきちんと確認するための情報を入手するには、Samba のログファイルを確認する必要がある。

Samba のログファイルは簡潔にも詳細にもできる。以下は Samba のログファイルがどのようなものかの一例である:

[1999/07/21 13:23:25, 3] smbd/service.c:close_cnum(514)
  phoenix (192.168.220.101) closed connection to service IPC$
[1999/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40)
  Yielding connection to IPC$
[1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
  Transaction 923 of length 49
[1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
  switch message SMBread (pid 467)
[1999/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336)
  dos_ChDir to /home/samba
[1999/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199)
  read fnum=4207 num=2820 nread=2820
[1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
  Transaction 924 of length 55
[1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
  switch message SMBreadbraw (pid 467)
[1999/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053)
  readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276
[1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
  Transaction 925 of length 55
[1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
  switch message SMBreadbraw (pid 467)	

オプションの多くは Samba のプログラマが利用するためだけのものである。 いくつかの行の意味については、Chapter 9 Samba のトラブルシューティングで、その詳細を解説する。

Samba には、ログ情報がどこにどのように書き込まれるかを制御するためのオプションが6つ存在する。それらはグローバルオプションであり、共有の定義中には記述できない。 以下に今まで述べてきたロギングオプションと、各共有の設定を含むように更新した設定ファイルを示す。

[global]
	netbios name = HYDRA
	server string = Samba %v on (%I)
	workgroup = SIMPLE

	#  Networking configuration options
	hosts allow = 192.168.220. 134.213.233. localhost
	hosts deny = 192.168.220.102
	interfaces = 192.168.220.100/255.255.255.0 \
					134.213.233.110/255.255.255.0
	bind interfaces only = yes

	# Debug logging information
	log level = 2
	log file = /var/log/samba.log.%m
	max log size = 50
	debug timestamp = yes

[data]
	path = /home/samba/data
	browseable = yes
	guest ok = yes
	comment = Data Drive
	volume = Sample-Data-Drive
	writeable = yes

ここでは、ログファイルにデバッグレベル2までの情報を出力するような設定を追加した。これは比較的低いデバッグレベルである。ロギングレベルは1から10まであり、レベル1は殆んど情報を出力しないが、レベル10は大量の低レベルな情報を出力する。レベル2はサーバのディスクを無駄遣いせず、有用なデバッグのための情報を出力する。通常、Samba の開発者でなければ、ログレベルを 3 以上にすることは避けた方がよいであろう。

このファイルは log file オプションの設定にしたがって /var/log ディレクトリに置かれる。

log file = /usr/local/logs/samba.log.%m
行で %mを用いているように、変数を用いることで、個々のユーザやクライアント毎に異なるログファイルを指定することが可能である。

ログメッセージを分割することは、特定のマシンやユーザで問題が発生していることがわかっている場合、ネットワークエラーの切り分けに非常に便利である。

ログファイルには、別の予防措置を行っている。それはログファイルが 50キロバイト以上の大きさにならないように、 max log size オプションで設定していることである。ログファイルがこのサイズを超過する場合、ログの内容は、ファイル名に拡張子.oldを付加した名前のファイルに移される。 もし、 .old ファイルが既に存在していた場合、その内容は上書きされて失われる。また元々のログファイルの内容は消去され、新しいログ情報を書き込めるようになる。 これによって、Samba のログファイルでハードディスクが埋め尽くされることを防いでいる。

見易さの便を考慮し、我々は debug timestamp オプションによって、ログにタイムスタンプの情報を残すようにした。これはデフォルトの動作であり、ログファイルの全てのメッセージにタイプスタンプが付加されるようになる。もしこれが不要な場合は、このオプションを no にする。

4.8.1 syslog の利用

Samba 標準のログファイルに加えて、もしくはその代替としてsyslogを利用したいという場合に備えて、Samba は関連するオプションを用意している。ただし、 syslogを利用するには、まず Samba を configure --with-syslog オプションでビルドしておく必要がある。 Samba の configure とコンパイルについての詳細な情報は、Chapter 2 を参照のこと。

次に、 /etc/syslog.conf ファイルを Samba からのログ情報を受け入れるように設定する必要がある。既に daemon.* のエントリが /etc/syslog.conf ファイルにあれば、以下のように

daemon.*        /var/log/daemon.log

を追加する。これで、システムのデーモンからのログ情報が /var/log/daemon.log ファイルに書き込まれるようになる。 この設定は Samba の情報が書き込まれる場所としても利用される。さらに、設定ファイル中に以下のグローバルオプションを追加する

syslog = 2

これにより、レベル1のログメッセージが syslog と Samba のログファイルの両方に送られる。( syslog 優先度との対応については後述する"syslog."セクションで記述する)。通常の log level オプションを 4 に設定しているものとしよう。レベル 2, 3, 4 のログメッセージは、Samba のログファイルに送られるが、 syslogには送られない。レベル 1 のログメッセージのみが両方に送られる。もし syslog の値が log level の値を越えていた場合、 syslogには何も書き込まれない。

メッセージを syslogのみに送り、標準の Samba ログファイルに送りたくないという場合は、以下のオプションを設定ファイルに記述することができる:

syslog only = yes

この場合、 syslog オプションで指定された番号を越えるログ情報は、 log level オプションの場合と同様に破棄される。

4.8.2 ログ設定オプション

表 4.7 に Samba で設定可能なロギング設定オプションの一覧を示す。


表 4.7: グローバル設定オプション

オプション

パラメータ

機能

デフォルト

範囲

log file

文字列 (フルパス名)

Samba が利用するログファイルの名前と位置を指定する。通常の変数を利用できる。

Samba の Makefile で指定される

グローバル

log level

(debug level)

数値 (0-10)

ログファイルに書き込まれるログ/デバッグメッセージの量を指定する。0は全く出力されない。3が妥当な値であろう。

1

グローバル

max log size

数値 (KB単位のサイズ)

ログファイルの最大のサイズを指定する。ログファイルが指定された容量を超過した場合、ファイルには .bak という拡張子を付加され、以降は新しいログファイルが利用されるようにになる。

5000

グローバル

debug

timestamp (timestamp logs)

真偽値

no の場合、ログファイルにタイムスタンプが付加されない。大量のデバッグ情報が読みやすくなるであろう。

yes

グローバル

syslog

数値 (0-10)

syslogに書き込まれるメッセージのレベルを指定する。 syslog level 以下のレベルのメッセージが syslog に送られる。

1

グローバル

syslog only

真偽値

yes の場合、 syslog のみを利用し、標準の Samba ログファイルには何も書き込まれない。

no

グローバル

4.8.2.1 ログファイル

我々のサーバでは、Samba のログ情報は、Makefile によって Samba 構築時に設定された Samba のホームディレクトリの下の varサブディレクトリ内のテキストファイルに出力される。 log file オプションにより、ログファイル名を別の場所に設定し直すことが可能になる。例えば、Samba のログファイルの名称と位置を /usr/local/logs/samba.log に設定し直すには、以下のように指定する:

[global]
	log file = /usr/local/logs/samba.log

変数を利用することで、特定のユーザやクライアント個別のログファイルを作成することもできる。

デーモンが起動するときに、コマンドラインスイッチで -l を指定することで、デフォルトのログファイルの位置を強制的に変更することも可能である。しかし、これは log file オプションの設定を上書きするものではない。このパラメータが指定されていた場合、 -l (もしくは Samba の Makefile で指定されたデフォルト値)で指定されたファイルには、デーモンが smb.conf ファイルを読み込んで、ログファイルの位置を認識するまでの間のログ情報が書き込まれる。

4.8.2.2 log level

log level オプションは、ロギングされる情報量を指定する。通常これは 0 か 1 に設定される。しかし何らかの問題が発生している場合は、これを 3 に設定する場合があるだろう。 このレベルは、問題を切り分けるのに適した、有用なデバッグ情報を出力する。3 を越えるレベルは、開発者が内部のバグを追跡するために用いることを意図した情報であり、サーバの動作を無視できないほどに遅くする。そのため、このオプションを 3 より大きい値にすることは、避けるべきであろう。

[global]
log file = /usr/local/logs/samba.log.%m
log level = 3

4.8.2.3 max log size

max log size オプションは、Samba が保持するデバッグログファイルの最大サイズをキロバイト単位で指定する。ログファイルがこのサイズを超過すると、現在のログファイルは .old という拡張子を付加された名前に変更され、(既にその名前のファイルがあった場合は消去される) 新しいデバッグログファイルが本来の名前で新規に作成される。例えば以下のように設定する:

[global]
log file = /usr/local/logs/samba.log.%m
max log size = 1000

この設定においてログファイルのサイズが 1 メガバイトを越えた場合、Samba はログファイルの名前を samba.log. machine-name .old に変更し、新しいログファイルを作成する。既に .old の拡張子を持つファイルが存在していた場合、Samba はそれを削除する。デバッグ用のロギングは、(たとえ低いレベルであっても)知らないうちにディスクスペースを喰い尽くす可能性があるため、このオプションを設定ファイルに記述することを強く推奨する。このオプションを設定することで、不用心な管理者が突然ディスク容量のほとんどが 1 つの Samba ログファイルによって占められていることに気づくといった事態を回避する。

4.8.2.4 debug timestamp もしくは timestamp logs

ネットワークのトラブルをデバッグしていて、Samba のログファイルの各行に付加される日付と時間の情報が邪魔だと感じる時には、 timestamp logs もしくは debug timestamp オプション(この二つは同義である)を noにすることで、これらの情報の出力を抑止できる。 通常の Samba のログファイルが以下のような形式で出力されているとする:

12/31/98 12:03:34 hydra (192.168.220.101) connect to server network as user davecb

このオプションの値を no にすることで、以下のように出力が日付と時間を含まないものへと変化する:

hydra (192.168.220.101) connect to server network as user davecb

4.8.2.5 syslog

syslog オプションにより、Samba がログメッセージを UNIX の syslog に送るようになる。送付される情報の種別は、このオプションの引数によって指定される。 log level オプションのように、このオプションは0から10までの数値を指定できる。指定された数字未満のレベルのログ情報が syslog に送られる。また syslog レベルと等しいかそれ以上のレベルで、log level より小さいレベルの情報は、標準の Samba ログファイルに送付される。これを抑止したい場合は、 syslog only オプションを利用すること。例えば以下の場合

[global]
	log level = 3
	syslog = 1

レベル0のログ情報は、標準の Samba のログファイルと syslog に送られ、レベル1, 2, 3は、Samba 標準のログファイルにのみ送られる。3 を越えるレベルの情報はどこにも記録されない。 syslog に送られる全てのメッセージには 表 4.8のように、 syslog プロセスが認識できる優先度(priority level)が付加されることに注意。デフォルトのレベルは1である。


表 4.8: Syslog 優先度の対応表

ログレベル

syslog 優先度

0

LOG_ERR

1

LOG_WARNING

2

LOG_NOTICE

3

LOG_INFO

4 以上

LOG_DEBUG

syslogを利用するときには、Samba をコンパイルするときに configure --with-syslog オプションで実行し、 /etc/syslog.conf を適切に設定する必要がある。(本章で既述した Section 4.8.1, syslog の利用を参照のこと)

4.8.2.6 syslog only

syslog only オプションによって、 Samba が通常のログファイルを利用せずに、syslog のみを利用するようにできる。以下のオプションを Samba 設定ファイルのグローバルセクションに指定することで、このオプションが有効になる:

[global]
	syslog only = yes 

Previous: 4.7 仮想サーバ 目次 Next: 5. ブラウジングと高度な共有の設定
4.7 仮想サーバ 書籍索引 5. ブラウジングと高度な共有の設定

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.