일상 메모장

CentOS7 kdump 기능 켜기 본문

Linux & Windows

CentOS7 kdump 기능 켜기

핸드오버 2020. 1. 1. 23:38

안녕하세요.

 

오늘은 CentOS7 (RHEL7)에서 Kdump 기능 켜는 법에 대해 포스팅하겠습니다.

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

 

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

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

 

Crash 덤프를 분석하여 시스템 오류의 근본 원인을 찾을 수 있습니다.

 

kexec-tools 설치하기

아래 커맨드를 사용하여 kexec-tools를 설치합니다.

sudo yum install kexec-tools

GRUB2 파일 수정 및 kdump kernel 메모리 예약

/etc/default/grub 파일에 'crashkernel=<RAM 예약 사이즈>'를 GRUB_CMDLINE_LINUX 값에 아래와 같이 추가합니다.

아래와 같이 다른 값은 수정하지 말고 crashkernel=128M 만 추가합니다.

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=128M vconsole.keymap=us rhgb quiet"

GRUB2 설정 리로드

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

재부팅

위 설정을 모드 마친 후 재부팅합니다.

sudo shutdown -r now

dump 파일 설정

Crash 덤프 또는 vmcore 파일을 저장하려면 '/etc/kdump.conf'를 수정해야 합니다.

아래 같이 설정하면 덤프 파일은 /var/crash 위치에 저장하는데 이때 /var/crash 파일 시스템의 여유공간이 RAM 사이즈보다 크거나 같아야 합니다. 그리고 'core_collector'옵션을 사용해서 dump정보를 압축하는 명령어입니다.

마지막 라인은 dump 정보를 지정된 위치에 저장하지 못하는 경우 default 가 수행되는데,

이 경우는 재부팅입니다.

# vi /etc/kdump.conf

path /var/crash
core_collector makedumpfile -c
default reboot

Kdump service 시작

# systemctl start kdump.service
# systemctl enable kdump.service

수동으로 시스템을 crash 해서 kdump 테스트

Crash 하기 전에 아래 명령어를 사용해서 kdump service가 정상 실행 중인지 확인합니다.

systemctl is-active kdump.service
service kdump status

수동으로 crash 발생시켜서 kdump를 테스트합니다.

echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger

그럼 /var/crash 위치에 dump file (vmcore)이 생성됩니다.

# ls -la /var/crash
drwxr-xr-x. 2 root root 42 Dec 4 17:42 127.0.0.1-2019-12-28-17:42:53

/var/crash/127.0.0.1-2019-12-28-17:42:53:
total 135924
-rw-------. 1 root root 139147524 Dec 28 17:42 vmcore
-rw-r--r--. 1 root root 112470 Dec 28 17:42 vmcore-dmesg.txt
[root@cloud ~]#

crash 명령어로 crash dump 분석

crash 명령어는 crash dump 또는 vmcore 파일을 분석하는 데 사용되는 명령어입니다.

'kernel-debuginfo'패키지를 설치하기 전에 먼저 debug repo를 수정합니다.

'/etc/yum.repos.d/CentOS-Debuginfo.repo 파일에서 'enable=0'을 'enable=1'로 수정합니다.

그 후 아래 두 패키지를 설치합니다.

# sudo yum install crash
# sudo yum install kernel-debuginfo

crash 명령어를 사용해서 crash가 발생했을 때 정보를 확인할 수 있습니다.

# crash /var/crash/127.0.0.1-2019-12-28-17\:42\:53/vmcore /usr/lib/debug/lib/modules/`uname -r`/vmlinux

crash 커맨드 라인 창이 뜨면 아래 명령어 들로 정보를 확인할 수 있습니다.

/* 시스템이 crash 됐을때 process list 정보 */
ps

/* 시스템이 crash 됐을때 열려진 파일 정보들 */
files

/* 시스템이 crash 됐을때 system 정보 */
sys

/* crash command line help */
help

감사합니다.