Como alterar os parâmetros de tempo de execução do kernel de uma maneira persistente e não persistente

Como alterar os parâmetros de tempo de execução do kernel de uma maneira persistente e não persistente

Em Parte 13 Desse LFCS (Linux Foundation Certified Sysadmin), explicamos como usar o GRUB para modificar o comportamento do sistema, passando opções para o kernel para o processo de inicialização em andamento.

Da mesma forma, você pode usar a linha de comando em um sistema Linux em execução para alterar certos parâmetros do kernel de tempo de execução como modificação única, ou permanentemente editando um arquivo de configuração.

Assim, você tem permissão para ativar ou desativar os parâmetros do kernel sem muita dificuldade quando é necessário devido a uma mudança necessária na maneira como o sistema deve operar.

Apresentando o sistema de arquivos /proc

A especificação mais recente do padrão de hierarquia do sistema de arquivos indica que /Proc Representa o método padrão para lidar com as informações do processo e do sistema, bem como outras informações de kernel e memória. Particularmente, /proc/sys é onde você pode encontrar todas as informações sobre dispositivos, drivers e alguns recursos do kernel.

A estrutura interna real de /proc/sys Depende muito do que o kernel está sendo usado, mas é provável que você encontre os seguintes diretórios dentro. Por sua vez, cada um deles conterá outros subdiretos, onde os valores para cada categoria de parâmetros são mantidos:

  1. Dev: Parâmetros para dispositivos específicos conectados à máquina.
  2. fs: Configuração do sistema de arquivos (cotas e inodos, por exemplo).
  3. kernel: configuração específica do kernel.
  4. líquido: configuração de rede.
  5. vm: Uso da memória virtual do kernel.

Para modificar os parâmetros de tempo de execução do kernel, usaremos o sysctl comando. O número exato de parâmetros que podem ser modificados pode ser visto com:

# sysctl -a | wc -l 

Se você deseja visualizar a lista completa dos parâmetros do kernel, basta fazer:

# sysctl -a 

Como a saída do comando acima consistirá em muitas linhas, podemos usar um pipeline seguido de menos para inspecioná -lo com mais cuidado:

# sysctl -a | menos 

Vamos dar uma olhada nas primeiras linhas. Observe que os primeiros caracteres em cada linha correspondem aos nomes dos diretórios dentro /proc/sys:

Entenda o sistema de arquivos Linux /Proc

Por exemplo, a linha destacada:

Dev.cdrom.Info = Nome da unidade: SR0 

indica que SR0 é um alias para a unidade óptica. Em outras palavras, é assim que o kernel “”Que dirige e usa esse nome para se referir a ele.

Na seção a seguir, explicaremos como mudar outros parâmetros de tempo de execução do kernel "mais importante" no Linux.

Como alterar ou modificar parâmetros de tempo de execução do kernel Linux

Com base no que explicamos até agora, é fácil ver que o nome de um parâmetro corresponde à estrutura do diretório dentro /proc/sys onde pode ser encontrado.

Por exemplo:

Dev.cdrom.Autoclose →/proc/sys/dev/cdrom/autoclose Net.IPv4.ip_forward →/proc/sys/net/ipv4/ip_forward 

Verifique os parâmetros do kernel Linux

Dito isto, podemos visualizar o valor de um parâmetro de kernel Linux em particular usando qualquer sysctl seguido pelo nome do parâmetro ou lendo o arquivo associado:

# sysctl dev.cdrom.Autoclose # Cat/Proc/Sys/dev/cdrom/Autoclose # sysctl net.IPv4.ip_forward # cat/proc/sys/net/ipv4/ip_forward 
Verifique os parâmetros do kernel Linux

Defina ou modifique os parâmetros do kernel Linux

Para definir o valor para um parâmetro do kernel, também podemos usar sysctl, mas usando o -c opção e seguida pelo nome do parâmetro, o sinal igual e o valor desejado.

Outro método consiste em usar eco Para substituir o arquivo associado ao parâmetro. Em outras palavras, os seguintes métodos são equivalentes a desativar a funcionalidade de encaminhamento de pacotes em nosso sistema (que, a propósito, deve ser o valor padrão quando uma caixa não deve passar o tráfego entre as redes):

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

É importante observar que os parâmetros do kernel que são definidos usando sysctl só será aplicado durante a sessão atual e desaparecerá quando o sistema for reiniciado.

Para definir esses valores permanentemente, edite /etc/sysctl.conf com os valores desejados. Por exemplo, para desativar o encaminhamento de pacotes em /etc/sysctl.conf Verifique se esta linha aparece no arquivo:

líquido.IPv4.ip_forward = 0 

Em seguida, execute o seguinte comando para aplicar as alterações na configuração em execução.

# sysctl -p 

Outros exemplos de parâmetros importantes de tempo de execução do kernel são:

fs.arquivo-max Especifica o número máximo de lida com o arquivo que o kernel pode alocar para o sistema. Dependendo do uso pretendido do seu sistema (web / banco de dados / servidor de arquivos, para citar alguns exemplos), você pode alterar esse valor para atender às necessidades do sistema.

Caso contrário, você receberá um “Muitos arquivos abertos”Mensagem de erro na melhor das hipóteses e pode impedir o sistema operacional para inicializar no pior.

Se devido a um erro inocente, você se encontrará nesta última situação, inicialize no modo de usuário único (conforme explicado na Parte 13 - Configurar e solucionar problemas do Linux Grub Boot Loader) e Editar /etc/sysctl.conf conforme instruído anteriormente. Para definir a mesma restrição por um usuário, consulte a Parte 14 - Monitor e defina o limite do processo Linux Uso desta série.

núcleo.Sysrq é usado para ativar o Sysrq Chave no teclado (também conhecido como tecla de tela de impressão) para permitir que certas combinações de teclas invocem ações de emergência quando o sistema se tornar sem resposta.

O valor padrão (16) indica que o sistema honrará o ALT+SYSRQ+Tecla combinar e executar as ações listadas no Sysrq.c Documentação encontrada no kernel.org (onde a chave é uma letra na faixa B-Z). Por exemplo, Alt+sysrq+b Reiniciará o sistema com força (use isso como último recurso se o seu servidor não responder).

Aviso! Não tente pressionar esta combinação de teclas em uma máquina virtual, pois pode forçar seu sistema host a reiniciar!

Quando definido como 1, líquido.IPv4.ICMP_ECHO_IGNORE_ALL ignorará os pedidos de ping e os soltará no nível do kernel. Isso é mostrado na imagem abaixo - Observe como as solicitações de ping são perdidas após a definição deste parâmetro do kernel:

Block Ping Solicys in Linux

Uma maneira melhor e mais fácil de definir parâmetros individuais de tempo de execução é usar .conf arquivos dentro /etc/sysctl.d, agrupando -os por categorias.

Por exemplo, em vez de definir líquido.IPv4.ip_forward = 0 e líquido.IPv4.ICMP_ECHO_IGNORE_ALL = 1 em /etc/sysctl.conf, Podemos criar um novo arquivo chamado líquido.conf dentro /etc/sysctl.d:

# eco "rede.IPv4.ip_forward = 0 "> /etc /sysctl.d/net.conf # eco "net.IPv4.icmp_echo_ignore_all = 1 ">> /etc /sysctl.d/net.conf 

Se você optar por usar esta abordagem, não se esqueça de remover as mesmas linhas de /etc/sysctl.conf.

Resumo

Neste artigo, explicamos como modificar os parâmetros de tempo de execução do kernel, tanto persistentes quanto não persistentes, usando sysctl, /etc/sysctl.conf, e arquivos dentro /etc/sysctl.d.

No sysctl Docos, você pode encontrar mais informações sobre o significado de mais variáveis. Esses arquivos representam a fonte mais completa de documentação sobre os parâmetros que podem ser definidos via sysctl.

Você achou este artigo útil? Certamente esperamos que você tenha feito. Não hesite em nos informar se você tiver alguma dúvida ou sugestão para melhorar.

Torne -se um administrador de sistema certificado Linux