카테고리 없음

[리눅스 커널] KEXEC와 KDUMP의 동작 원리 !

AustinKim 2023. 4. 18. 11:22
1. KDUMP 관련 링크
 
 
2. KEXEC와 KDUMP 소개
 
kexec
 
커널 패닉이 발생하였을 때, 부트로더를 거치지 않고 빠르게 새로운 커널로 부팅시키는 Feature
 
kdump
 
kexec를 바탕으로 한 “kernel crash dumping mechanism”
 
Kernel Crash Dump Mechanism
 
커널 패닉이 유발되면 시스템의 메모리 상태를 vmcore 파일에 생성하는 작업
 
3. kdump란?
 
kdump는 kernel panic 발생 시에 메모리 이미지(vmcore)의 dump 파일을 생성하는 툴입니다.
 
kdump를 동작하는 과정에서 kexec이 실행되는데 kexec는 커널 패닉 발생 시 BIOS를 거치지 않고 
빠르게 새로운 덤프용 커널로 부팅하게 하는 툴입니다.
 
kexec이 새로운 커널로 부팅하므로 패닉이 발생한 커널의 ramdump를 새로운 환경에서 
온전히 덤프할 수 있습니다.
 
4. kdump와 kexec의 구동 원리
 
kexec은 시스템 부팅 시에 캡쳐 커널(second kernel) 을 현재 커널의 메모리에 로딩합니다. 
(kexec -l <kernel_image>)
 
이후 kexec -e 명령어를 통해 로딩된 커널로 부팅할 수 있습니다.
 
kdump는 시스템 부팅 시에 kexec -p 명령어를 통해 현재 커널의 메모리에 캡쳐 커널을 로드하며, 
이는 시스템 크래시 발생 시 자동으로 실행됩니다.
 
캡쳐 커널이 부팅되면 kdump.conf에 설정되어 있는 값으로 kdump 프로세스가 진행됩니다.