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

jca*_*fee 11 linux samba samba4

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

rlimit_max: rlimit_max (8192) below minimum Windows limit (16384) 
Run Code Online (Sandbox Code Playgroud)

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

对于典型的 Samba 盒子来说,这是一个安全的改变吗?这个设置应该存储在哪里,以便它在启动时可供 samba 服务使用?

bja*_*sen 9

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

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

 cat /proc/sys/fs/file-max
Run Code Online (Sandbox Code Playgroud)

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

sysctl -w fs.file-max=n
Run Code Online (Sandbox Code Playgroud)

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

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

ulimit -Hn
ulimit -Sn
Run Code Online (Sandbox Code Playgroud)

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

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

ulimit -Hn n
ulimit -Sn m
Run Code Online (Sandbox Code Playgroud)

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

samba soft nofile 16384
samba hard nofile 32768
Run Code Online (Sandbox Code Playgroud)

与往常一样,文件和命令的手册页提供了更多的洞察力。希望有帮助。

  • Ubuntu samba 不使用 samba 帐户安装,它使用 root。在 /etc/security/limits.conf 中,我使用 * 而不是 samba,并且它在重新启动后工作。 (2认同)

小智 4

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

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

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

*               -       nofile          16385
Run Code Online (Sandbox Code Playgroud)

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