/ rhce-new

RHCE : System CFG and MNGT– Use /proc/sys and sysctl to modify and set kernel runtime params.

rhce-new redhat-new /proc filesystem sysctl command /etc/sysctl.conf kernel runtime parameters
https://4am.kr/rhce-system-cfg-and-mngt-use-proc-sys-and-sysctl-to-modify-and-set-kernel-runtime-params/

RHCE : 시스템 구성 및 관리 – /proc/sys와 sysctl을 사용하여 커널 런타임 매개 변수 수정 및 설정

(RHCE : System configuration and management – Use /proc/sys and sysctl to modify and set kernel runtime parameters.)

RHCE 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

시작하기 전에

서버의 성능이나 특성을 향상시키려면, 커널 런타임 파라미터를 설정할 수 있어야 한다.

커널 런타임 파라미터 설정은 다음과 같은 3가지 방법으로 수행이 가능하다.

  • /proc 파일 시스템을 통해
  • sysctl 커맨드를 통해
  • /etc/sysctl.conf 파일을 통해

/proc 파일 시스템

1. 커널 런타임 파라미터 값(여기서는 /proc/sys/net/ipv4/ip_forward가 호스트를 라우터로 작동하도록 하는데 사용된다고 가정한다)을 얻고자 한다면 다음과 같이 입력한다.

[root@server2 /]# cat /proc/sys/net/ipv4/ip_forward 
0
[root@server2 /]# 

2. 앞의 파라미터를 변경하려고 한다면, 다음과 같이 입력한다.

[root@server2 /]# echo 1 > /proc/sys/net/ipv4/ip_forward 
[root@server2 /]# cat /proc/sys/net//ipv4/ip_forward 
1
[root@server2 /]#
  • 노트: 1On으로, 0Off로 사용된다.
  • 이 변경사항은 일시적인 것으로, 재부팅시 초기화된다. 지속적으로 변경하려면, /etc/rc.d/rc.local 파일을 수정하여, 부팅시마다 재적용할 수 있도록 하여야 한다. 아래에, 더 나은 방법이 있다.

sysctl 커맨드

1. sysctl 커맨드를 통해, 사용 가능한 커널 런타임 파라미터와 현재 값에 대해 확인할 수 있다.

[root@server2 /]# sysctl -a | grep vm.swappiness
vm.swappiness = 30
[root@server2 /]# 

2. -w옵션을 통해 커널 런타임 파라미터를 설정할 수 있다.

[root@server2 /]# sysctl -w vm.swappiness=20
vm.swappiness = 20
[root@server2 /]# sysctl -a | grep vm.swappiness
vm.swappiness = 20
[root@server2 /]# 
  • 노트: 앞의 방법과 동일하게 변경한 값이 일시적이므로, 재부팅시 초기화된다. /etc/rc.d/rc.local 파일을 수정하여, 이 방법 역시 부팅시마다 재적용할 수 있도록 하여야 한다.

/etc/sysctl.conf 파일

영구적으로 커널 런타임 파라미터를 저장하려면, /sys/sysctl.conf 파일에 기록하도록 한다.

1. /etc/sysctl.conf 파일을 열어 다음 줄을 붙여넣기 한다.

[root@server2 /]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@server2 /]# sysctl -a | grep ip_forward >> /etc/sysctl.conf
[root@server2 /]# vim /etc/sysctl.conf 
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# allow IPv4 forwarding
net.ipv4.ip_forward = 1
...
-- 끼워넣기 --                            6,24         모두
  • 주의: 코멘트는 별도의 줄에만 허용되며, 줄의 맨 끝에서는 허용되지 않는다.
  • 노트: net.ipv4.ip_forward 커널 런타임 파라미터 이름과 /proc/sys/net/ipv4/ip_forward 경로명이 일치하는 것은 우연이 아니고, 항상 일치한다.

2. 변경사항을 적용하려면, 다음과 같이 입력한다.

[root@server2 /]# sysctl -p
net.ipv4.ip_forward = 1
[root@server2 /]# 

3. 많은 커널 런타임 파라미터들이 설정이 가능하다. 여기 예시가 있다.

# don't respond to a ping
net.ipv4.icmp_echo_ignore_all = 1
# don't respond to a ping to the broadcast address
net.ipv4.icmp_echo_ignore_broadcasts = 1
# disable IPv6 for all network interfaces
net.ipv6.conf.all.disable_ipv6 = 1
  • 노트: 앞에서 언급한 것처럼, sysctl -a 커맨드는 모든 커널 런타임 파라미터와 현재 설정된 값을 출력한다. 출력을 파일로 리다이렉팅할 때, 현재 설정을 백업해 두는 것도 좋은 방법이다.
  • 주의: /etc/sysctl.conf 파일에 설정된 커널 런타임 파라미터는 tuned 프로파일 어플리케이션에 의해 덮어쓰기될 수 있다(여기 예제를 참조할 것).

추가 자료

Suse는 흥미로운 SLES 11/12 운영체제 튜닝 및 최적화 가이드를 제공한다. 페도라 문서에서 추천하는 /etc/sysctl.conf 설정에 대해 찾아볼 수 있다. Kernel.org도 역시 sysctl 설정에 대한 문서를 제공한다.