複数のサーバー(NFSサーバーとすべてのDebian 8クライアント)間でボリュームを共有するNFS 4共有があります。最近、ネットワークの中断によってクライアントシステムがハングするいくつかの問題が発生しました。
NFSオプションは非常に少ないrw
(したがってデフォルト値hard
などfg
)。
今、次のオプションを試していますが、予期した動作は表示されません。
rw,soft,bg,retrans=6,timeo=150
(一部のソフトリスクを相殺するために再送を追加しました)
私がテストしたいプログラムは次のとおりです。
- マシンの電源を入れてください
cd
到着/mnt/mountpoint
- NFS接続が正常であることを確認する
cd /
- インターネットを殺す
ifdown eth0
cd
到着/mnt/mountpoint
ls
この時点では、コマンドラインは停止して中断できません。 一定時間が経過すると、「nfs:サーバー[サーバー名]が応答しません。タイムアウトしました」というメッセージが1分ごとに(無期限)繰り返されることが表示されます。
操作が失敗し、コントロールが返された場合に何が起こるかを望むか、期待してください。
誰かがこの設定にどのような問題があるのか教えてもらえますか?
(PS:autofsでマウントも試みましたが、同様の動作をしました。)
ありがとう
答え1
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
が、おそらくあまり役に立ちません。
このオプションが削除された理由についての議論が見つかりません。プロセスをkill -KILLできますか?
答え2
私の答えのいくつかは経験に基づいたコメントです。事実があれば(記憶しようと)リンクをかけます。
- NFS 4 が考慮されます。改善するバージョン2と3以上。しかし、改善が必要な強力なユースケースを見たことはありません。おそらく私の目標は、Sambaを使用するWindowsクライアントとNFSを使用するUnix / Linuxクライアントにファイルシステムをエクスポートすることです。
soft
私はほとんどすべての状況でそれをお勧めしません。データを受け入れるエラーにより廃棄。代わりにお勧めしますhard,intr
。- あなたが指摘したように、
intr
これはNFS 4では動作しませんが、これはカーネルの変更NFSの代わりに。 - NFS自動マウント(
autofs
)は、NFSバージョン2および3を使用するユースケースに適しており、必要に応じてNFSファイルシステムをマウントしてサーバーエラーからクライアントシステムを保護するのに役立ちます。
私が提供できるアドバイスは、NFS 4からNFS 3への移行を検討し、これが特定のユースケースに役立つことを確認することです。ダウングレードだとは思わないでください。