飞牛NAS SMB传输速度慢:一步步排查优化
排查前的准备:先给速度“拍个照”
在动手优化之前,先明确你的“慢”是哪种慢。建议用以下命令测出基准速度,后续每一步调整后都重新测一次对比:
- 从电脑向NAS写入大文件(如10GB的压缩包)
- 从NAS向电脑读取大文件
- 用万兆网口的小文件读写测试(4K/64K随机读写)
Windows下可以用robocopy配合计时,macOS/Linux用time rsync。例如:
time rsync -av --progress /本地/大文件.bin 用户@NASIP:/共享目录/
记录下写入和读取的MB/s数值。如果写入远低于读取,或两者都低于网卡理论速度的50%,就需要按下面的步骤逐项排查。
第一步:检查物理链路和协商速率
很多人忽略这一点,但“慢”的根源往往在网线或交换机上。
- 登录fnOS后台,进入「网络设置」,查看当前网卡的实际协商速率。如果是
1000Mb/s,说明千兆正常;如果是100Mb/s,请立即更换网线或检查接口接触。 - 用网线直连电脑和NAS(不经过交换机/路由器)再测一次速度。如果直连后速度恢复正常,问题在交换机或路由器端口上。
- 检查网线是否为超五类(Cat5e)以上,八芯全通。劣质网线或四芯网线只能协商到100Mb/s。
第二步:确认SMB协议版本和配置
fnOS默认启用SMB3.0,但某些客户端(如老款电视、旧版Windows)会降级到SMB1.0,速度大打折扣。
在fnOS的「文件共享」-「SMB服务」中,确认:
- 最低协议版本设置为SMB2.0或更高(不要勾选“允许SMB1.0”)
- 开启“异步读写”和“使用SMB3多通道”(如果有此选项)
在Windows端,打开PowerShell运行:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
确保EnableSMB1Protocol为False。如果为True,用管理员权限运行:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
macOS用户可在「访达」-「连接服务器」时按Cmd+Option强制使用SMB3(挂载参数中增加vers=3.0)。
第三步:调整SMB参数(核心优化项)
fnOS基于Linux,SMB服务底层是Samba。通过SSH登录NAS,手动调整Samba配置可以显著提升吞吐量。
sudo -i
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
nano /etc/samba/smb.conf
在[global]段落下增加或修改以下参数:
[global]
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
server min protocol = SMB2
server max protocol = SMB3
max xmit = 65536
use sendfile = yes
aio read size = 1
aio write size = 1
保存后重启SMB服务:
systemctl restart smbd
注意:aio read size = 1表示开启异步IO,对高并发读写(如多用户同时访问)有明显提升。如果你的NAS内存小于2GB,建议将SO_RCVBUF和SO_SNDBUF调整为65536,避免内存压力过大。
第四步:检查磁盘性能瓶颈
SMB速度再快,磁盘跟不上也是白搭。登录fnOS后台,进入「存储管理」-「硬盘信息」,查看磁盘健康状态。如果使用机械硬盘,请注意单盘顺序读写通常在150-200MB/s,但4K随机性能极低。此时SMB速度慢是正常现象,而非配置问题。
执行以下命令测试磁盘裸读写速度:
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 conv=fdatasync
dd if=/tmp/testfile of=/dev/null bs=1M count=1024
如果写入低于80MB/s(机械盘)或低于200MB/s(SATA SSD),请检查:
- 是否启用了ZFS快照或RAID5/6(写惩罚明显)
- 是否开启了磁盘加密(加密会消耗CPU)
- 硬盘剩余空间是否不足(建议保留20%以上)
第五步:关闭不必要的服务和功能
fnOS的某些后台服务会占用带宽或CPU,导致SMB传输变慢。在「应用中心」中检查:
- 关闭或暂停“文件索引服务”(尤其当文件数量超过10万时)
- 关闭“缩略图生成”或将其设置为“仅手动”
- 如果未使用Docker,建议停用Docker服务(
systemctl stop docker)
另外,检查是否开启了“网络审计日志”,该功能会记录每次文件操作的元数据,在高并发时严重影响性能。在「系统设置」-「日志」中关闭或降低日志级别。
第六步:客户端侧优化
如果你的电脑是Windows,请检查以下设置:
- 关闭“远程差分压缩”功能:控制面板 -> 程序 -> 启用或关闭Windows功能,取消勾选“远程差分压缩”。
- 在网卡属性中,将“Energy Efficient Ethernet”和“Green Ethernet”设为禁用。
- 如果是笔记本,确保电源模式为“高性能”,避免网卡降频。
macOS用户可尝试在挂载时指定更优的参数:
mount_smbfs -d 0777 -f 0777 //用户@NASIP/共享目录 /Volumes/挂载点
第七步:进阶排查——检查防火墙和MTU
如果以上步骤都无法解决,用ping -f -l 1472 NASIP测试MTU是否正常。如果提示需要分片,说明MTU设置过大,请将电脑和NAS的MTU都改为1500(默认值)。
同时检查fnOS防火墙(「安全设置」-「防火墙」)是否限制了SMB端口(445)的速率。某些安全软件会误伤SMB流量,建议暂时禁用防火墙后测试。
总结
SMB速度慢往往不是单一原因,而是物理链路、协议配置、磁盘性能、客户端设置的综合叠加。按照本文的顺序,从“协商速率”到“Samba参数”再到“磁盘和客户端”,每一步都实测对比,通常能解决90%以上的性能问题。如果经过全套优化后速度仍不理想,建议检查NAS的CPU占用率(top命令)和内存是否充足,必要时考虑升级硬件(如换用万兆网卡或SSD缓存)。记住:优化是一个持续的过程,每次调整后都要重新测速验证,才能找到最适合你环境的配置组合。
暂无评论,来说两句吧