1.18. 调整 Samba 服务器的性能

了解在某些情况下,哪些设置可以提高 Samba 的性能,以及哪些设置可能会对性能有负面影响。

本节的部分内容来自在 Samba Wiki 中发布的 Performance Tuning 文档。许可证: CC BY 4.0。作者和贡献者:请参阅 Wiki 页面上的历史选项卡。

先决条件

  • Samba 被设置为文件或打印服务器

1.18.1. 设置 SMB 协议版本

每个新的 SMB 版本都添加了特性并提高了协议的性能。最新的 Windows 和 Windows 服务器操作系统始终支持最新的协议版本。如果 Samba 也使用最新的协议版本,那么连接到 Samba 的 Windows 客户端将从性能改进中受益。在 Samba 中,server max protocol的默认值被设置为最新支持的稳定的 SMB 协议版本。

注意

要始终拥有最新的稳定的 SMB 协议版本,请不要设置 server max protocol 参数。如果手动设置参数,则需要修改 SMB 协议的每个新版本的设置,以便启用最新的协议版本。

以下流程解释了如何对 server max protocol 参数使用默认值。

步骤

  1. /etc/samba/smb.conf 文件的 [global] 部分中删除 server max protocol 参数。
  2. 重新载入 Samba 配置

    # smbcontrol all reload-config

1.18.2. 与包含大量文件的目录调整共享

Linux 支持区分大小写的文件名。因此,在搜索或访问文件时,Samba需要针对大小写文件名来扫描目录。您可以将共享配置为只以小写或大写来创建新文件,这可以提高性能。

先决条件

  • Samba 配置为文件服务器

步骤

  1. 将共享上的所有文件重命名为小写。

    注意

    使用这个过程中的设置,名称不为小写的文件将不再显示。

  2. 在共享部分中设置以下参数:

    case sensitive = true
    default case = lower
    preserve case = no
    short preserve case = no

    有关参数的详情,请查看 smb.conf(5) 手册页 中的描述。

  3. 验证/etc/samba/smb.conf文件:

    # testparm
  4. 重新载入 Samba 配置:

    # smbcontrol all reload-config

应用了这些设置后,此共享上所有新创建的文件的名称都使用小写。由于这些设置,Samba 不再需要针对大小写来扫描目录,这样可以提高性能。

1.18.3. 可能会对性能造成负面影响的设置

默认情况下,Red Hat Enterprise Linux 中的内核会根据高网络性能进行了微调。例如,内核对缓冲区大小使用自动轮询机制。在 /etc/samba/smb.conf 文件中设置 socket options 参数会覆盖这些内核设置。因此,设置此参数会在大多数情况下降低 Samba 网络性能。

要使用内核的优化的设置,请从 /etc/samba/smb.conf 中的 [global] 部分删除 socket options 参数。