Testparm in Samba kann diese 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?
Antwort1
Zunächst einmal ist dies nur eine Warnung. Unter MS Windows muss die Anzahl der Dateihandler auf dem Client und dem Server identisch sein, sonst 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 sinnvoll, zwischen lokalen (Benutzer- oder Sitzungs-) Limits und globalen (systemweiten) Limits zu unterscheiden. Überprüfen Sie Ihre globalen Limits mit
cat /proc/sys/fs/file-max
Die Chancen stehen gut, dass Ihre globalen Grenzen Ihre lokalen Grenzen weit überschreiten. Ich denke, die typische GNU/Linux-Grenze liegt im Bereich von 100k, ich habe schon lange nicht mehr nachgeschaut. Sie können diesen Wert vorübergehend ändern, indem Sie
sysctl -w fs.file-max=n
oder dauerhaft durch Bearbeiten /etc/sysctl.conf
und Ausführen sysctl -p
.
Um Ihre lokalen Limits zu prüfen, wechseln Sie zum betreffenden Benutzer, z.B. Samba, und führen Sie aus
ulimit -Hn
ulimit -Sn
Hier werden Ihnen harte und weiche Limits für die lokale Sitzung angezeigt. Das harte Limit wird vom System erzwungen, während das weiche Limit von der lokalen Sitzung erzwungen wird. Sie können das lokale weiche Limit bei Bedarf bis zum globalen harten Limit erhöhen.
Sie können die Grenzen vorübergehend ändern, indem Sie
ulimit -Hn n
ulimit -Sn m
oder Sie können Benutzerlimits festlegen über /etc/security/limits.conf
und Sie können sogar angeben, für welche Benutzer welche Limits gelten, z. B.
samba soft nofile 16384
samba hard nofile 32768
Wie immer bieten die Manpages der beiden Dateien und Befehle viel mehr Einblicke. Ich hoffe, das hilft.
Antwort2
Das Limit wird aus /etc/security/limits.conf übernommen.
Ihr tatsächliches Limit zeigen Sie mit ulimit -n an
Sie können es ändern, indem Sie die Zeile bearbeiten (oder hinzufügen)
* - nofile 16385
und laden Sie Ihre Umgebungsparameter neu (oder beenden Sie die Shell und öffnen Sie die Shell erneut).
Antwort3
Es ist einfach, aber ich glaube, dass so viele Leute mit dieser Frage ihre Zeit verschwenden (wie ich, haha).
Wir müssen die Parametergrenze konfigurierenKEINE DATEIin "/etc/security/limits.conf" oder in einer anderen alternativen Datei wie "/etc/security/limits.d/limit-file.conf" also:
* - nofile 16384
Das Problem besteht darin, dass diese Konfiguration nicht auf die aktuelle Sitzung angewendet wird. Wir müssen die Sitzung beenden und uns erneut anmelden, um die Änderungen anzuwenden. Daher schlagen unsere Tests mit TESPARM immer fehl.
Wenn Sie die Sitzung nicht neu starten möchten, wenden Sie diesen Befehl an und lösen Sie das Problem:
ulimit -n 16384
Hoffe das hilft!
Antwort4
Ein Tippfehler in /etc/samba/smb.conf
der Datei kann diese Art von Fehler erzeugen. Ich bin diesem gefolgtVerknüpfungund habe meins noch einmal überprüft, nur um herauszufinden, dass mein Problem ein Tippfehler war: „yess“ statt „yes“.