Linux Mint 18通过SAMBA共享向Windows10复制文件速度极慢求助
这种慢得离谱的传输速度确实让人头疼——毕竟以太网正常情况下怎么也得有几十MB/s的水平,20GB文件跑4小时完全不正常。咱们一步步排查解决:
第一步:检查USB硬盘的挂载参数(fstab)
外接硬盘的挂载配置直接影响读写性能,你先核对下fstab里的挂载行,比如常见的ext4挂载应该优化成这样:
/dev/sdb1 /mnt/usb ext4 defaults,noatime,nodiratime,async 0 2
- 绝对要避免用
sync参数,这个会强制每一次写入都同步到磁盘,速度直接暴跌。默认的defaults已经包含async,但如果手动加了sync一定要删掉。 - 添加
noatime和nodiratime,禁止系统记录文件/目录的访问时间,减少不必要的磁盘写入操作。 - 如果是SSD可以加
discard开启TRIM,机械硬盘这个参数用处不大,但也可以加上试试。
修改完fstab后,重新挂载硬盘生效:
sudo umount /mnt/usb && sudo mount /mnt/usb
第二步:优化Samba配置(smb.conf)
打开Samba主配置文件/etc/samba/smb.conf,在全局配置里添加以下优化参数(如果你的共享段有冲突设置,优先以共享段为准),然后重启服务:
[global] # 优化TCP传输,减少延迟波动 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 # 启用RAW读写,大幅提升大文件传输效率 read raw = yes write raw = yes # 设置最大传输单元,适配大文件传输 max xmit = 65535 # 自动释放闲置连接,减少资源占用 dead time = 15 # 启用内核sendfile机制,减少用户态/内核态切换开销 use sendfile = yes min receivefile size = 16384 # 配置异步IO大小,提升读写吞吐量 aio read size = 16384 aio write size = 16384
重启Samba服务使设置生效:
sudo systemctl restart smbd nmbd
第三步:排查网络硬件与参数
虽然是以太网连接,但硬件或网络参数也可能拖后腿:
- 确认千兆链路:在Linux上用
ethtool eth0(替换成你的实际网卡名,比如enp0s3)查看Speed,确保是1000Mb/s;Windows上右键以太网→属性→配置→高级→链接速度和双工,手动设置为“1.0Gbps全双工”(自动模式偶尔会协商失败)。 - 扩大TCP缓冲区:编辑
/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 16777216sudo sysctl -p让设置立即生效,更大的缓冲区能提升大文件传输的稳定性和速度。
第四步:测试本地硬盘性能
先排除硬盘本身的问题,测试外接硬盘的本地读写速度:
- 写入测试(生成1GB临时文件,避开缓存干扰):
sudo dd if=/dev/zero of=/mnt/usb/test_large_file bs=1G count=1 oflag=direct - 读取测试:
sudo dd if=/mnt/usb/test_large_file of=/dev/null bs=1G count=1 iflag=direct
正常的USB3.0机械硬盘读写速度至少在50MB/s以上,如果本地速度就低于这个,得检查:USB接口是不是2.0(用lsusb看设备是否显示SuperSpeed)、硬盘是否有坏道、换个USB端口试试。
第五步:调整Linux IO调度器
对于外接机械硬盘,默认的CFQ调度器性能一般,换成deadline或noop能提升读写效率:
- 临时生效(重启后失效):
(echo deadline | sudo tee /sys/block/sdb/queue/schedulersdb是你的外接硬盘设备名,用lsblk可以查看) - 永久生效:编辑
/etc/default/grub,找到GRUB_CMDLINE_LINUX_DEFAULT,添加elevator=deadline,比如:
然后更新grub并重启:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=deadline"sudo update-grub sudo reboot
按这些步骤调整完后,再测试复制速度,应该能回到正常的以太网传输水平。
内容的提问来源于stack exchange,提问作者MusikPolice




