web-dev-qa-db-ja.com

切断されたNFS接続によるクライアントシステムのフリーズの防止

NFS 4共有があり、多数のサーバー(NFSサーバー、およびクライアントはすべてDebian 8)間でボリュームを共有しています。最近、ネットワークが停止するとクライアントシステムがフリーズするという問題が発生しました。

NFSオプションは最小限で、rwだけでした(したがって、デフォルトはhardfgなど)。

現在、これらのオプションを試していますが、期待した動作が得られません:rw,soft,bg,retrans=6,timeo=150

(ソフトリスクの一部を相殺するために再トランスを増やしました)

私がテストしている手順は次のとおりです:

  • ブートマシン
  • cdから/mnt/mountpoint
  • NFS接続を確認してください
  • cd /
  • ネットワークを殺すifdown eth0
  • cdから/mnt/mountpoint
  • ls

この時点でコマンドラインがフリーズし、中断できません。しばらくすると、メッセージ 'nfs:server [servername] not not responding、timed 1分に1回(無限に)繰り返されるようです。

操作が失敗し、制御を返すために何をしたい/期待したいのか。

これらの設定のどこが間違っているのか誰かに教えてもらえますか?

(追記:autofsでのマウントも試みましたが、同様の動作が見られました)

ありがとうございました

22
UpTheCreek

intrを押すと、^C、ただし通常はすぐには行われません。

   intr           If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the
                  file  operation  and cause it to return EINTR to the calling program.  The default is to not allow file
                  operations to be interrupted.

あなたが言うように、期待はここで問題です。ネットワークの問題は一時的なものですが、操作の失敗は永続的なものです。そのため、ほとんどの操作はデフォルトで、操作が完了するまで単純にブロックします。

これは標準的な答えですが、現在のmanページを見ると次のように見えます。

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

したがって、NFS3/NFS4の問題ではないように見えますが、intrの機能に関する決定です。したがって、プロセスをKILLできるはずですが、それではあまり実用性がないかもしれません。

オプションが削除された理由についての議論は見つかりませんでした。あなたはプロセスを殺すことができますか?

4
BowlOfRed

私の答えのいくつかは、経験に基づく意見です。私が事実を持っている場合、私はそれらにリンクする(覚えてみてください)。

  1. NFS 4は、バージョン2および3よりも 改善 と見なされます。しかし、改善を必要とする強力なユースケースはまだ見ていません。おそらくそれは、ファイルシステムをSambaを使用するWindowsクライアントとNFSを使用するUnix/Linuxクライアントにエクスポートすることを目的としているためです。
  2. どんな状況でもsoftはお勧めしません。データを エラー時に破棄 にすることができます。代わりにhard,intr
  3. ご指摘のとおり、intrはNFS 4では無効ですが、これはNFSではなく カーネル変更 のようです。
  4. NFSオートマウンター(autofs)は、NFSバージョン2および3の使用例でうまく機能し、必要なときにのみNFSファイルシステムをマウントすることにより、クライアントシステムをサーバー障害から保護します。

NFS 4からNFS 3への移行を検討し、それが特定のユースケースに役立つかどうかを確認することをお勧めします。ダウングレードとは考えないでください。

3
roaima