Comment changer les paramètres d'exécution du noyau d'une manière persistante et non persistante

Comment changer les paramètres d'exécution du noyau d'une manière persistante et non persistante

Dans Partie 13 De cette série LFCS (Linux Foundation certifiée Sysadmin), nous avons expliqué comment utiliser Grub pour modifier le comportement du système en passant des options au noyau pour le processus de démarrage en cours.

De même, vous pouvez utiliser la ligne de commande dans un système Linux en cours d'exécution pour modifier certains paramètres du noyau d'exécution comme modification unique, ou en permanence en modifiant un fichier de configuration.

Ainsi, vous êtes autorisé à activer ou à désactiver les paramètres du noyau à la volée sans beaucoup de difficulté lorsqu'il est nécessaire en raison d'un changement requis dans la façon dont le système devrait fonctionner.

Présentation du système de fichiers / proc

La dernière spécification de la norme de hiérarchie du système de fichiers indique que / proc représente la méthode par défaut pour gérer les informations de processus et le système ainsi que d'autres informations de noyau et de mémoire. Notamment, / proc / sys est l'endroit où vous pouvez trouver toutes les informations sur les appareils, les pilotes et certaines fonctionnalités du noyau.

La structure interne réelle de / proc / sys Cela dépend fortement de l'utilisation du noyau, mais vous trouverez probablement les répertoires suivants à l'intérieur. À son tour, chacun d'eux contiendra d'autres sous-répertoires où les valeurs de chaque catégorie de paramètres sont maintenues:

  1. dev: Paramètres pour des appareils spécifiques connectés à la machine.
  2. FS: Configuration du système de fichiers (quotas et inodes, par exemple).
  3. noyau: configuration spécifique au noyau.
  4. filet: Configuration du réseau.
  5. machine virtuelle: Utilisation de la mémoire virtuelle du noyau.

Pour modifier les paramètres d'exécution du noyau, nous utiliserons le sysctl commande. Le nombre exact de paramètres qui peuvent être modifiés peuvent être affichés avec:

# sysctl -a | wc -l 

Si vous souhaitez afficher la liste complète des paramètres du noyau, faites simplement:

# sysctl -a 

Comme la sortie de la commande ci-dessus consistera en beaucoup de lignes, nous pouvons utiliser un pipeline suivi de moins pour l'inspecter plus attentivement:

# sysctl -a | moins 

Jetons un coup d'œil aux premières lignes. Veuillez noter que les premiers caractères de chaque ligne correspondent aux noms des répertoires à l'intérieur / proc / sys:

Comprendre le système de fichiers Linux / Proc

Par exemple, la ligne en surbrillance:

dev.CD ROM.info = Nom du lecteur: SR0 

indique que sr0 est un alias pour le lecteur optique. En d'autres termes, c'est ainsi que le noyau «voir«Ce lecteur et utilise ce nom pour y faire référence.

Dans la section suivante, nous expliquerons comment modifier d'autres paramètres d'exécution du noyau «plus importants» dans Linux.

Comment modifier ou modifier les paramètres d'exécution du noyau Linux

Sur la base de ce que nous avons expliqué jusqu'à présent, il est facile de voir que le nom d'un paramètre correspond à la structure du répertoire à l'intérieur / proc / sys où il peut être trouvé.

Par exemple:

dev.CD ROM.AutoClose → / Proc / Sys / Dev / CDROM / Net AutoClose.ipv4.ip_forward → / proc / sys / net / ipv4 / ip_forward 

Vérifiez les paramètres du noyau Linux

Cela dit, nous pouvons afficher la valeur d'un paramètre de noyau Linux particulier en utilisant soit sysctl suivi du nom du paramètre ou de la lecture du fichier associé:

# sysctl dev.CD ROM.AutoClose # CAT / Proc / Sys / Dev / CDROM / AutoClose # SYSCTL NET.ipv4.IP_FORWARD # CAT / PROC / SYS / NET / IPV4 / IP_FORWARD 
Vérifiez les paramètres du noyau Linux

Définir ou modifier les paramètres du noyau Linux

Pour définir la valeur d'un paramètre de noyau que nous pouvons également utiliser sysctl, mais en utilisant le -w option et suivi du nom du paramètre, du signe égal et de la valeur souhaitée.

Une autre méthode consiste à utiliser écho Pour écraser le fichier associé au paramètre. En d'autres termes, les méthodes suivantes sont équivalentes à désactiver les fonctionnalités de transfert de paquets dans notre système (qui, soit dit en passant, devraient être la valeur par défaut lorsqu'une boîte n'est pas censée passer le trafic entre les réseaux):

# echo 0> / proc / sys / net / ipv4 / ip_forward # sysctl -w net.ipv4.ip_forward = 0 

Il est important de noter que les paramètres du noyau qui sont définis en utilisant sysctl ne sera appliqué que pendant la session en cours et disparaîtra lorsque le système sera redémarré.

Pour définir ces valeurs en permanence, modifiez / etc / sysctl.confli avec les valeurs souhaitées. Par exemple, pour désactiver le transfert de paquets dans / etc / sysctl.confli Assurez-vous que cette ligne apparaît dans le fichier:

filet.ipv4.ip_forward = 0 

Ensuite, exécutez la commande suivante pour appliquer les modifications à la configuration en cours d'exécution.

# sysctl -p 

D'autres exemples de paramètres d'exécution importants du noyau sont:

FS.fichier-max Spécifie le nombre maximum de gardiens de fichiers que le noyau peut allouer au système. Selon l'utilisation prévue de votre système (Web / base de données / serveur de fichiers, pour nommer quelques exemples), vous pouvez modifier cette valeur pour répondre aux besoins du système.

Sinon, vous recevrez un «Trop de fichiers ouverts”Message d'erreur au mieux et peut empêcher le système d'exploitation de démarrer au pire.

Si en raison d'une erreur innocente, vous vous trouvez dans cette dernière situation, démarrez en mode utilisateur unique (comme expliqué dans la partie 13 - configurer et dépanner Linux Grub Boot Loader) et modifier / etc / sysctl.confli Comme indiqué précédemment. Pour définir la même restriction sur une base par utilisateur, reportez-vous à la partie 14 - Moniteur et définissez l'utilisation de la limite de processus Linux de cette série.

noyau.sysrq est utilisé pour activer le Sysrq clé de votre clavier (également connu sous le nom de clé d'écran d'impression) afin de permettre à certaines combinaisons de clés d'invoquer des actions d'urgence lorsque le système n'est pas réactif.

La valeur par défaut (16) indique que le système honorera le Clé Alt + Sysrq + combinaison et effectuer les actions énumérées dans le sysrq.c documentation trouvée dans le noyau.org (où la clé est une lettre dans la gamme B-Z). Par exemple, Alt + sysrq + b redémarrera le système avec force (utilisez-le en dernier recours si votre serveur ne répond pas).

Avertissement! N'essayez pas d'appuyer sur cette combinaison de touches sur une machine virtuelle car elle peut forcer votre système hôte à redémarrer!

Lorsqu'il est réglé sur 1, filet.ipv4.ICMP_ECHO_IGNORE_ALL Ignorera les demandes de ping et les déposera au niveau du noyau. Ceci est illustré dans l'image ci-dessous - Notez comment les demandes de ping sont perdues après la définition de ce paramètre de noyau:

Bloquer les demandes de ping dans Linux

Un moyen meilleur et plus facile de définir des paramètres d'exécution individuels est l'utilisation .confli fichiers à l'intérieur / etc / sysctl.d, les regrouper par catégories.

Par exemple, au lieu de définir filet.ipv4.ip_forward = 0 et filet.ipv4.icmp_echo_ignore_all = 1 dans / etc / sysctl.confli, Nous pouvons créer un nouveau fichier nommé filet.confli à l'intérieur / etc / sysctl.d:

# echo "net.ipv4.ip_forward = 0 "> / etc / sysctl.d / net.Conf # echo "net.ipv4.icmp_echo_ignore_all = 1 ">> / etc / sysctl.d / net.confli 

Si vous choisissez d'utiliser cette approche, n'oubliez pas de supprimer ces mêmes lignes de / etc / sysctl.confli.

Résumé

Dans cet article, nous avons expliqué comment modifier les paramètres d'exécution du noyau, à la fois persistants et non persistants, en utilisant sysctl, / etc / sysctl.confli, et les fichiers à l'intérieur / etc / sysctl.d.

Dans le sysctl Docs Vous pouvez trouver plus d'informations sur la signification de plus de variables. Ces fichiers représentent la source de documentation la plus complète sur les paramètres qui peuvent être définis via Sysctl.

Avez-vous trouvé cet article utile? Nous espérons sûrement que vous avez fait. N'hésitez pas à nous faire savoir si vous avez des questions ou des suggestions pour améliorer.

Devenir un administrateur système certifié Linux