Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,它允许Linux/Unix系统上的文件被Windows客户端访问和共享,同时也支持打印服务的共享。但在多人共享一台服务器时,资源占用可能导致Windows访问服务器时出现卡顿现象。
Samba核心功能:
文件共享:允许Linux/Unix系统上的文件被Windows客户端访问和共享。
打印服务:支持打印服务的共享,使得Windows客户端可以使用Linux/Unix系统上的打印机。
优化方案:
针对Samba服务器在多人共享时可能出现的卡顿问题,以下是一些优化措施:
1、修改Samba配置文件:
sudo vim /etc/samba/smb.conf在配置中新增以下内容:
- 启用原始读取和写入模式,提高文件传输效率。
- 设置套接字选项,包括TCP_NODELAY(禁用Nagle算法)和IPTOS_LOWDELAY(设置IP TOS为低延迟),以及接收和发送缓冲区大小。
- 调整接收文件的最小大小、异步I/O读取和写入的大小、最大传输单元的大小等参数。
- 设置最大连接数和死时间,以优化服务器性能。
[global]
#启用原始读取模式,可以提高文件传输效率
read raw = Yes
#启用原始写入模式,可以提高文件传输效率
write raw = Yes
#设置套接字选项,包括TCP_NODELAY(禁用Nagle算法)IPTOS_LOWDELAY(设置IP TOS为低延迟),以及接收和发送缓冲区大小
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
#设置接收文件的最小大小,单位为字节。
min receivefile size = 16384
#启用sendfile系统调用,可以提高文件传输性能。
use sendfile = true
#设置异步I/O读取的大小,单位为字节。
aio read size = 16384
#设置异步I/O写入的大小,单位为字节。
aio write size = 16384
#设置最大传输单元的大小。
max xmit = 65535
#设置最大连接数,0表示无限制
max connections = 0
#设置死时间,0表示无限制
deadtime = 0
2、安装CIFS网络协议:
CIFS/SMB是一个广泛使用的网络文件共享协议,它在不同的操作系统之间提供了良好的兼容性。随着SMB协议的发展,后来的版本在性能上进行了优化,以支持更高效的文件传输和更大的文件处理能力。这些改进包括更快的传输速度、更低的延迟以及更好的错误处理机制,从而在使用CIFS/SMB进行文件共享时提供了更好的性能。
安装命令:sudo apt install cifs-utils -y
3、重启smaba:
service smbd restart
PS:
我使用的环境是ubuntu,其他环境请自行查找对应命令替换执行
测试完毕后samba性能提高、无卡顿,亲测可用。