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-generic
と3.13.0-68-generic
。
3つの質問があります。
- どのバージョンのLinuxでこの問題が発生しましたか?
- この問題は最初にどのように発生しますか? CIFSファイルシステムのサポートは、ノンストップ切断よりもスマートであるべきではありませんか?
- この問題を解決するために、どのインストールオプションが保証されていますか?
私の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=4096
。wsize=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共有への接続がランダムに切断されます。詳細については。
一時停止を参照してください改善されるただし、大容量ファイルをコピーしても消えません。この動作は、たとえば、ファイルがバッファに入り、ファイルシステムがコピーが正常に完了したというサーバーからの通知を待つ機能です。