kdump은 리눅스 커널에서 제공하는 시스템 크래시(dump) 메커니즘으로, 시스템이 비정상적으로 종료될 경우 메모리 내용의 스냅샷을 별도의 저장소에 기록하여 이후 문제 분석에 활용할 수 있도록 한다. 이 기능은 주로 커널 패닉(kernel panic) 발생 시 자동으로 작동한다.
주요 기능
-
크래시 덤프 수집
- 시스템이 크래시 상태에 도달하면, 별도로 할당된 “crashkernel” 영역에서 새로운 커널 인스턴스를 부팅한다.
- 새 커널이 메모리 내용을 파일 시스템(예: ext4, NFS) 또는 원격 저장소에 기록한다.
-
문제 진단 지원
- 수집된 메모리 덤프는
crash,gdb등과 같은 디버깅 도구를 이용해 분석할 수 있다. - 메모리 상태, 프로세스 목록, 스택 트레이스 등을 확인함으로써 원인 파악이 가능하다.
- 수집된 메모리 덤프는
구성 요소
- crashkernel: kdump이 사용할 고정된 메모리 영역으로, 부팅 시 커널 파라미터(
crashkernel=256M)를 통해 지정한다. - kdump.service: 시스템d 서비스 형태로 제공되며, 시스템 부팅 시 자동으로 활성화된다.
- makedumpfile: 생성된 메모리 덤프 파일을 압축 및 필터링하여 저장 용량을 절감한다.
설정 절차 (일반적인 흐름)
- crashkernel 파라미터 지정
/etc/default/grub또는 부트 로더 설정 파일에crashkernel=옵션을 추가하고,update-grub등의 명령으로 적용한다.
- kdump 패키지 설치
- 대부분의 배포판에서
kdump패키지를 제공한다(yum install kdump,apt-get install kdump-tools등).
- 대부분의 배포판에서
- 덤프 저장 위치 설정
/etc/kdump.conf파일에서path,core_collector,swap등 저장 옵션을 정의한다.
- 서비스 활성화 및 테스트
systemctl enable --now kdump.service로 서비스를 시작하고,echo c > /proc/sysrq-trigger명령으로 크래시를 강제 발생시켜 정상 동작을 확인한다.
활용 사례
- 서버 운영: 데이터베이스 서버, 웹 서버 등 가용성이 중요한 시스템에서 발생한 커널 패닉 원인 분석.
- 드라이버/하드웨어 테스트: 신규 드라이버나 하드웨어 추가 시, 비정상 종료 시점의 메모리 상태를 확인하여 안정성 검증.
- 보안 조사: 시스템 침해나 악성 코드에 의해 발생한 커널 수준의 이상 징후를 추적.
제한 사항
- 메모리 요구량: crashkernel에 할당된 메모리가 실제 시스템 메모리에서 차감되므로, 메모리 제한이 있는 환경에서는 적절한 크기 설정이 필요하다.
- 덤프 크기: 전체 메모리 덤프는 대용량 파일이 될 수 있어 저장소 용량 관리가 요구된다.
- 복구 시간: 크래시 후 덤프 수집 및 저장 과정에서 시스템 가용성이 일시적으로 중단된다.
참고
man kdump,man crashkernel,man makedumpfile등 공식 매뉴얼 페이지.- 주요 리눅스 배포판(예: RHEL, CentOS, Fedora, Debian)의 문서와 가이드.