Cómo cambiar los parámetros de tiempo de ejecución del núcleo de una manera persistente y no persistente
- 833
- 16
- Sta. Enrique Santiago
En Parte 13 De esta serie LFCS (Sysadmin certificada de Linux Foundation) explicamos cómo usar Grub para modificar el comportamiento del sistema pasando opciones al kernel para el proceso de arranque en curso.
Del mismo modo, puede usar la línea de comandos en un sistema de Linux en ejecución para alterar ciertos parámetros de kernel de tiempo de ejecución como una modificación única, o permanentemente editando un archivo de configuración.
Por lo tanto, se le permite habilitar o deshabilitar los parámetros del kernel sobre la marcha sin mucha dificultad cuando se necesita debido a un cambio requerido en la forma en que se espera que funcione el sistema.
Introducción del sistema de archivos /PROC
La última especificación del estándar de jerarquía del sistema de archivos indica que /Proc
Representa el método predeterminado para manejar el proceso y la información del sistema, así como otra información de núcleo y memoria. Particularmente, /proc/sys
es donde puede encontrar toda la información sobre dispositivos, controladores y algunas características del núcleo.
La estructura interna real de /proc/sys
Depende en gran medida del núcleo que se utiliza, pero es probable que encuentre los siguientes directorios dentro. A su vez, cada uno de ellos contendrá otros subdirectorios donde se mantienen los valores para cada categoría de parámetros:
enchufe
: Parámetros para dispositivos específicos conectados a la máquina.FS
: Configuración del sistema de archivos (cuotas e inodos, por ejemplo).- Kernel: configuración específica del núcleo.
neto
: configuración de la red.VM
: Uso de la memoria virtual del núcleo.
Para modificar los parámetros de tiempo de ejecución del núcleo usaremos el sysctl
dominio. El número exacto de parámetros que se pueden modificar se puede ver con:
# sysctl -a | WC -L
Si desea ver la lista completa de parámetros del núcleo, simplemente haga:
# sysctl -a
Como la salida del comando anterior consistirá en muchas líneas, podemos usar una tubería seguida de menos para inspeccionarla con más cuidado:
# sysctl -a | menos
Echemos un vistazo a las primeras líneas. Tenga en cuenta que los primeros caracteres en cada línea coinciden con los nombres de los directorios dentro /proc/sys
:
Por ejemplo, la línea resaltada:
enchufe.CD ROM.Info = Nombre de la unidad: SR0
indica que sr0
es un alias para la unidad óptica. En otras palabras, así es como el núcleo "visión"Esa unidad y usa ese nombre para referirse a él.
En la siguiente sección, explicaremos cómo cambiar otros parámetros de tiempo de ejecución del kernel "más importantes" en Linux.
Cómo cambiar o modificar los parámetros de tiempo de ejecución del kernel de Linux
Según lo que hemos explicado hasta ahora, es fácil ver que el nombre de un parámetro coincide con la estructura del directorio dentro /proc/sys
donde se puede encontrar.
Por ejemplo:
enchufe.CD ROM.AutoClose →/Proc/Sys/Dev/Cdrom/AutoClose Net.IPv4.ip_forward →/proc/sys/net/ipv4/ip_forward
Verifique los parámetros del núcleo de Linux
Dicho esto, podemos ver el valor de un parámetro de kernel de Linux particular utilizando sysctl
seguido del nombre del parámetro o leyendo el archivo asociado:
# sysctl dev.CD ROM.AutoClose # cat/proc/sys/dev/cdrom/autoclose # sysctl net.IPv4.ip_forward # cat/proc/sys/net/ipv4/ip_forwardVerifique los parámetros del núcleo de Linux
Establecer o modificar los parámetros del kernel de Linux
Para establecer el valor para un parámetro de kernel, también podemos usar sysctl
, Pero usando el -w
opción y seguido del nombre del parámetro, el signo igual y el valor deseado.
Otro método consiste en usar eco
para sobrescribir el archivo asociado con el parámetro. En otras palabras, los siguientes métodos son equivalentes a deshabilitar la funcionalidad de reenvío de paquetes en nuestro sistema (que, por cierto, debería ser el valor predeterminado cuando se supone que un cuadro no pasa el tráfico entre las redes):
# echo 0>/proc/sys/net/ip4/ip_forward # sysctl -w net.IPv4.ip_forward = 0
Es importante tener en cuenta que los parámetros del núcleo que se establecen utilizando sysctl
solo se aplicará durante la sesión actual y desaparecerá cuando se reinicie el sistema.
Para establecer estos valores de forma permanente, editar /etc/sysctl.confusión
con los valores deseados. Por ejemplo, para deshabilitar el reenvío de los paquetes en /etc/sysctl.confusión Asegúrese de que esta línea aparezca en el archivo:
neto.IPv4.ip_forward = 0
Luego ejecute el siguiente comando para aplicar los cambios a la configuración de ejecución.
# sysctl -p
Otros ejemplos de importantes parámetros de tiempo de ejecución del kernel son:
FS.file-max
Especifica el número máximo de manijas de archivos que el kernel puede asignar para el sistema. Dependiendo del uso previsto de su sistema (servidor web / base de datos / archivos, por nombrar algunos ejemplos), es posible que desee cambiar este valor para satisfacer las necesidades del sistema.
De lo contrario, recibirá un "Demasiados archivos abiertos"Mensaje de error en el mejor de los casos, y puede evitar que el sistema operativo se inicie en el peor.
Si se debe a un error inocente, se encuentra en esta última situación, inicie en modo de usuario único (como se explica en la Parte 13: configure y resuelva problemas con el cargador de arranque de Linux Grub) y edite /etc/sysctl.confusión Como se indicó anteriormente. Para establecer la misma restricción por usuario, consulte la Parte 14 - Monitorear y establecer el uso del límite de proceso de Linux de esta serie.
núcleo.sysrq
se usa para habilitar el Sysrq Clave en su teclado (también conocido como la tecla de pantalla de impresión) para permitir que ciertas combinaciones de teclas invocen acciones de emergencia cuando el sistema no responda.
El valor predeterminado (dieciséis) indica que el sistema honrará el Alt+sysrq+clave
combinación y realizar las acciones enumeradas en el sysrq.C Documentación encontrada en el núcleo.org (donde la clave es una letra en el rango B-Z). Por ejemplo, Alt+sysrq+b
reiniciará el sistema con fuerza (use esto como último recurso si su servidor no responde).
Advertencia! No intente presionar esta combinación de teclas en una máquina virtual porque puede obligar a su sistema de host a reiniciar!
Cuando se establece en 1, neto.IPv4.ICMP_ECHO_IGNORE_All ignorará las solicitudes de ping y las dejará caer en el nivel del núcleo. Esto se muestra en la imagen a continuación: tenga en cuenta cómo se pierden las solicitudes de ping después de configurar este parámetro del núcleo:
Bloquear solicitudes de ping en LinuxUna forma mejor y más fácil de establecer parámetros de tiempo de ejecución individuales es usar .confusión Archivos en el interior /etc/sysctl.d
, agruparlos por categorías.
Por ejemplo, en lugar de configurar neto.IPv4.ip_forward = 0 y neto.IPv4.ICMP_ECHO_IGNORE_ALL = 1 en /etc/sysctl.confusión, Podemos crear un nuevo archivo llamado neto.confusión
adentro /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.confusión
Si elige usar este enfoque, no olvide eliminar esas mismas líneas de /etc/sysctl.confusión
.
Resumen
En este artículo hemos explicado cómo modificar los parámetros de tiempo de ejecución del kernel, tanto persistentes como no persistentemente, usando sysctl, /etc/sysctl.confusión, y archivos adentro /etc/sysctl.d.
En el sysctl documentos puede encontrar más información sobre el significado de más variables. Esos archivos representan la fuente de documentación más completa sobre los parámetros que se pueden establecer a través de SYSCTL.
¿Encontraste este artículo útil?? Seguramente esperamos que lo hayas hecho. No dude en hacernos saber si tiene alguna pregunta o sugerencia para mejorar.
Convertirse en administrador del sistema certificado por Linux- « Cómo establecer listas de control de acceso (ACL) y cuotas de disco para usuarios y grupos
- LFCS monitorea los procesos de Linux Uso de recursos y establece límites de proceso por usuario - Parte 14 »