为什么 Windows 中的 Samba 访问这么慢?

为什么 Windows 中的 Samba 访问这么慢?

我使用 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

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

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

     SO_RCVBUF=8192 SO_SNDBUF=8192
     socket options = TCP_NODELAY

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

答案1

尝试在不设置SO_RCVBUF和的情况下配置您的服务器SO_SNDBUF。即:

socket options = TCP_NODELAY

仅此而已。或者完全注释掉socket options并使用 Samba 的默认设置。

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

另一种解决方案我看到建议设置max protocol = NT1。我先尝试了一下,但没有帮助。

相关内容