Auflösen der Samba-Testparm-Meldung: rlimit_max: rlimit_max (8192) unter dem Windows-Mindestlimit (16384)

9

testparm in samba kann folgende Meldung erzeugen:

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

Dies scheint behoben zu werden, indem das maximale Limit für geöffnete Dateien mit diesem Linux-Befehl erhöht wird ulimit -n 16384.

Ist dies eine sichere Änderung für die typische Samba-Box? Wo sollte diese Einstellung gespeichert werden, damit sie beim Booten für den Samba-Dienst verfügbar ist?

jcalfee
quelle

Antworten:

8

Zunächst einmal ist dies nur eine Warnung. Unter MS Windows muss die Anzahl der Dateihandler auf dem Client und dem Server identisch sein. Andernfalls wird die Meldung "Zu viele Dateien geöffnet" angezeigt, wenn Sie beispielsweise Dateien über das Netzwerk kopieren. Neuere Samba-Versionen kümmern sich selbst darum.

Wenn Sie diese Warnung jedoch entfernen möchten, können Sie dies tun, indem Sie Ihre lokalen Dateilimits ändern. Es ist immer nützlich, lokale (Benutzer- oder Sitzungs-) Grenzwerte und globale (systemweite) Grenzwerte zu unterscheiden. Überprüfen Sie Ihre globalen Grenzen mit

 cat /proc/sys/fs/file-max

Die Chancen stehen gut, dass Ihre globalen Grenzen Ihre lokalen Grenzen weit überschreiten. Ich denke, das typische GNU / Linux-Limit liegt im Bereich von 100.000, ich habe lange nicht mehr nachgesehen. Sie können diesen Wert vorübergehend ändern, indem Sie ausführen

sysctl -w fs.file-max=n

oder dauerhaft durch Bearbeiten /etc/sysctl.confund Ausführen sysctl -p.

Um Ihre lokalen Grenzwerte zu überprüfen, wechseln Sie zum betreffenden Benutzer, z. B. Samba, und führen Sie ihn aus

ulimit -Hn
ulimit -Sn

Dies zeigt Ihnen harte und weiche Grenzen für die lokale Sitzung. Das harte Limit wird vom System erzwungen, während das weiche Limit von der lokalen Sitzung erzwungen wird. Sie können das lokale Soft-Limit bei Bedarf bis zum globalen Hard-Limit erhöhen.

Sie können die Grenzwerte vorübergehend ändern, indem Sie ausführen

ulimit -Hn n
ulimit -Sn m

oder Sie können Benutzerlimits über /etc/security/limits.conffestlegen und sogar angeben, für welche Benutzer welche Limits gelten, z

samba soft nofile 16384
samba hard nofile 32768

Wie immer bieten die Manpages beider Dateien und Befehle viel mehr Einblick. Ich hoffe, das hilft.

bjanssen
quelle
1
Ubuntu Samba wird nicht mit einem Samba-Konto installiert, sondern verwendet root. In /etc/security/limits.conf habe ich * anstelle von Samba verwendet und es hat nach dem Neustart funktioniert.
Rickfoosusa
3

Das Limit wird aus /etc/security/limits.conf übernommen.

Sie zeigen Ihr tatsächliches Limit mit ulimit -n

Sie können es ändern, indem Sie die Zeile bearbeiten (oder hinzufügen)

*               -       nofile          16385

und laden Sie Ihren env-Parameter neu (oder beenden Sie die Shell und geben Sie die Shell erneut ein).

Loris
quelle
0

Ein Tippfehler in der /etc/samba/smb.confDatei kann diese Art von Fehler erzeugen. Ich folgte diesem Link und überprüfte meinen erneut, um herauszufinden, dass mein Problem ein Tippfehler war: "Ja" anstelle von "Ja".

Chiadi
quelle
0

Es ist einfach, aber ich glaube, dass so viele Leute Zeit mit dieser Frage verschwenden (wie ich, haha).

Wir müssen das Limit des Parameters NOFILE in "/etc/security/limits.conf" oder in einer anderen alternativen Datei wie "/etc/security/limits.d/limit-file.conf" so konfigurieren:

*    -    nofile  16384

Das Problem ist, dass diese Konfiguration nicht für die aktuelle Sitzung gilt. Wir müssen beenden und uns anmelden, um die Änderungen zu übernehmen. Daher schlagen unsere Tests mit TESPARM jemals fehl.

Wenn Sie die Sitzung nicht neu starten möchten, wenden Sie diesen Befehl an und lösen Sie das folgende Problem:

ulimit -n 16384

Hoffe das hilft!

Marcelo Guedes
quelle