본문 바로가기
OS-OE Knowledge/Linux-Unix KB

RHEL/Kdump Configuration

by 스쳐가는인연 2013. 12. 8.

리눅스 시스템 운영 중 장애의 원인을 확인하기 위해서 OS의 덤프를 생성해야 할 필요가 있다.


RHEL Kdump 구성 (Test 기준: RHEL 6.4, VM)

 

로컬디스크/스토리지에 저장

1. 필요 Package 확인 (kexec-tools-*.rpm)

아래 명령을 통해 패키지의 설치 상태를 확인

-------------------------------------------------------------------------------------------------------------------

[root@vRH6x Packages]# rpm -qa |grep kexec-tools
kexec-tools-2.0.0-258.el6.x86_64

------------------------------------------------------------------------------------------------------------------

 

2. 설치

패키지가 설치 되어 있지 않은 경우 아래 두 가지 중 한가지 방법을 통해 필요 패키지를 설치

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# yum install kexec-tools

or

[root@vRH6x Packages]# rpm -Uvh kexec-tools-2.0.0-258.el6.x86_64.rpm
warning: kexec-tools-2.0.0-258.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
           package kexec-tools-2.0.0-258.el6.x86_64 is already installed

------------------------------------------------------------------------------------------------------------------------------

 

3. 구성

3.1. grub.conf 파일을 수정하여 Kdump 기능 사용을 설정 하고 리부팅하여 활성화

-------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x Packages]# vim /boot/grub/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_vrh6x-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_vrh6x-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_vrh6x/lv_root SYSFONT=latarcyrheb-sun16
crashkernel=auto nmi_watchdog=1 rd_LVM_LV=vg_vrh6x/lv_swap rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-358.el6.x86_64.img

[root@vRH6x Packages]# reboot
Broadcast message from
jade@vRH6x.infoages.com
           (/dev/pts/1) at 22:22 ...
The system is going down for reboot NOW!

------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------

NOTE: Kernel Dump를 생성하기 위해 메모리 공간을 예약

RHEL 5
crashkernel=128M@16M

RHEL 6 - Memory 2GB 이하
crashkernel=128M

RHEL 6 - Memory 2GB 이상
crashkernel=auto

128MB 기본 할당에 Memory 1TB64MB씩 추가됨 (절대 용량은 아님)
e.g.) DL980 G7
Memory 1TB > 192M
     DL980 G7
Memory 4TB > 320M

 

Extended crashkernel syntax
===========================

The syntax is:
    crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
    range=start-[end]

    'start' is inclusive and 'end' is exclusive.

For example:
    crashkernel=512M-2G:64M,2G-:128M

This would mean:
    1) if the RAM is smaller than 512M, then don't reserve anything
       (this is the "rescue" case)
    2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
    3) if the RAM size is larger than 2G, then reserve 128M

 

nmi_watchdog=1

nmi_watchdog을 활성화
시스템이 일정시간 응답이 없는 경우 특정 Task를 구동하는 타이머

-------------------------------------------------------------------------------------------------------------------------------

 

3.2 Kernel 파라메터 확인 및 변경

아래 명령어를 통해 nmi_watchdog 파라메터 확인

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# sysctl -a|grep nmi_watchdog
kernel.nmi_watchdog = 1

------------------------------------------------------------------------------------------------------------------------------

해당 값이 0이라면 동작하지 않으므로 변경 필요
sysctl.conf
을 편집하여 해당 값을 추가하고 “sysctl –w”로 적용한다

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# vim /etc/sysctl.conf
kernel.nmi_watchdog = 1

[root@vRH6x ~]# sysctl -w

------------------------------------------------------------------------------------------------------------------------------

 

3.3 kdump.conf 설정

1) 생성 위치 지정

raw <partition>
raw <
블럭 디바이스
>
path <path>
nfs <nfs
마운트 경로
>
net <nfs
마운트 경로>    - nfs 이용

nfs4 <nfs
마운트 경로>   - nfs4를 이용 (RHEL 6.3 이상)
ssh <user@server>
net <user@server>       - ssh
이용

파일시스템 타입 <LABEL>
파일시스템 타입
<UUID>
파일시스템 타입 <블럭 디바이스>

 

2) 덤프레벨 (X 표시된 항목은 Dump 발생 시 수집되지 않음)

                dump | zero | cache|cache  | user | free
               level | page | page |private| data | page
              -------+------+------+-------+------+------
                   0 |      |      |       |      |
                   1 |  X   |      |       |      |
                   2 |      |  X   |       |      |
                   3 |  X   |  X   |       |      |
                   4 |      |  X   |  X    |      |
                   5 |  X   |  X   |  X    |      |
                   6 |      |  X   |  X    |      |
                   7 |  X   |  X   |  X    |      |
                   8 |      |      |       |  X   |
                   9 |  X   |      |       |  X   |
                  10 |      |  X   |       |  X   |
                  11 |  X   |  X   |       |  X   |
                  12 |      |  X   |  X    |  X   |
                  13 |  X   |  X   |  X    |  X   |
                  14 |      |  X   |  X    |  X   |
                  15 |  X   |  X   |  X    |  X   |
                  16 |      |      |       |      |  X
                  17 |  X   |      |       |      |  X
                  18 |      |  X   |       |      |  X
                  19 |  X   |  X   |       |      |  X
                  20 |      |  X   |  X    |      |  X
                  21 |  X   |  X   |  X    |      |  X
                  22 |      |  X   |  X    |      |  X
                  23 |  X   |  X   |  X    |      |  X
                  23 |  X   |  X   |  X    |      |  X
                  24 |      |      |       |  X   |  X
                  25 |  X   |      |       |  X   |  X
                  26 |      |  X   |       |  X   |  X
                  27 |  X   |  X   |       |  X   |  X
                  28 |      |  X   |  X    |  X   |  X
                  29 |  X   |  X   |  X    |  X   |  X
                  30 |      |  X   |  X    |  X   |  X
                  31 |  X   |  X   |  X    |  X   |  X

0 – Full Dump
31 – Small Dump

 

3) 덤프 실패 시 취할 액션

default reboot                         - 재부팅(기본)
default halt                            -
시스템 halt 된 후 덤프 시도

default poweroff                      -
시스템 종료
default shell                            - shell
이 수행되며, 수동으로 덤프 시도 가능, 종료 시 리부팅
default mount_root_run_init         - root
파일시스템을 마운트 후 init을 수행.
                                            init
스크립트는 덤프를 /var/crash에 저장 시도

 

4) 그 외 옵션

link_delay <seconds>
-
혹 네트워크 초기화가 늦는 경우를 대비하여 덤프를 생성 후 전송 전 일정시간 대기

kump_post <binary 또는 script>
-
덤프 생성 프로세스 완료 후 사용자가 지정한 실행파일이나 스크립트를 실행

kdump_pre <binary 또는 script>
-
덤프 생성 프로세스 이전에 사용자가 지정한 실행 파일이나 스크립트 실행

extra_bins <binaries 또는 scripts>
- kdump initrd
에 실행 파일들이나 스크립트들을 포함

extra_modules <module(s)>
- kdump initrd
에 로드하고자하는 확장 커널 모듈에 대한 정의. 모듈들은 공백으로 구분

debug_mem_level <0-3>
- kdump
스크립트 실행 시 디버그 모드를 활성화

  kdump
스크립트 수행할 때 메모리의 상태를 실시간으로 출력
  Redhat
권고 값으로 시스템을 설정 후 테스트 시 사용하면 kdump 메모리의 적정량 확인 가능

 

------------------------------------------------------------------------------------------------------------------------------

NOTE: VMware 환경에서 RHEL 6.4 kdump 구동을 위한 옵션 설정

[root@vRH6 ~]# vim /etc/kdump.conf

path /var/crash
core_collector makedumpfile -c --message-level 1 -d 31

 

NOTE: Hyper-V 환경에서 RHEL 6.4 kdump 구동을 위한 옵션 설정

[root@vRH6x ~]# vim /etc/kdump.conf

path /var/crash
core_collector makedumpfile -c --message-level 1 -d 31
extra_modules ata_piix sr_mod sd_mod
blacklist hv_vmbus hv_storvsc hv_utils hv_netvsc hid-hyperv
options ata_piix prefer_ms_hyperv=0
disk_timeout 100

------------------------------------------------------------------------------------------------------------------------------

 

4. 서비스 구동 및 상태 확인

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# service kdump start
No kdump initial ramdisk found.                                   [
WARNING
]
Rebuilding /boot/initrd-2.6.32-358.el6.x86_64kdump.img
Starting kdump:                                                       [ 
OK  ]
[root@vRH6x ~]# chkconfig kdump on
[root@vRH6x ~]# chkconfig --list |grep kdump

kdump          0:off     1:off     2:on     3:on     4:on     5:on     6:off
[root@vRH6x ~]# echo c > /proc/sysrq-trigger

Connection closed by foreign host.

------------------------------------------------------------------------------------------------------------------------------

덤프 진행 시 원격 연결은 종료되고, 시스템(콘솔)은 응답 없음 상태로 진입
vmcore
생성이 완료되면 시스템이 재부팅 됨.

 

리부팅이 완료되면 지정했던 위치에 생성된 덤프를 확인할 수 있음

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# cd /var/crash/
[root@vRH6x crash]# ls
127.0.0.1-2013-12-07-01:51:22
[root@vRH6x 127.0.0.1-2013-12-07-01:51:22]# ls
vmcore  vmcore-dmesg.txt

------------------------------------------------------------------------------------------------------------------------------


원격 디스크/스토리지에 저장 (NFS)

1. NFS 서버에서 공유 스토리지 구성을 확인 (인증/권한/방화벽 설정 확인 필요)

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# service nfs start
Starting NFS services:                                                [ 
OK 
]
Starting NFS quotas:                                                 [ 
OK 
]
Starting NFS mountd:                                                [ 
OK 
]
Stopping RPC idmapd:                                               [ 
OK 
]
Starting RPC idmapd:                                                [ 
OK 
]
Starting NFS daemon:                                               [ 
OK  ]

[root@vRH6x ~]# chkconfig  nfs on

[root@vRH6x ~]# chkconfig --list |grep nfs
nfs               0:off     1:off     2:on     3:on     4:on     5:on     6:off
nfslock           0:off     1:off     2:off     3:on     4:on     5:on     6:off

[root@vRH6x tmp]# vim /etc/exports
/tmp/kdump 192.168.0.*(rw,sync,no_root_squash)

[root@vRH6x tmp]# exportfs -a

[root@vRH6x tmp]# chmod 777 kdump

[root@vRH6x tmp]# ls –al
drwxrwxrwx.  2 root root 4096 Dec  8 01:18 kdump

----------------------------------------------------------------------------------------------------------------------------- 

 

2. Linux에서 원격 스토리지 연결 및 쓰기 가능 상태 확인

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6 mnt]# showmount -e 192.168.0.16
Export list for 192.168.0.16:
/tmp/kdump 192.168.0.*,192.168.0.0

[root@vRH6 mnt]# mount -t nfs 192.168.0.16:/tmp/kdump /mnt/kdump

[root@vRH6x mnt]# ls –al
drwxrwxrwx.  2 root root 4096 Dec  8 01:18 kdump

------------------------------------------------------------------------------------------------------------------------------

 

3. kdump.conf 파일에서 덤프 저장 위치 설정/변경

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x ~]# vim /etc/kdump.conf

nfs 192.168.0.16:/tmp/kdump
path /RHEL-Kdump
core_collector makedumpfile -c --message-level 1 -d 31

------------------------------------------------------------------------------------------------------------------------------

 

4. kdump 서비스를 재시작하여 구성한 설정 적용

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6 mnt]# service kdump restart
Stopping kdump:                                                                [ 
OK  ]
Detected change(s) the following file(s):

  /etc/kdump.conf
Rebuilding /boot/initrd-2.6.32-358.el6.x86_64kdump.img
Starting kdump:                                                                 [ 
OK  ]

[root@vRH6x ~]# echo c > /proc/sysrq-trigger

Connection closed by foreign host.

------------------------------------------------------------------------------------------------------------------------------

덤프 진행 시 원격 연결은 종료되고, 시스템(콘솔)은 응답 없음 상태로 진입
vmcore
생성이 완료되면 시스템이 재부팅 됨.

 

리부팅이 완료되면 지정했던 위치에 생성된 덤프를 확인할 수 있음

------------------------------------------------------------------------------------------------------------------------------

[root@vRH6x tmp]# cd kdump
[root@vRH6x kdump]# ls
RHEL-Kdump

[root@vRH6x kdump]# cd RHEL-Kdump/
[root@vRH6x RHEL-Kdump]# ls
192.168.0.5-2013-12-08-01:54:56

[root@vRH6x RHEL-Kdump]# cd 192.168.0.5-2013-12-08-01\:54\:56/
[root@vRH6x 192.168.0.5-2013-12-08-01:54:56]# ls
vmcore  vmcore-dmesg.txt

------------------------------------------------------------------------------------------------------------------------------

 

iLONMI Button이용 Kdump 생성

1. RHEL 6 - sysctl.conf 파일에 옵션 추가 설정

/etc/sysctl.conf:
panic_on_io_nmi = 1

 

2. RHEL 5 이하 - iLO wdt 드라이버 설치 필요.

HP iLO2/iLO3/iLO4 Watchdog Timer KMOD for Red Hat Enterprise Linux

 

3. iLODiagnostics 항목의 NMI Button을 클릭

 

참조문헌

Linux kdump에 대한 이해
http://www.openseed.co.kr/blog/?p=19

Troubleshooting kernel crashes, system hangs, or system reboots with kdump
https://access.redhat.com/site/solutions/6038

Documentation for Kdump - The kexec-based Crash Dumping Solution
https://www.kernel.org/doc/Documentation/kdump/kdump.txt

Chapter 29. The kdump Crash Recovery Service
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-kdump.html

Can't use kdump or kexec for Linux virtual machines on Hyper-V
http://support.microsoft.com/kb/2858695/en

 

How to Setup kdump Via a Network nfs Share and ILO Hot Keys
http://h10025.www1.hp.com/ewfrf/wc/document?docname=c03261562&cc=kr&dlc=en&lc=en

Advisory: (Revision) Linux - A Generated NMI Using the NMI Button or Virtual NMI Button From Integrated Lights-Out 3 (ILO 3) / Integrated Lights-Out 4 (ILO 4) Does Not Initiate Kdump on Linux

http://h20566.www2.hp.com/portal/site/hpsc/template.PAGE/public/kb/docDisplay/?sp4ts.oid=4194735&spf_p.tpst=kbDocDisplay&spf_p.prp_kbDocDisplay=wsrp-navigationalState%3DdocId%253Demr_na-c02702542-2

 


반응형