壊れたNFS接続がクライアントシステムをフリーズさせないようにする


21

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 responding、timed out」というメッセージが表示され、1分に1回(無期限に)繰り返されるようです。

操作が失敗し、制御を返すために私が望む/期待すること。

これらの設定でどこが間違っているのか教えてください。

(PS:autofsでマウントしようとしましたが、同様の動作が見られました)

ありがとうございました


3
softどんな状況でもお勧めしません。エラー時にデータを破棄できます。代わりに私は提案したいと思いますhard,intr
ロアイマ

2
@roaima-ありがとう。その意見はウェブ上で非常に普及しているようです:)問題は、私たちが抱えている現在の状況hardが私たちにとって同じくらい悪いことです(システムは死に絶え、リブートされるまで死んでいます)。intr人によると、NFS4ではサポートされていません。
UpTheCreek

2
(修正、intrNFS4でサポートされているようですが、2.6.25を
超える

「標準」の回答と異なるのは、現在の作業ディレクトリをマウントポイントに変更していることだと思います。なしで同じ動作をしますが、cd代わりに行いls /mnt/mountpointますか?ls失敗した後、シェルがPWDに依存するファイルシステム操作を試行している可能性があります。(さらに悪いことに、あなたが.あなたを入れるほど愚かだった場合$PATH
トビースパイト

回答:


4

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.

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

これは標準的な答えですが、現在のマニュアルページを見ると、次のように表示されます。

                  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、プロセスを実行できるはずですが、それではあまり有用ではない場合があります。

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


ありがとう、しかし、人間によるとintr、nfs 2/3はサポートしていますが、4はサポートしていません
。– UpTheCreek

@UpTheCreek、なぜそうなるのかわかりません。ここにはdebianシステムはありませんが、利用可能として明示的に言及されています。試しましたか?「intrを使用すると、サーバーからの応答を待っている間にNFS4操作(ハードマウントで)を中断できます。」
BowlOfRed

2
ええ、私はそれを試しましたが、効果はないようでした。男は、最近のカーネルバージョンでは無視されていると言います。
UpTheCreek

システム全体がフリーズするため、プロセスを強制終了することはできません。私の経験ではコマンドは発行できません。(場合によっては、そのような凍結されたマシンにSSHで接続することも可能かもしれません。)
Monica CellioのMountainX

3

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

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

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


1
ありがとう、しかし、私はNFS3に切り替えることができず、たとえあなたが言うように、私がintr最近のカーネルバージョンでサポートされていなくても。
UpTheCreek

2
ああ、NFS4 intr サポートされているように見えます(2/3のみのオプション manの4のみのオプションの両方にリストされていますが、少し混乱します)が、最近のカーネルバージョンではサポートされていません。
UpTheCreek

1
「どんな状況でもソフトはお勧めしません」-本当に?私の場合、imagesディレクトリをマウントするビジーなWebサーバーがあります。画像ホストがダウンし、を使用するhardと、Webサイト全体がダウンします。を使用するsoftと、いくつかの壊れた画像が得られる可能性があります(ただし、キャッシュシステムはこれをほぼ完全に軽減します)。softファイルの破損を許可するリスクは、それほど大したことではありません。サイトがダウンしているよりも、破損したイメージファイルが1つあるほうがずっといいです。
ダグ・マクリーン

1
@DougMcLeanも同様の状況(忙しいWebファーム、画像サーバー、NFS ...)にあったことは、やや特殊なケースだと思います。画像サーバーの信頼性が低かった場合はsoft、許容できる解決策として解決したと思われます。回答を「never」から「almost never」に変更しました。ありがとう!
ロアイマ

1
メモリが正しい場合、このシステムのフリーズの問題はNFS v3にも存在していました。
モニカチェリオのためのMountainX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.