为什么 CIFS 挂载共享比 SMB 更快?

为什么 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。

答案1

SMB 是 IBM 发明的服务器消息块,用于在 LAN 网络上写入文件。CIFS 是通用 Internet 文件系统。CIFS 是 Microsoft 对 SMB 的特定实现。

1.) 如今,SMB 的 CIFS 实现很少使用。大多数现代存储系统不再使用 CIFS,而是使用 SMB 2 或 SMB 3。在 Windows 世界中,自 Windows Vista(2006 年)以来,SMB 2 一直是标准,而 SMB 3 是 Windows 8 和 Windows Server 2012 的一部分。

2.) SMB 2 和 SMB 3 是对 CIFS 实施的大规模升级。

现在要记住的是 (TCP 窗口大小 * 8 位 / RTT 以毫秒为单位) = 最大 TCP 吞吐量 (以 bps 为单位)。虽然您可能拥有千兆网络,但单个 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

允许在一个数据包中读取 65535 个字节

读取原始数据 = 是

服务器签名会使速度变慢。

server signing = No

支持RAW写入。

write raw = Yes

“严格锁定 = 自动”或“严格锁定 = 否”是可以接受的。

strict locking = No

套接字选项 = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072

“min acceptfile 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

相关内容