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