2007年9月3日月曜日

NFSのエラー「nfs_notify_change」

サーバが不安定な時、LinuxのOSログであるMessageログに出ているNFS関係と思われるエラー。
ネットで探してもいまいち解決策が解らず。取り敢えず関係の有りそうなサイトは幾つか見つけたので、それと併せて調査。
なお問題が起きてる環境は
NFSサーバ:Windows 2003 Server
NFSクライアント:Red Hat Linux ES 3

■問題のエラー
kernel: nfs_notify_change: revalidate failed, error=-116
kernel: nfs: server 123.156.789.012 not responding, still trying
123・・・の部分はIP。

■参考URL
http://search.luky.org/linux-kernel.2003/thrd73.html

■■■調査内容■■■
取り敢えず「error=-116」から調べてみる。エラー番号だからネットで探せば直ぐ解るだろうと思ったら中々出てこない。
仕方ないので上記URLのメーリスをじっくり読む事に。



以下は現在調査中につき鵜呑み禁止、突っ込み&助言大歓迎
何となくだが読んでいるとエラー番号166というのは「ESTALE」という事を意味している?
仮にそうだとしてこの「ESTALE」で検索してみると以下のURLがヒットした。

外部URL:[9454] Re^5: NFSのエラー
>「ユーザ資源の実体が存在するマシン側」のファイルシステムが
>再編成されたことにより、NFSで内部的な混乱(内部矛盾?)が発生

外部URL:nfs(7)
>クライアントがマウントすると各ファイル/ディレクトリ 用の ファイルハンドルをクライアントに発行
>サーバ側でファイルが消去されると、 そのファイルハンドルは失効 (既知のファイルとの関係を断たれる)
>サーバは errnoに [ESTALE] をセットしてエラーを返す。

最初のURLの情報と合わせて考えると「NFSサーバ側で、被mount領域にあるファイルに変更を加えるとエラー」って事なのか?

>サーバがダウンしている、あるいはアクセス不可能な状態にあると
>「not responding: still trying」のエラー

まぁ予想通り。肝心な「アクセス不可能な状態」に言及がない。

> nointr オプションでマウント・・・サーバが回復するまで シグナル受領可能状態で待機。
>softオプションでマウント・・・ クライアントプロセスは無限に待つことはなくエラーを返す

今確認してみたらNFSのmountに「nointr」って指定してる。でもこの部分は直接は関係なさそう。
softオプションを付加した際に返されるエラーて何だろう・・・。
コメントを投稿