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
そして、env パラメータを再読み込みします (またはシェルを終了して再度シェルに入ります)。
答え3
単純なことですが、この質問で時間を無駄にしている人がとても多いと思います(私もそうです、笑)。
パラメータの制限を設定する必要がありますファイルがない「/etc/security/limits.conf」または「/etc/security/limits.d/limit-file.conf」のような別の代替ファイルで次のように記述します。
* - nofile 16384
問題は、この構成が現在のセッションに適用されないことです。変更を適用するには終了してログインする必要があり、そのため TESPARM を使用したテストは常に失敗します。
セッションを再起動したくない場合は、次のコマンドを適用してこの問題を解決します。
ulimit -n 16384
お役に立てれば!
答え4
ファイル内のタイプミスにより、/etc/samba/smb.conf
このようなエラーが発生する可能性があります。私はこれに従いましたリンクそして、自分のものを再度調べたところ、問題はタイプミスであることがわかりました。「yes」ではなく「yess」でした。