web-dev-qa-db-ja.com

CIFSでマウントされた共有がSMBよりも高速なのはなぜですか?

そもそも、この質問は本当に私が抱えている問題ではなく、むしろ "なぜこんな感じなのか"。私はWindowsの世界で数年後にLinuxに戻りたいと思っていますが、私は多くを失いました...だから、ここで新たに学ぶことにしましょう。 :)

ネットワークでファイルサーバーとして機能するWindows 10 x64マシンがあります。 Ubuntu Mate 16.04から共有にアクセスします。メインファイルブラウザはCajaです。

ここに良い部分があります:ネットワーク上のネットワーク共有を参照してファイルのコピーを開始すると、最大速度は約600 Mbitです。ただし、CIFSを使用してFstabで永続的に共有をマウントすると( https://help.ubuntu.com/community/MountWindowsSharesPermanently )、フルリンク速度(1 Gbit)を利用できます。ターミナル経由でsmbclientを使用するときも、完全なリンク速度を利用できます。

誰もがなぜこれがCaja(および私が伝えることができるものからのNautilus)の場合であるかを私に説明し、おそらくそれについてもっと読むことができるいくつかのリンクを教えてもらえますか? CIFSとSMBは基本的に同じものではありませんか?

ありがとう!

更新:Intel I217-V(rev 04)NICを使用しています。

6
Linus Lundgren

SMBは、LANネットワークを介してファイルを書き込むためにIBMによって発明されたサーバーメッセージブロックです。 CIFSは一般的なインターネットファイルシステムです。 CIFSは、Microsoftによって行われたSMBの特定の実装です。

1.)最近、SMBのCIFS実装はほとんど使用されません。最新のストレージシステムのほとんどはCIFSを使用せず、SMB 2またはSMB 3を使用します。Windowsの世界では、SMB 2がWindows Vistaの標準となっています(2006)およびSMB 3は、Windows 8およびWindows Server 2012の一部です。

2.)SMB 2およびSMB 3は、CIFS実装に対する大規模なアップグレードです。

ここで注意すべき点があります(TCPウィンドウサイズ* 8ビット/ RTT(ミリ秒))=最大TCPスループット(bps)。ギガビットネットワークを使用している場合でも、単一のTCPフローではそれほど高くならない可能性があります。

SMB configを最適化するには:

[global]

参照: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798532

strict allocate = Yes

参照: https://lists.samba.org/archive/samba-technical/2014-July/101304.html

allocation roundup size = 4096

1つのパケットで65535バイトのreadoを許可する

生の読み取り=はい

サーバー署名は物事を遅くします。

server signing = No

RAW書き込みをサポートします。

write raw = Yes

"strict locking = auto" OR "strict locking = no"は受け入れ可能です。

strict locking = No

ソケットオプション= TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF = 131072 SO_SNDBUF = 131072

「最小受信ファイルサイズ」はカーネルrecvfile/splice SYSTEM CALLに直接渡されます。

min receivefile size = 16384

より効率的なsendfile()システムコールを使用する

use sendfile = Yes

非同期ファイルサポートI/OサポートでSambaを構築する

aio read size = 16384
aio write size = 16384

また、私の場合、nsswitch.confの名前検索の順序を変更する必要がありました。この構成には次のような行が含まれていたことがわかります。

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 

ホスト行に「勝ち」を追加するだけで問題が修正されました。

hosts:          files wins mdns4_minimal [NOTFOUND=return] dns mdns4
1
ognjen