리눅스 커널 파라메터 변경하는 법입니다. 이 문서는 공식 레드햇 문서를 참고하여 작성한 내용이므로 정확한 내용을 담고 습니다.
시스템 관리자는 런타임 시 레드햇 엔터프라이즈 리눅스 커널 동작의 여러 측면을 수정할 수 있습니다. 런타임에 커널 매개변수를 구성하려면 sysctl 명령을 사용하고 /etc/sysctl.d/ 및 /proc/sys/ 디렉터리에 있는 구성 파일을 수정합니다.
Table Of Contents
커널 매개변수(커널 파라메터, kernel parameter)란 무엇인가요?
커널 매개변수는 시스템이 실행되는 동안 조정할 수 있는 값입니다. 변경 사항을 적용하기 위해 커널을 재부팅하거나 다시 컴파일할 필요는 없습니다.
커널 매개변수는 다음을 통해 조정할 수 있습니다:
- sysctl 명령
- proc/sys/ 디렉터리에 마운트된 가상 파일 시스템
- etc/sysctl.d/ 디렉터리에 있는 설정 파일
튜너블은 커널 서브시스템에 따라 클래스로 나뉩니다. 레드햇 엔터프라이즈 리눅스에는 다음과 같은 튜너블 클래스가 있습니다:
Table 5.1. Table of sysctl classes
Tunable class | Subsystem |
vm | Tuning and management of memory, buffers, and cache (메모리, 버퍼, 캐시 튜닝 및 관리) |
abi | Execution domains and personalities( 실행 도메인 및 성격) |
crypto | Cryptographic interfaces (암호화 인터페이스) |
debug | Kernel debugging interfaces (커널 디버깅) |
dev | Device-specific information (장치 관련 정보) |
fs | Global and specific file system tunables (전역 및 특정 파일 시스템 튜너) |
kernel | Global kernel tunables (전역 커널 튜닝) |
net | Network tunables (네트워크 튜닝) |
sunrpc | Sun Remote Procedure Call (NFS) |
user | User Namespace limits (사용자 네임스페이스 제한) |
중요
프로덕션 시스템에서 커널 매개변수를 구성하려면 신중한 계획이 필요합니다. 계획에 없던 변경은 커널을 불안정하게 만들어 시스템을 재부팅해야 할 수도 있습니다. 커널 값을 변경하기 전에 올바른 옵션을 사용하고 있는지 확인하세요.
런타임에 커널 파라미터를 임시로 설정하려면 sysctl 명령을 사용하세요. 이 명령은 튜너블을 나열하고 필터링하는 데도 유용합니다.
필요한 것
- Root 권한
변경 절차
- 모든 매개변수와 해당 값을 나열합니다.
참고:sysctl -a 명령은 런타임 및 부팅 시 조정할 수 있는 커널 매개변수를 표시합니다.
-
sysctl -a
- 커널 매개변수를 임시로 구성하려면 아래 명령을 입력합니다
위의 샘플 명령은 시스템이 실행되는 동안 매개변수 값을 변경합니다. 변경 사항은 다시 시작할 필요 없이 즉시 적용됩니다.참고:
변경 사항은 시스템이 재부팅되면 기본값으로 돌아갑니다.
-
sysctl <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
커널 파라미터를 영구적으로 설정하려면 sysctl 명령을 사용할 수 있습니다.
필요한 것
- Root 권한
변경 절차
- 아래 명령은 리눅스 실행 중(런타임)에 구성할 수 있는 모든 커널 매개변수를 표시합니다.
-
sysctl -a
- 샘플 명령은 파라메터 값을 변경하여 커널 매개변수의 기본값을 재정의하는 /etc/sysctl.conf 파일에 기록합니다. 변경 사항은 재시작할 필요 없이 즉시 영구적으로 적용됩니다.
-
sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> >> /etc/sysctl.conf
커널 파라미터를 영구적으로 수정하려면 /etc/sysctl.d/ 디렉토리에 있는 구성 파일을 수동으로 변경할 수도 있습니다.
커널 파라미터를 영구적으로 설정하려면 /etc/sysctl.d/ 디렉터리에 있는 구성 파일을 수동으로 수정할 수 있습니다.
필요한 것
- Root 권한
변경 절차
- /etc/sysctl.d/ 디렉토리에 신규 conf 파일을 생성합니다.
- 기본적으로 ubuntu에 /etc/sysctl.d/ 디렉토리에 존재하는 파일은 다음과 같습니다.
root:/etc/mysql# ls /etc/sysctl.d/
10-console-messages.conf 10-kernel-hardening.conf 10-network-security.conf 10-zeropage.conf README.sysctl
10-ipv6-privacy.conf 10-magic-sysrq.conf 10-ptrace.conf 99-sysctl.conf
# vim /etc/sysctl.d/<some_file.conf>
- 한 라인에 하나씩 커널 파라메터를 입력합니다.
-
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
- conf 파일을 저장합니다.
- 시스템을 reboot 합니다.
- reboot을 하지 않고 적용하기 위해서는 아래 명령을 수행할 수 있습니다.
아래 명령을 사용하면 이전에 만든 구성 파일에서 값을 읽을 수 있습니다. -
# sysctl -p /etc/sysctl.d/<some_file.conf>
- reboot을 하지 않고 적용하기 위해서는 아래 명령을 수행할 수 있습니다.
proc/sys/ 가상 파일 시스템 디렉토리에 있는 파일을 통해 커널 파라미터를 임시로 설정할 수 있습니다.
필요한 것
- Root 권한
변경 절차
- 구성하려는 커널 파라미터를 식별합니다.
명령이 반환하는 쓰기 가능한 파일을 사용하여 커널을 구성할 수 있습니다. 읽기 전용 권한이 있는 파일은 변경이 되지 않고 정보만 제공합니다. -
# ls -l /proc/sys/<TUNABLE_CLASS>/ root@:/etc/mysql# ls -l /proc/sys/net/ipv4/*retries* -rw-r--r-- 1 root root 0 1월 5 11:02 /proc/sys/net/ipv4/tcp_orphan_retries -rw-r--r-- 1 root root 0 1월 5 11:02 /proc/sys/net/ipv4/tcp_retries1 -rw-r--r-- 1 root root 0 1월 5 11:02 /proc/sys/net/ipv4/tcp_retries2 -rw-r--r-- 1 root root 0 1월 5 11:02 /proc/sys/net/ipv4/tcp_syn_retries -rw-r--r-- 1 root root 0 1월 5 11:02 /proc/sys/net/ipv4/tcp_synack_retries -r--r--r-- 1 root root 0 1월 5 11:02 tcp_available_congestion_control
- 커널 매개변수에 목표 값을 할당합니다.
- 아래 명령은 시스템을 다시 시작하면 사라지는 구성 변경을 수행합니다.
# echo <TARGET_VALUE> > /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
- 새로 설정한 커널 매개변수의 값을 확인하려면 아래 명령을 수행합니다.
# cat /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
참고:
Chapter 5. Configuring kernel parameters at runtime Red Hat Enterprise Linux 8 | Red Hat Customer Portal
'리눅스&OS' 카테고리의 다른 글
우분투 20.04에 bison 2.5 설치하기 (0) | 2024.01.14 |
---|---|
우분투(Ubuntu 22.04)에 gcc/g++ 구버전 설치 - 9버전 gcc/g++ 설치하기 (0) | 2024.01.10 |
리눅스 tcp 커널 파라메터 정리 (1) | 2024.01.05 |
리눅스의 man의 Section 설명 및 섹션별 검색 명령어 (0) | 2024.01.05 |
tcp 네트워크 timer를 통해 리눅스 커널에서 소켓 끊는 현상 확인하기 (0) | 2024.01.05 |