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

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

まず、この質問は私が抱えている問題ではなく、むしろ「なぜこうなるの」数年間 Windows の世界にいましたが、Linux に戻ろうとしていますが、失ったものがとても多くて... なので、新たに学びたいと思います。 :)

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

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

Caja (および私が知る限り Nautilus) の場合になぜこのようなことが起こるのか、また、これについてさらに詳しく読めるリンクをいくつか教えていただけませんか? CIFS と SMB は基本的に同じものではないでしょうか?

ありがとう!

アップデート:Intel I217-V (rev 04) NIC を使用しています。

答え1

SMB は、LAN ネットワーク経由でファイルを書き込むために IBM によって発明されたサーバー メッセージ ブロックです。CIFS は Common Internet File System です。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 (ミリ秒)) = bps での最大 TCP スループットです。ギガビット ネットワークを使用している場合でも、単一の TCP フローでそこまで高いスループットを得ることはおそらく不可能です。

SMB 構成を最適化します。

[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バイトの読み取りを許可

生データを読む = はい

サーバー署名により処理速度が低下します。

server signing = No

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

write raw = Yes

「strict locking = auto」または「strict locking = no」が許容されます。

strict locking = No

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

「min receivedfile size」はカーネルの recvfile/splice システム コールに直接渡されます。

min receivefile size = 16384

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

use sendfile = Yes

Sambaは非同期ファイルサポートI/Oサポート付きで構築する必要がある

aio read size = 16384
aio write size = 16384

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 

ホスト行に「wins」を追加するだけで問題は解決しました。

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

関連情報