Com canviar els paràmetres d'execució del nucli d'una manera persistent i no persistent


A la part 13 d'aquesta, com utilitzar GRUB per modificar el comportament del sistema passant opcions al nucli per al procés d'arrencada en curs.

De la mateixa manera, podeu utilitzar la línia d'ordres en un sistema Linux en execució per alterar determinats paràmetres del nucli en temps d'execució com a modificació única o permanentment editant un fitxer de configuració.

Per tant, podeu habilitar o desactivar els paràmetres del nucli sobre la marxa sense gaire dificultat quan calgui a causa d'un canvi necessari en la forma en què s'espera que el sistema funcioni.

Presentació del sistema de fitxers /proc

L'última especificació de l'estàndard de jerarquia del sistema de fitxers indica que /proc representa el mètode predeterminat per gestionar la informació del procés i del sistema, així com altres dades del nucli i de la memòria. En particular, /proc/sys és on podeu trobar tota la informació sobre dispositius, controladors i algunes característiques del nucli.

L'estructura interna real de /proc/sys depèn molt del nucli que s'utilitzi, però és probable que hi trobeu els directoris següents. Al seu torn, cadascun d'ells contindrà altres subdirectoris on es mantenen els valors de cada categoria de paràmetres:

  1. dev: paràmetres per a dispositius específics connectats a la màquina.
  2. fs: configuració del sistema de fitxers (quotes i inodes, per exemple).
  3. nucli: configuració específica del nucli.
  4. net: configuració de la xarxa.
  5. vm: ús de la memòria virtual del nucli.

Per modificar els paràmetres d'execució del nucli utilitzarem l'ordre sysctl. El nombre exacte de paràmetres que es poden modificar es pot veure amb:

# sysctl -a | wc -l

Si voleu veure la llista completa de paràmetres del nucli, feu el següent:

# sysctl -a 

Com que la sortida de l'ordre anterior constarà de MOLTES línies, podem utilitzar una canalització seguida de menys per inspeccionar-la amb més cura:

# sysctl -a | less

Fem una ullada a les primeres línies. Tingueu en compte que els primers caràcters de cada línia coincideixen amb els noms dels directoris dins de /proc/sys:

Per exemple, la línia destacada:

dev.cdrom.info = drive name:        	sr0

indica que sr0 és un àlies per a la unitat òptica. En altres paraules, així és com el nucli \veu aquesta unitat i utilitza aquest nom per referir-s'hi.

A la secció següent explicarem com canviar altres paràmetres d'execució del nucli \més importants a Linux.

Com canviar o modificar els paràmetres d'execució del nucli de Linux

Segons el que hem explicat fins ara, és fàcil veure que el nom d'un paràmetre coincideix amb l'estructura de directoris dins de /proc/sys on es pot trobar.

Per exemple:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Dit això, podem veure el valor d'un paràmetre concret del nucli de Linux utilitzant sysctl seguit del nom del paràmetre o llegint el fitxer associat:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward

Per establir el valor d'un paràmetre del nucli també podem utilitzar sysctl, però utilitzant l'opció -w i seguida del nom del paràmetre, el signe igual i el valor desitjat.

Un altre mètode consisteix a utilitzar echo per sobreescriure el fitxer associat al paràmetre. En altres paraules, els mètodes següents són equivalents per desactivar la funcionalitat de reenviament de paquets al nostre sistema (que, per cert, hauria de ser el valor per defecte quan se suposa que una caixa no ha de passar trànsit entre xarxes):

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

És important tenir en compte que els paràmetres del nucli que s'estableixen mitjançant sysctl només s'aplicaran durant la sessió actual i desapareixeran quan es reiniciï el sistema.

Per establir aquests valors de manera permanent, editeu /etc/sysctl.conf amb els valors desitjats. Per exemple, per desactivar el reenviament de paquets a /etc/sysctl.conf, assegureu-vos que aquesta línia aparegui al fitxer:

net.ipv4.ip_forward=0

A continuació, executeu l'ordre següent per aplicar els canvis a la configuració en execució.

# sysctl -p

Altres exemples de paràmetres importants del temps d'execució del nucli són:

fs.file-max especifica el nombre màxim de controls de fitxers que el nucli pot assignar al sistema. Depenent de l'ús previst del vostre sistema (web/base de dades/servidor de fitxers, per citar alguns exemples), és possible que vulgueu canviar aquest valor per satisfer les necessitats del sistema.

En cas contrari, rebreu un missatge d'error \Massa fitxers oberts en el millor dels casos, i pot evitar que el sistema operatiu arrenqui en el pitjor.

Si a causa d'un error innocent us trobeu en aquesta darrera situació, arrenqueu en mode d'usuari únic (tal com s'explica a la Part 14: Superviseu i configureu l'ús del límit del procés de Linux d'aquesta sèrie.

kernel.sysrq s'utilitza per habilitar la tecla SysRq al vostre teclat (també coneguda com a tecla d'impressió de pantalla) per permetre que determinades combinacions de tecles invoquin accions d'emergència quan el sistema no respon.

El valor per defecte (16) indica que el sistema respectarà la combinació Alt+SysRq+clau i realitzarà les accions enumerades a la documentació sysrq.c que es troba a kernel.org (on la clau és una lletra a la rang b-z). Per exemple, Alt+SysRq+b reiniciarà el sistema amb força (utilitza-ho com a últim recurs si el servidor no respon).

Avís! No intenteu prémer aquesta combinació de tecles en una màquina virtual perquè pot forçar el vostre sistema amfitrió a reiniciar-se!

Quan es defineix a 1, net.ipv4.icmp_echo_ignore_all ignorarà les sol·licituds de ping i les deixarà anar al nivell del nucli. Això es mostra a la imatge següent: tingueu en compte com es perden les sol·licituds de ping després de configurar aquest paràmetre del nucli:

Una manera millor i més fàcil d'establir paràmetres d'execució individuals és utilitzar fitxers .conf dins de /etc/sysctl.d, agrupant-los per categories.

Per exemple, en lloc de configurar net.ipv4.ip_forward=0 i net.ipv4.icmp_echo_ignore_all=1 a /etc/sysctl.conf, podem crear un fitxer nou anomenat net.conf dins de /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.conf

Si trieu utilitzar aquest enfocament, no oblideu eliminar aquestes mateixes línies de /etc/sysctl.conf.

Resum

En aquest article hem explicat com modificar els paràmetres d'execució del nucli, tant persistents com no persistents, utilitzant sysctl, /etc/sysctl.conf i fitxers dins de /etc/sysctl.d.

Als documents sysctl podeu trobar més informació sobre el significat de més variables. Aquests fitxers representen la font més completa de documentació sobre els paràmetres que es poden establir mitjançant sysctl.

Heu trobat útil aquest article? Segur que esperem que ho hagis fet. No dubteu a fer-nos saber si teniu cap pregunta o suggeriment per millorar.