为什么从 Windows 访问 Samba 如此缓慢?

swa*_*001 8 windows samba file-sharing file-server

我已经使用 Ubuntu 12.04 Server 设置了一个文件服务器。其目的是为 Windows 用户提供多个网络驱动器,而这些网络驱动器此前已由众多 NAS 驱动器提供服务。

到目前为止,我已经设置了 Samba 并定义了一个共享。我可以从我的测试 Windows 7 和 Windows XP 机器上很好地连接到它。

当我在 Windows 的共享上列出目录时,列出所有文件最多可能需要两分钟——当我使用 Buffalo NAS 时,大约需要 1.5 秒。有时它会超时而根本没有响应。

我使用了默认的 smb.conf 并简单地为我迄今为止设置的共享添加了以下内容:

[engineering]
comment = Ubuntu File Server Share
path = /networkdriveshares/engineering
browsable = yes
guest ok = yes
read only = no
create mask = 0755
Run Code Online (Sandbox Code Playgroud)

我尝试将工作组设置更改为我们的 Windows 计算机使用的活动域名,但没有发现任何区别。

我对默认 smb.conf 所做的唯一其他更改是添加了推荐的套接字设置:

     SO_RCVBUF=8192 SO_SNDBUF=8192
     socket options = TCP_NODELAY
Run Code Online (Sandbox Code Playgroud)

网上有很多关于慢速 Samba 共享的信息,但我已经尝试了我找到的所有解决方案,但没有一个有什么不同。如果没有解决方案,是否有更好的方法来设置供 Windows 客户端使用的文件服务器?

Nel*_*son 1

尝试配置您的服务器而不设置SO_RCVBUFSO_SNDBUF。IE:

socket options = TCP_NODELAY
Run Code Online (Sandbox Code Playgroud)

没有别的。或者完全注释掉socket options并使用 Samba 的默认值。

我在使用 Ubuntu 12.04 和千兆以太网上的 Mac 客户端时也遇到了类似的问题。读取文件的速度大约为 100kbytes/秒,或者说慢了 300 倍。在 Ubuntu 11.10 中,我将两个缓冲区设置为 8192,正如您所尝试的那样。但当我升级到 12.04 时,我发现我必须删除该设置才能使性能恢复到应有的水平(大约 30 兆字节/秒,磁盘速度)。

我看到建议的另一个解决方案是设置max protocol = NT1. 我首先尝试过,但它对我没有帮助。