• 締切済み

NFSデーモン停止時のNFSマウントディレクトリでのファイル操作

現在、Linux環境においてNFSを利用してサーバー間でのファイルのコピーを行っております。 Cでプログラムを組んで、open()~read()~write()~close()を実施しています。 この操作で、ファイル操作でエラーが発生した場合には、エラーを呼び出しもとのアプリケーションに返すようにしているのですが、 NFSデーモン停止していると、ファイル操作が無応答のようになってしまう(NFSでの無期限のリトライが実施されているため)ため、エラーを返すことが出来ず困っています。 (NFSマウントでsoftオプションを付けるとI/Oエラーは帰ってくるのですが、以下の条件にも記述している理由等で、あえてsoftオプションをつけていません。) 以下の条件も含めて、NFSデーモン停止時に、(タイムアウト)エラーをアプリケーションに返したいのですが、いい方法はないでしょうか? よろしくお願いいたします。 <条件> 1.NFSマウントのオプションに"soft"は利用しない。  (エラー発生時に、ファイルが破損する可能性がある(推奨されない)オプションであるため。) 2.NFSマウントディレクトリに対してファイル操作するプログラムは、ライブラリとしてアプリケーションに提供する。 3.NFSでのファイル操作が無応答になった場合は、アプリケーションにエラーをreturnで返したい。 4.NFSでのファイル操作が無応答になった場合に、NFSでのファイル操作プログラムの外部から(シグナル等で)停止させることはしない。 (NFSでのファイル操作プログラムの内部でシグナルを発行して、最終的にreturnで返せるのであればOK) 5.NFSデーモンが停止した場合に、必ずしもNFSデーモンを再度起動させるとは限らない。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

う~ん, 「タイムアウトさせたい」なら「タイマを使う」のが自然な感じがしますけど.... もしくは裏技っぽい感じもするけど NFS を TCP 上で動かすとか.

関連するQ&A