Le but de cet article est d'expliquer comment configurer les paramètres du noyau sur les systèmes Red Hat (RHEL/CentOS) et Oracle Linux (OL) à l'aide de l'utilitaire sysctl. L'utilitaire sysctl (/sbin/sysctl) permet aux utilisateurs (privilégiés) d'interroger et de modifier les paramètres du noyau pendant l'exécution. L'utilitaire est commun à la plupart des distributions Linux, cependant, des différences subtiles peuvent exister entre les distributions, par ex. RHEL/OL et SuSE. Les paramètres qui peuvent être visualisés/modifiés sont ceux exposés via le système de fichiers procfs /proc/sys. La notation point (".") est utilisée lors de la configuration dans un fichier de configuration.
Interroger un paramètre de noyau spécifique
Pour interroger une valeur de paramètre de noyau nommé, exécutez l'utilitaire sysctl avec soit le '-n ' ou pas d'arguments du tout, par exemple :
# sysctl kernel.shmmax kernel.shmmax = 68719476736
# sysctl -n kernel.shmmax 68719476736
Dans l'exemple ci-dessus, le paramètre kernel.shmmax se rapporte à /proc/sys/kernel/shmmax par exemple :
# cat /proc/sys/kernel/shmmax 68719476736
Interrogation de tous les paramètres du noyau
Pour interroger toutes les valeurs des paramètres du noyau, exécutez l'utilitaire systctl avec le '-a ' argument par exemple :
# 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
Vous pouvez grep pour un paramètre de noyau spécifique dans la sortie ci-dessus. Utilisez des expressions régulières pour filtrer un groupe de paramètres du noyau. Par exemple,
# 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
Définir les paramètres du noyau immédiatement (et non de manière persistante)
Pour définir une valeur de paramètre sysctl immédiatement (non persistante), utilisez le sysctl -w commande. Par exemple :
# sysctl -w kernel.sysrq=0 kernel.sysrq = 0
Les paramètres qui prennent plusieurs valeurs doivent avoir les valeurs entre guillemets. Par exemple, pour définir net.ipv4.ip_local_port_range sur 1025-65535 :
# sysctl -w net.ipv4.ip_local_port_range="1025 65535"
Alternativement, il est possible de renvoyer des valeurs directement dans le fichier procfs qui représente un paramètre sysctl. Par exemple :
# echo 1 > /proc/sys/net/ipv4/ip_forward # echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range
Définir les paramètres du noyau de manière persistante
Les valeurs des paramètres du noyau modifiées à l'aide de la méthode "systctl -w" sont volatiles, c'est-à-dire perdues au redémarrage du serveur. Le fichier de configuration de l'utilitaire sysctl, /etc/sysctl.conf , doit être utilisé pour stocker de manière permanente les valeurs des paramètres du noyau autres que ceux par défaut. Le fichier est analysé au démarrage du serveur et les valeurs qu'il contient sont utilisées pour configurer le noyau. La syntaxe requise pour configurer les paramètres du noyau à l'aide du fichier /etc/sysctl.conf suit la notation component.parameter=value, par ex. kernel.shmmax =33554432.
Syntaxe
# vi /etc/sysctl.conf [component].[parameter]=[value]
Voici un exemple de fichier /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 ....
En plus d'utiliser la méthode 'systctl -w' pour modifier les paramètres du noyau, on peut également modifier les paramètres en les ajoutant au fichier /etc/sysctl.conf, puis en analysant le fichier à l'aide de l'utilitaire sysctl avec le '-p ' argument par exemple :
# sysctl -n kernel.ctrl-alt-del 0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p kernel.ctrl-alt-del = 1
La modification des paramètres du noyau en les ajoutant au fichier /etc/sysctl.conf les définit non seulement (sysctl -p), mais garantit également que les valeurs modifiées persistent après un redémarrage du serveur.
Configuration permanente des paramètres du noyau sous CentOS/RHEL 7
L'approche pour définir les paramètres du noyau sous CentOS/RHEL 7 est un peu différente de l'ancienne version. Créez un nouveau fichier de configuration sous /etc/sysctl.d/ annuaire. Les noms de fichiers prennent le format /etc/sysctl.d/[nom].conf. Les fichiers du répertoire /etc/sysctl.d/ sont analysés dans l'ordre, il est donc recommandé de faire précéder le nom du fichier d'un nombre indiquant l'ordre dans lequel vous souhaitez que les fichiers soient analysés. Par exemple, /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"
Pour que le système applique immédiatement les valeurs dans un fichier /etc/sysctl.d nouveau/mis à jour, exécutez sysctl -p [filename] :
# sysctl -p /etc/sysctl.d/01-custom.conf