리눅스 커널 소개
리눅스 커널 소개와 운영 점검 가이드입니다. uname, 커널 모듈, dmesg, sysctl, 커널 업데이트와 재부팅 전 확인해야 할 기준을 정리했습니다.
리눅스 커널은 사용자 프로그램과 하드웨어 사이에서 CPU, 메모리, 프로세스, 파일시스템, 네트워크, 장치 드라이버를 관리하는 핵심 계층입니다. 애플리케이션은 일반적으로 system call을 통해 커널 기능을 사용하고, 커널은 하드웨어 자원을 보호된 방식으로 나눠 씁니다.
운영자가 커널을 이해해야 하는 이유는 장애 메시지가 애플리케이션 로그에만 남지 않기 때문입니다. OOM, blocked task, 파일시스템 오류, NIC 드라이버 문제, conntrack table 초과 같은 사건은 커널 로그와 파라미터를 같이 봐야 합니다.
커널이 담당하는 것
- 프로세스 스케줄링
- 메모리 관리와 가상 메모리
- 파일시스템과 block I/O
- 네트워크 stack
- 장치 드라이버
- 권한, namespace, cgroup 같은 격리 기능
현재 커널 확인
uname -a
uname -r
cat /proc/version
cat /etc/os-release
hostnamectl
배포판 커널은 upstream kernel을 그대로 쓰는 것이 아니라 배포판별 backport와 보안 패치를 포함합니다. 그래서 숫자만 보고 “낮은 버전이라 취약하다”고 단정하지 말고, 배포판 보안 공지와 패키지 changelog를 같이 확인합니다.
모듈 확인
lsmod
modinfo overlay
sudo modprobe br_netfilter
운영 서버에서 모듈을 임의로 unload하면 서비스가 깨질 수 있으므로, 제거 명령은 영향 범위를 확인한 뒤 실행해야 합니다.
부팅 때 필요한 모듈은 /etc/modules-load.d/에 선언할 수 있습니다.
echo br_netfilter | sudo tee /etc/modules-load.d/k8s.conf
sudo systemctl restart systemd-modules-load
lsmod | grep br_netfilter
커널 로그
dmesg -T | tail -n 100
journalctl -k -n 100 --no-pager
journalctl -k -S -1h --no-pager
자주 보는 키워드는 다음과 같습니다.
journalctl -k --no-pager | grep -Ei "oom|out of memory|blocked for more than|I/O error|EXT4-fs error|xfs|watchdog|reset adapter|segfault"
sysctl 파라미터
sysctl net.ipv4.ip_forward
sysctl vm.swappiness
sudo sysctl -w net.ipv4.ip_forward=1
영구 반영은 /etc/sysctl.d/*.conf에 둡니다.
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-local.conf
sudo sysctl --system
컨테이너나 Kubernetes 노드에서는 bridge netfilter, ip_forward, conntrack 관련 값이 서비스 영향으로 이어질 수 있습니다.
sysctl net.bridge.bridge-nf-call-iptables 2>/dev/null
sysctl net.netfilter.nf_conntrack_max 2>/dev/null
sudo conntrack -S 2>/dev/null || true
파라미터 튜닝은 “인터넷 예제 복사”로 끝내면 위험합니다. 현재 값, 변경 이유, 변경 전후 지표, 되돌릴 값을 함께 기록합니다.
프로세스와 커널 인터페이스
cat /proc/meminfo | head
cat /proc/cpuinfo | head
cat /proc/sys/kernel/pid_max
cat /proc/sys/fs/file-nr
cat /proc/pressure/cpu
cat /proc/pressure/memory
/proc와 /sys는 커널 상태를 노출하는 가상 파일시스템입니다. 값을 읽는 것은 안전한 편이지만, 쓰기는 즉시 커널 동작을 바꿀 수 있으므로 운영 영향 범위를 확인합니다.
커널 업데이트 주의사항
커널 업데이트는 보안과 하드웨어 지원에 중요하지만, 드라이버/스토리지/가상화 모듈과 호환성 문제가 생길 수 있습니다. 운영 서버에서는 변경 전 현재 커널, 부팅 항목, rollback 가능 여부를 확인합니다.
rpm -qa 'kernel*' 2>/dev/null | sort
dpkg -l 'linux-image*' 2>/dev/null | awk '/^ii/ {print $2, $3}'
grubby --default-kernel 2>/dev/null || true
업데이트 후에는 새 커널로 실제 부팅됐는지와 이전 커널이 rollback 용도로 남아 있는지를 확인합니다.
uname -r
sudo grubby --info=ALL 2>/dev/null | grep -E "^(kernel|title)="
sudo journalctl -b -p warning --no-pager
장애 분석 기준
- OOM이면 어떤 프로세스가 kill 됐는지와 cgroup 제한이 있었는지 확인합니다.
- blocked task면 디스크, NFS, iSCSI, multipath, 파일시스템 로그를 같이 봅니다.
- 네트워크 drop이면 NIC driver, ring buffer, conntrack, firewall 로그를 분리합니다.
- 커널 업데이트 직후면 DKMS, HBA/NIC 드라이버, 가상화 모듈 호환성을 먼저 의심합니다.