• 締切済み

dfコマンドが返ってこない

nfsを使って別サーバーの領域をマウントしています。 この場合、nfsのネットワークマウントが上手く行かなくなった場合などに、マウントが切れてしまう場合があります。 この状態の時に、dfコマンドで各領域の空き容量を確認しようとしたら、コマンドが返ってきません。 もちろん、nfsのマウント状態が正常であれば、すぐに結果が返ってきます。コマンドが返ってこない場合にはCtrl+cで抜けて、強制的にアンマウントしてやれば、dfは返ってくるようになります。 このdfコマンドでマウントが正常にできているかを、定期的にプログラムで確認しようとしているのですが、この問題があり上手くできません。 dfコマンドが一定時間返ってこなければ強制的に抜けるとか、タイムアウト時間を指定できるなどの方法はあるのでしょうか? また、他にnfsのマウントが正常に行われているかプログラムから確認するのにいい方法がありますでしょうか? 例えば、マウント先にあるファイルを開けるかどうかで判断するとか・・・ 現状、同じ状態を作り出すことができないので、マウント先のファイルが開けるかで判断するというのが適切かはわかりません。 なお、プログラムはC言語で製作しております。 よろしくお願いします。

みんなの回答

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.2

nfsマウントが途絶している時にエラーを返すのでしたら、 nfsファイルシステムマウント時のオプションに"soft"を 指定してみてはどうでしょうか。

Antares
質問者

お礼

アドバイスありがとうございます。 soft、hardというようなオプションがあることを知りませんでした。 しかし、softというオプションを調べてみると・・・ サーバで障害が発生すると、マウントされたファイルシステムにアクセスしているクライアントプロセスにNFSクライアントがエラーを通知します。しかし、このエラーに対処できるプログラムはほとんどありませんから指定しても意味がありません。 という、説明が・・・いろいろ見た感じ、IOエラーが返ってくるとのことでしたので、ファイルを開こうとしたら、プログラムの動きはファイルがなかった時と同じ動作になるんだろうなと思いますが、上の説明の意味がよくわからず・・・ ただ、使えそうなオプションであることはわかりました。 このネットワークの傷害をローカルのサーバーでLANケーブルを抜くなどして再現してみようと思います。 でも、できたら、現状のhardオプションのまま検知できたらいいのですが・・・ 現在稼働中ですので、オプションを変えて再マウントはできないんです。

noname#98978
noname#98978
回答No.1

dfを実行する前にマウントチェックするようなスクリプトを組めばいいでしょう。

Antares
質問者

お礼

スクリプトを組むのはいいのですが、どのようにすれば、マウント中に切断されてマウントしっぱなしになっている状態のチェックができるのでしょうか? できましたら、具体的な例を教えていただけると助かります。

関連するQ&A