KDump란 무엇인가?

본투비루트를 하면서 kdump라는게 있어서 알아보다가 정리한 글을 공유합니다.

Kdump는 Kernel 이 crash 발생했을 때, crash dump 정보를 캡처하는 데 사용하는 kernel의 기능이다.

커널 패닉 이벤트 시에 충돌 덤프를 생성하는 리눅스 커널의 한 부분이다.

kdump는 kexec를 바탕으로 한 ‘커널 크래쉬 덤핑 메카니즘’이다. 이는 커널 패닉이 발생했을 때 시스템의 메모리 상태를 vmcore(메모리이미지)라는 파일 형태로 생성하는 작업이다.

이는 디버깅 목적으로 분석 될 수 있고 충돌의 원인을 결정할 수 있는 메모리 이미지인 Vmcore를 생성하는것이다.

Kernel이 실행 중에 crash가 발생하게 되면 'kexec'가 실행되고 예약된 메모리에서 kdump 커널을 로드한 후

RAM 및 스왑 내용이 로컬 디스크의 vmcore파일에 복사되고 재부팅되게 됩니다.

kexec란?

커널 패닉 발생 시 BIOS를 거치지 않고 빠르게 Secondary kernel로 부팅시키는 역활을 한다.

kexec로 새로운 캡쳐 커널을 사용하는 이유는 기존에 패닉이 발생한 상태에서의 커널이 아니라 새로운 커널이기 때문에 덤프를 하는 부분에서 좀더 완전하게 덤프를 생성할 수 있기 때문입니다.

kdump가 필요한 이유

윈도우에 블루스크린이 있는것처럼 리눅스에도 커널패닉이라는 것이 존재합니다.

데스크탑같은 경우는 그냥 재부팅 해버리거나 포맷해버리면 그만이지만,

서버와 같은 경우는 장애가 발생했을 때 재부팅을 하는것도 리스크가 있는 작업이고,

장애가 발생했을 때 그 원인을 찾아내서 같은 장애가 나타나지 않도록 하는 것이 중요합니다.

그 원인을 찾을 수 있는 실마리를 제공하는 것이 vmcore 라는 코어 파일이며, 코어파일을 생성하는 것이 kdump라고 생각하면 됩니다.

kdump를 사용하는 궁극적인 이유는 OS 행이 걸린 원인을 분석하고 추적하여 같은 문제로 재발하는 것을 방지하기 위해서 사용합니다.서버가 계속해서 행이 걸린다면 서비스에 문제가 생길 것이고 기업의 입장에서는 돈으로 직결되는 문제이기 때문에 kdump 솔루션은 리눅스 없어서는 안될 기술이다.

vmcore 파일은 binary 형태로 vim이나 cat으로 열 수 없습니다.