解析 samba testparm 消息:rlimit_max:rlimit_max (8192) 低于 Windows 最低限制 (16384)

解析 samba testparm 消息:rlimit_max:rlimit_max (8192) 低于 Windows 最低限制 (16384)

samba 中的 testparm 可能会产生以下消息:

rlimit_max: rlimit_max (8192) below minimum Windows limit (16384) 

似乎可以通过使用此 Linux 命令增加最大打开文件限制来解决此问题ulimit -n 16384

对于典型的 Samba 系统来说,这是一个安全的更改吗?应该将此设置存储在哪里,以便在启动时可供 Samba 服务使用?

答案1

首先,这只是一个警告。在 MS Windows 上,客户端和服务器上的文件处理程序数量必须相同,否则,当例如通过网络复制文件时,您将看到“打开的文件过多”消息。较新的 Samba 版本会自行处理此问题。

但是,如果您想删除此警告,可以通过更改本地文件限制来实现。区分本地(用户或会话)限制和全局(系统范围)限制总是有用的。使用

 cat /proc/sys/fs/file-max

您的全局限制很有可能远远超过您的本地限制。我认为典型的 GNU/Linux 限制在 100k 范围内,我已经很长时间没有研究过了。您可以通过执行以下命令暂时更改此值

sysctl -w fs.file-max=n

或通过编辑/etc/sysctl.conf和运行永久删除sysctl -p

要检查您的本地限制,请切换到相关用户,例如 samba,然后运行

ulimit -Hn
ulimit -Sn

这将向您显示本地会话的硬限制和软限制。硬限制由系统强制执行,而软限制由本地会话强制执行。如有必要,您可以将本地软限制增加到全局硬限制。

您可以通过运行来暂时更改限制

ulimit -Hn n
ulimit -Sn m

或者您可以通过设置用户限制/etc/security/limits.conf,甚至可以指定对哪些用户应用哪些限制,例如

samba soft nofile 16384
samba hard nofile 32768

与往常一样,这两个文件和命令的手册页提供了更多见解。希望对您有所帮助。

答案2

限制取自 /etc/security/limits.conf。

使用 ulimit -n 显示你的实际限制

您可以通过编辑(或添加)行来更改它

*               -       nofile          16385

并重新加载您的环境参数(或者退出shell并再次进入shell)。

答案3

这很简单,但我相信很多人在这个问题上浪费时间(就像我一样,哈哈)。

我们需要配置参数的限制无文件在“/etc/security/limits.conf”或另一个替代文件(如“/etc/security/limits.d/limit-file.conf”)中:

*    -    nofile  16384

问题是这个配置不适用于当前会话,我们需要退出并登录才能应用更改,因此我们对 TESPARM 的测试失败。

如果您不想重新启动会话,请应用此命令并解决此问题:

ulimit -n 16384

希望这可以帮助!

答案4

文件中的拼写错误/etc/samba/smb.conf可能会导致此类错误。我遵循了以下方法关联并重新检查了我的问题,才发现我的问题是一个拼写错误:“yess”而不是“yes”。

相关内容