CIFSへの書き込みが一度に数分間中断されるのを防ぐ方法は?

CIFSへの書き込みが一度に数分間中断されるのを防ぐ方法は?

NetAppファイラーからCIFSファイルシステムをマウントし、ここに数ギガバイトのファイルをコピーすると、コピープロセスが数分間中断されることがよくあります。カーネルは、次のようにシステムログにメッセージを書き込みます。

Nov 15 14:03:15 myclient kernel: [173570.048387] CIFS VFS: sends on sock ffff88003a2d4000 stuck for 15 seconds
Nov 15 14:03:15 myclient kernel: [173570.049115] CIFS VFS: Error -11 sending data on socket to server
Nov 15 19:01:22 myclient kernel: [191466.594088] CIFS VFS: Server myfileserver has not responded in 120 seconds. Reconnecting...

実際に書き込みを続ける前に、最後のメッセージが繰り返されることがあります。プロセスが中断されると終了できません。システムを再起動しようとしても中断されます。

サーバーはNetAppですが、まだ仕様がわかりません。クライアントは2つのUbuntu 14.04 LTSシステムで、そのうちの1つは仮想です(両方のシステムで発生します)。そのカーネルはバージョン3.5.0-54-generic3.13.0-68-generic

3つの質問があります。

  1. どのバージョンのLinuxでこの問題が発生しましたか?
  2. この問題は最初にどのように発生しますか? CIFSファイルシステムのサポートは、ノンストップ切断よりもスマートであるべきではありませんか?
  3. この問題を解決するために、どのインストールオプションが保証されていますか?

私のfstabエントリは次のとおりです(匿名)。

//myfileserver/path/to/mydirectory /mnt/mydirectory cifs credentials=mycredentialsfile,rw,sec=ntlmv2,forceuid,forcegid,file_mode=0644,dir_mode=0755,noserverino,nounix,user,noauto 0 0

追加してもcache=none問題は解決しません。追加directioも機能しません。man mount.cifsサポートされているオプションだと主張しますが、そうではありません。何するトリックを実行することは、以下を追加することですwsize=4096wsize=8192これまで私のテストでは、これらのオプションは輻輳していないことがわかりました。 (使用時にも一時wsize=16384停止現象が発生します。)

試行錯誤を経験するよりも何が起こっているのかを理解し、100%確実に問題を解決したいと思います。なぜこれが起こるのか、何をすべきかを教えてください。

(Ask Ubuntu、Unix&Linux、およびServerFaultにこの問題のように見えるいくつかの質問が投稿されましたが、ほとんどはそうではありません。読むファイルまたはファイルシステムで怠惰、私の場合、これは起こりませんが、一時停止は次の場合にのみ発生します。書く文書)

答え1

デフォルトでは、cifsインストールはプロトコル1.0を使用します。このプロトコルは古いだけでなく非効率的であり、多くの理由でスリープモードからうまく回復しません。

サーバーの技術に応じて、少なくともまたはvers=2.1使用できますvers=3.0

どのバージョンのSMBプロトコルがサポートされているかを確認するには、マニュアルまたはベンダーを確認するか、少なくとも3.0コマンド出力を使用して参照して、どのバージョンがネゴシエートされてmountいるかを確認することをお勧めします。

最新のCIFSバージョンのプロトコルに変更すると、遅延問題の一部または全部が解決され、より効率的な転送速度を提供できます。

関連質問を参考にしてくださいCIFSは、Windows共有への接続がランダムに切断されます。詳細については。

一時停止を参照してください改善されるただし、大容量ファイルをコピーしても消えません。この動作は、たとえば、ファイルがバッファに入り、ファイルシステムがコピーが正常に完了したというサーバーからの通知を待つ機能です。

関連情報