トップページ » Solaris豆知識 » ネームサービスキャッシュデーモン nscd とは
カテゴリー
My Yahoo!に追加
Sun社提供情報
Solarisパッケージダウンロード
Sunマシンは買うには
blogs.sun.com
お勧めサイト
プライベートリンク

ネームサービスキャッシュデーモン nscd とは

地味なデーモンだがSolarisでネットワークのトラブルシューティングをするときには必ず絡んでくるデーモンだ。
よくわからないがリブートしたら直ったなんてトラブルはもしかするとnscdデーモンに原因があったのかも・・・

ネームサービスキャッシュデーモン(nscd)はDNSやNISなどの一般的なネームサービスのデータベースを保持し、passwd、group、hostsファイルなどの情報をキャッシュする。

これらのファイルが変更されると該当するレコードは10秒以内に更新される。ただ、ネームサービススイッチファイル /etc/nsswitch.confや nscd の構成ファイル /etc/nscd.conf は読み直してくれないため、以下のようにデーモンの再起動が必要だ。

# /etc/init.d/nscd stop
# /etc/init.d/nscd start


/etc/nsswitch.conf や /etc/nscd.conf ファイルは滅多に変更を加えることはないが、ネームサービスの切り替え&動作検証中などのときはnscdデーモン再起動を頭に入れておかないと、設定が正しいにもかかわらずうまくいかない・・・。原因不明だがリブートしたらうまくいった。などということになってしまう。

nscd のオプションは以下のようになっているのでカスタマイズする際は起動スクリプト /etc/rc2.d/S76nscd 内の起動エントリを編集すればよい。

オプション説明
-e cache,yes|nocacheで指定されたキャッシュを有効(yes)または無効(no)にする。
-f configfileconfigfileで指定されたファイルを構成ファイルとしてしようする。デフォルトは/etc/nscd.confファイル。
-g現在の構成と統計情報を表示する。キャッシュヒット率などを確認するときに使用する。
-i cache指定されたキャッシュを無効にする。トラブルシューティング時に原因を切り分けるときなどに利用する。


ちなみに nscd -g の結果は以下の通り。

# nscd -g
nscd configuration:

         0  server debug level
""  is server log file

passwd cache:

       Yes  cache is enabled
     17062  cache hits on positive entries
       135  cache hits on negative entries
        77  cache misses on positive entries
       118  cache misses on negative entries
      98.9% cache hit rate
         0  queries deferred
        13  total entries
       211  suggested size
       600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

group cache:

       Yes  cache is enabled
      3531  cache hits on positive entries
         0  cache hits on negative entries
         9  cache misses on positive entries
         0  cache misses on negative entries
      99.7% cache hit rate
         0  queries deferred
         9  total entries
       211  suggested size
      3600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

hosts cache:

       Yes  cache is enabled
      8137  cache hits on positive entries
         6  cache hits on negative entries
     10777  cache misses on positive entries
       385  cache misses on negative entries
      42.2% cache hit rate
         0  queries deferred
        63  total entries
       211  suggested size
      3600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

ipnodes cache:

       Yes  cache is enabled
       286  cache hits on positive entries
        59  cache hits on negative entries
         2  cache misses on positive entries
       981  cache misses on negative entries
      26.0% cache hit rate
         0  queries deferred
         6  total entries
       211  suggested size
      3600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

exec_attr cache:

       Yes  cache is enabled
         0  cache hits on positive entries
         0  cache hits on negative entries
         0  cache misses on positive entries
         0  cache misses on negative entries
       0.0% cache hit rate
         0  queries deferred
         0  total entries
       211  suggested size
      3600  seconds time to live for positive entries
       300  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

prof_attr cache:

       Yes  cache is enabled
         0  cache hits on positive entries
         0  cache hits on negative entries
         0  cache misses on positive entries
         0  cache misses on negative entries
       0.0% cache hit rate
         0  queries deferred
         0  total entries
       211  suggested size
      3600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh

user_attr cache:

       Yes  cache is enabled
      2570  cache hits on positive entries
        82  cache hits on negative entries
         2  cache misses on positive entries
        29  cache misses on negative entries
      98.8% cache hit rate
         0  queries deferred
         2  total entries
       211  suggested size
      3600  seconds time to live for positive entries
         5  seconds time to live for negative entries
        20  most active entries to be kept valid
       Yes  check /etc/{passwd, group, hosts, inet/ipnodes} file for changes
        No  use possibly stale data rather than waiting for refresh


また、/etc/nscd.confのデフォルト(Solaris9)の状態は以下の通り。
#で始まる行はコメント。エントリ形式は第1フィールドが属性、第2フィールドがキャッシュ名、第3フィールドが属性に対応した値(秒数など)になっている。有効なキャッシュの名前は hosts, passwd, group, ipnodes, exec_attr, prof_attr, user_attr の7つ。ipnodesはIPv6用のホスト情報、〜_attrの3つはRBAC(Role Based Access Control)用の情報になる。

# cat /etc/nscd.conf
#
# Copyright (c) 1994-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident    "@(#)nscd.conf    1.6    01/01/26 SMI"
#

#
# Currently supported cache names: passwd, group, hosts, ipnodes
# exec_attr, prof_attr, user_attr
#

#    logfile            /var/adm/nscd.log
#    enable-cache        hosts        no

    debug-level        0

    positive-time-to-live    passwd        600
    negative-time-to-live    passwd        5
    suggested-size        passwd        211
    keep-hot-count        passwd        20
    old-data-ok        passwd        no
    check-files        passwd        yes

    positive-time-to-live    group        3600
    negative-time-to-live    group        5
    suggested-size        group        211
    keep-hot-count        group        20
    old-data-ok        group        no
    check-files        group        yes

    positive-time-to-live    hosts        3600
    negative-time-to-live    hosts        5
    suggested-size        hosts        211
    keep-hot-count        hosts        20
    old-data-ok        hosts        no
    check-files        hosts        yes

    positive-time-to-live    ipnodes        3600
    negative-time-to-live    ipnodes        5
    suggested-size        ipnodes        211
    keep-hot-count        ipnodes        20
    old-data-ok        ipnodes        no
    check-files        ipnodes        yes

    positive-time-to-live    exec_attr    3600
    negative-time-to-live    exec_attr    300
    suggested-size        exec_attr    211
    keep-hot-count        exec_attr    20
    old-data-ok        exec_attr    no
    check-files        exec_attr    yes

    positive-time-to-live    prof_attr    3600
    negative-time-to-live    prof_attr    5
    suggested-size        prof_attr    211
    keep-hot-count        prof_attr    20
    old-data-ok        prof_attr    no
    check-files        prof_attr    yes

    positive-time-to-live    user_attr    3600
    negative-time-to-live    user_attr    5
    suggested-size        user_attr    211
    keep-hot-count        user_attr    20
    old-data-ok        user_attr    no
    check-files        user_attr    yes


各属性の説明は以下の通り。

属性説明
check-files指定されたキャッシュに関して関連ファイルの変更の有無を10秒ごとにチェックするかどうかを指定する。yesで有効、noで無効になる。
debug-levelデバッグ情報のレベルを0〜10の範囲で設定する。10を指定すると最も詳細な情報が得られる。0以外の値を指定するとnscdはフォアグラウンドで実行される。
enable-cache指定されたキャッシュを有効にするかどうかを指定する。yesで有効、noで無効になる。
keep-hot-count指定されたキャッシュを保持するエントリの数を指定する。
logfile指定されたファイルにデバッグ情報を送る。/dev/ttyなどの特殊デバイスも指定可能。
negative-time-to-live指定されたキャッシュに関して失敗した問い合わせの生存期間を指定する。単位は秒。
positive-time-to-live 指定されたキャッシュに関して成功した問い合わせの生存期間を指定する。単位は秒。
suggested-size内部ハッシュテーブルのサイズを指定する。値には素数を指定する必要がある。デフォルトでは211が適用されている。

Solaris豆知識のその他のリンク

Solaris系技術トレーニング一覧

Solaris10システム管理基本コース
Solaris10ネットワーク・インターネットサーバー管理コース
セキュリティ・パフォーマンス管理・トラブルシューティング等
Sun Cluster、ボリューム管理ソフトウェア
仮想化技術全般
シンクライアント、SunRay、デスクトップソフトウェア
アイデンティティマネージメントサービス
アプリケーションサーバーとWebポータル
サーバー(ハードウェア)メンテナンス
Sun Java CAPS
MySQL