解決 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可能會產生此類錯誤。我跟著這個關聯並重新檢查了我的問題,卻發現我的問題是一個拼字錯誤:「是」而不是「是」。

相關內容