You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu Samba服务器传输速度过慢的优化求助

Ubuntu Samba服务器传输速度过慢的优化求助

看起来你遇到了Samba传输速度不达预期的问题,先理清楚你的现状:用搭载i5-7200U、4GB内存的笔记本运行Ubuntu 22.04.2 LTS做服务器,通过100MB/s网口直连路由器,哪怕换成SSD后读写速度还是只有11MB/s,当前Samba的共享配置是[ServerData]段的基础设置。咱们一步步来排查和优化:

一、先确认网络链路的实际瓶颈

你的网口是100Mbps(注意是Mbps,不是MB/s),理论上的传输上限大概是12.5MB/s(因为1Mbps=0.125MB/s),你现在的11MB/s其实已经很接近这个上限了,但还是要先验证是不是真的跑满了:

  • iperf3测试服务器和客户端之间的真实带宽:
    • 服务器端执行:iperf3 -s
    • 客户端执行:iperf3 -c <你的服务器IP>
      如果测试结果接近100Mbps(也就是12.5MB/s左右),那说明你的网络链路已经到了硬件上限,要提升速度就得升级千兆网口、千兆路由器和Cat5e及以上的网线;如果测试结果远低于100Mbps,那要排查:
      • 是不是用了劣质网线,换一根Cat5e或Cat6的网线试试
      • 路由器的LAN口是不是百兆规格的(很多老路由器LAN口是百兆)
      • 网口协商速率是否正常:服务器端执行ethtool <你的网卡名>(比如ethtool enp0s3),查看Speed字段是不是显示100Mb/s,如果是更低的数值(比如10Mb/s),那要检查网线和接口是否接触不良

二、优化Samba配置

你的当前smb.conf配置比较基础,给你加一些针对性的优化参数,修改后的配置如下:

[ServerData]
path = /home/admins/ServerData/
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
# 新增的优化参数
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
min receivefile size = 16384
use sendfile = yes
aio read size = 16384
aio write size = 16384
read raw = yes
write raw = yes
oplocks = yes
level2 oplocks = yes
deadtime = 15

简单解释下这些参数的作用:

  • socket options:减少网络传输延迟,调整收发缓冲区大小,提升数据传输效率
  • use sendfile:让Samba直接调用系统的sendfile接口,跳过用户态到内核态的数据复制,大幅提升大文件传输速度
  • read raw/write raw:启用原始读写模式,跳过不必要的缓存环节,适合大文件批量传输
  • oplocks/level2 oplocks:启用文件锁优化,减少客户端和服务器之间的无效交互,提升并发和单连接效率
  • deadtime:自动清理闲置超过15分钟的连接,释放服务器资源

修改后记得重启Samba服务生效:sudo systemctl restart smbd

三、系统层面的网络优化

调整系统的网络缓冲区参数,提升大文件传输的稳定性:

  1. 编辑/etc/sysctl.conf文件,添加以下内容:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
  1. 执行sudo sysctl -p让配置立即生效

四、验证本地硬盘性能

虽然你换了SSD,但还是要确认本地IO不是瓶颈:

  • 测试本地写速度:dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
  • 测试本地读速度:dd if=testfile of=/dev/null bs=1G iflag=direct
    如果本地SSD的读写速度能达到几百MB/s,那说明硬盘没问题,问题还是出在网络或Samba配置上;如果本地速度也慢,那要检查SSD的挂载方式、是否开启TRIM等。

五、客户端侧的小调整

如果你是用Windows客户端访问,也可以检查下客户端的SMB设置:

  • 确保客户端使用的是SMB3协议(Samba在Ubuntu 22.04默认支持SMB3,比SMB2更高效)
  • 可以在Windows组策略里调整“SMB 2.0/3.0连接的缓冲区大小”,提升传输效率

备注:内容来源于stack exchange,提问作者Muhammad Bin Khalid

火山引擎 最新活动