Der Zweck dieses Beitrags besteht darin, zu erklären, wie Kernelparameter auf Red Hat (RHEL/CentOS)- und Oracle Linux (OL)-Systemen mit dem Dienstprogramm sysctl konfiguriert werden. Das Dienstprogramm sysctl (/sbin/sysctl) ermöglicht (privilegierten) Benutzern, Kernelparameter während der Laufzeit abzufragen und zu ändern. Das Dienstprogramm ist den meisten Linux-Distributionen gemeinsam, es können jedoch geringfügige Unterschiede zwischen den Distributionen bestehen, z. RHEL/OL und SuSE. Parameter, die angezeigt/geändert werden können, sind diejenigen, die über das procfs-Dateisystem /proc/sys bereitgestellt werden. Die Punkt(.)-Notation wird beim Setzen in einer Konfigurationsdatei verwendet.
Abfrage eines bestimmten Kernel-Parameters
Um einen benannten Kernel-Parameterwert abzufragen, führen Sie das Dienstprogramm sysctl entweder mit dem Befehl „-n ‘ oder gar keine Argumente, z. B.:
# sysctl kernel.shmmax kernel.shmmax = 68719476736
# sysctl -n kernel.shmmax 68719476736
Im obigen Beispiel bezieht sich der Parameter kernel.shmmax auf /proc/sys/kernel/shmmax, z. B.:
# cat /proc/sys/kernel/shmmax 68719476736
Alle Kernelparameter abfragen
Um alle Kernelparameterwerte abzufragen, führen Sie das Dienstprogramm systctl mit dem Befehl „-a aus ‘ Argument z.B.:
# sysctl -a | more kernel.sched_child_runs_first = 0 kernel.sched_min_granularity_ns = 4000000 kernel.sched_latency_ns = 20000000 kernel.sched_wakeup_granularity_ns = 4000000 kernel.sched_tunable_scaling = 1
Sie können in der obigen Ausgabe nach einem bestimmten Kernel-Parameter suchen. Verwenden Sie reguläre Ausdrücke, um eine Gruppe von Kernelparametern herauszufiltern. Zum Beispiel
# sysctl -a | grep ^kernel.s[h,e]m kernel.shmmax = 68719476736 kernel.shmall = 4294967296 kernel.shmmni = 4096 kernel.shm_rmid_forced = 0 kernel.sem = 250 32000 100 128
Kernel-Parameter sofort (nicht dauerhaft) setzen
Um einen sysctl-Parameterwert sofort (nicht dauerhaft) festzulegen, verwenden Sie sysctl -w Befehl. Zum Beispiel:
# sysctl -w kernel.sysrq=0 kernel.sysrq = 0
Parameter, die mehrere Werte annehmen, sollten die Werte in Anführungszeichen eingeschlossen haben. Zum Beispiel, um net.ipv4.ip_local_port_range auf 1025-65535 zu setzen:
# sysctl -w net.ipv4.ip_local_port_range="1025 65535"
Alternativ ist es möglich, Werte direkt in die procfs-Datei zu echoen, die einen sysctl-Parameter darstellt. Zum Beispiel:
# echo 1 > /proc/sys/net/ipv4/ip_forward # echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range
Kernel-Parameter dauerhaft setzen
Kernel-Parameterwerte, die mit der Methode „systctl -w“ geändert wurden, sind flüchtig, d. h. gehen beim Neustart des Servers verloren. Die Konfigurationsdatei des Dienstprogramms sysctl, /etc/sysctl.conf , sollte verwendet werden, um nicht standardmäßige Kernelparameterwerte dauerhaft zu speichern. Die Datei wird beim Serverstart geparst und die darin enthaltenen Werte werden verwendet, um den Kernel zu konfigurieren. Die zum Konfigurieren von Kernelparametern mit der Datei /etc/sysctl.conf erforderliche Syntax folgt der Notation „component.parameter=value“, z. kernel.shmmax =33554432.
Syntax
# vi /etc/sysctl.conf [component].[parameter]=[value]
Es folgt eine Beispieldatei /etc/sysctl.conf:
# grep -v ^# /etc/sysctl.conf net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 ....
Neben der Verwendung der Methode „systctl -w“ zum Ändern von Kernelparametern können Sie auch Parameter ändern, indem Sie sie zur Datei /etc/sysctl.conf hinzufügen und dann die Datei mit dem Dienstprogramm sysctl mit dem Befehl „-p ‘ Argument z.B.:
# sysctl -n kernel.ctrl-alt-del 0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p kernel.ctrl-alt-del = 1
Das Ändern von Kernelparametern durch Hinzufügen zur Datei /etc/sysctl.conf setzt sie nicht nur (sysctl -p), sondern stellt auch sicher, dass die geänderten Werte nach einem Serverneustart bestehen bleiben.
Kernelparameter dauerhaft unter CentOS / RHEL 7 setzen
Der Ansatz zum Setzen von Kernelparametern unter CentOS/RHEL 7 unterscheidet sich etwas von der älteren Version. Erstellen Sie eine neue conf-Datei unter /etc/sysctl.d/ Verzeichnis. Dateinamen haben das Format /etc/sysctl.d/[name].conf. Dateien im Verzeichnis /etc/sysctl.d/ werden der Reihe nach geparst, daher wird empfohlen, dem Dateinamen eine Zahl voranzustellen, die die Reihenfolge angibt, in der die Dateien geparst werden sollen. Beispiel:/etc/sysctl.d/ 01-custom.conf:
# cat /etc/sysctl.d/01-custom.conf net.ipv4.ip_forward=1 net.ipv4.ip_local_port_range="1025 65535"
Damit das System die Werte sofort in einer neuen/aktualisierten /etc/sysctl.d-Datei anwendet, führen Sie sysctl -p [Dateiname]:
aus# sysctl -p /etc/sysctl.d/01-custom.conf