- PR -

nscdのキャッシュデータの更新について

1
投稿者投稿内容
しるしる
常連さん
会議室デビュー日: 2005/10/25
投稿数: 24
投稿日時: 2006-11-01 17:35
いつもお世話になっております。

NSCDの設定についてご教示いただけませんでしょうか。
現在、Solaris 9 を NIS マスタサーバ、Linux を NIS スレーブサーバとして利用
しております。Linux では自分自身を参照するように NISクライアントの設定を
しております。

NIS マスタサーバでは passwd と group を共有しており、変更時には NIS スレーブ
サーバに反映されるようになっておりますが、NSCD が動作しているため、getent
にて確認してもすぐに反映されず困っております。

1. NIS マスタサーバのgroupファイルに以下のように登録されているとします。
1000::test:userA
2. NIS スレーブサーバでgetent group testとすると、以下のような結果が得られます。
1000::test:userA
3. NIS マスタサーバの該当エントリを以下のように変更します。
1000::test:userA,userB
4. NIS スレーブサーバでgetent group testとしても、変更が反映されず、
しばらくまっていると変更が反映されます。
NSCDを再起動することで即座に反映されるため、NSCDのキャッシュが原因である
と思われますが、この反映されるまでの時間を短くする方法はございます
でしょうか。

この場合、(古いけど)成功したクエリをキャッシュしているため、
positive-time-to-live group 1
の値を上記のように短くしてみましたが、即座に反映されませんでした。また、
keep-hot-count group 0
のようにしてみましたが同様でした。

以上、何か改善方法があればご教示頂けますと幸いです。
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-11-01 17:59
多分(未検証)、/etc/nscd.confの

positive-time-to-live
negative-time-to-live

あたりで制御できると思います。
またはnscdのプロセスに

kill -HUP プロセス番号

のコマンドをcronとかで定期的にリロードすれば良いかも。
自分の場合は素直にリスタートしてますけど...

あと、
paranoia <yes|no>
restart-interval time

でパラノイアモードで再起動する方法もあるかも。
ただここまでやってまでnscdを使う意味があるかどうか...







[ メッセージ編集済み 編集者: 非武装エリア 編集日時 2006-11-01 18:01 ]

[ メッセージ編集済み 編集者: 非武装エリア 編集日時 2006-11-01 18:04 ]
しるしる
常連さん
会議室デビュー日: 2005/10/25
投稿数: 24
投稿日時: 2006-11-02 12:01
非武装エリア様、ご回答を頂き、ありがとうございます。

kill -HUPによる方法を試してみましたが、残念ながらデータの再読み込みは行わない
ようです。また、positive-time-to-liveですが、これは「クエリに成功したデータを
キャッシュする時間」と認識しておりますが、うまく動かないようです。今回試験の
ために 1 としましたが、NIS マスタ側のデータを更新してもなかなか反映されません。

ただし、negative-time-to-liveはうまく動いている感じです。存在しないエントリを
クエリを getent group noexist のようにした上で、noexist というエントリを追加
して再度 getent すると、追加したエントリが出力されました。

以上、そもそも当方の認識が異なっている等ございましたら、ご指摘を頂けますと
幸いです。
1

スキルアップ/キャリアアップ(JOB@IT)