RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'kdump'에 해당되는 글 1
2010.10.05  RHEL5 kdump 설정하기  1

1. kdump?

kdump 는 커널 crash 가 일어났을 때 메모리 덤프를 해주는 역할로 구 버전의 diskdump netdump kexec kdump로 대체되었습니다. kdump에서는 raw device, disk partition, nfs, ssh 등을 지원합니다.

 

2. kexec / kdump

1) kexec 의 역할

 kexec는 새로운 커널이 BIOS를 통하지 않고 재부팅이 될 수 있게 해 줍니다. kexec는 부팅시에 메모리에(RAM)에 상주하게 되며 패닉(panic) 발생 시 현재 커널을 정지 시키고 새로운 커널(dump용 커널)을 동작시키는 역할을 합니다.

 

2) kdump의 역할

 /etc/kdump.conf 환경설정 파일을 가지고 있으며, 서버의 panic 상황을 지켜보는 역할을 합니다.

 

3. dump 생성 작동 단계

1) 시스템 패닉 발생.(System panics)

2) kdump 커널로 부팅

3) kdump initramfs 로딩 및 init 작동

4) /etc/kdump.conf에 덤프 타켓이 설정되어 있는지 확인( 5, 아니오 9)

5) /etc/kdump.conf설정에 따라 capture dump

6) capture가 정상적으로 완료 되었는지 확인 ( 12, 아니오 7)

7) /etc/kdump.conf 설정 중 default_action halt 일 경우 ( 14, 아니오 8)

8) /etc/kdump.conf 설정 중 default_action reboot 일 경우 ( 12, 아니오 9)

9) root filesystem을 마운트 한 뒤, pivot_root(change root file system), /sbin/init 진행

10) kdump 서비스 시작

11) capture core CP/proc/vmcore /var/crash/<host-addr>-<date>/vmcore로 진행

12) 재부팅

13) shell drop

14) 시스템 다운(정지)

 

kdump가 설정되면, 패닉 발생 시 덤프를 뜨기 위한 비상용 커널이 미리 메모리에 올라가 있다가, 패닉 발생시 해당 비상 커널로 제어권이 넘어가고(실제로는 특수한 형태의 재부팅이 이루어집니다) 물리메모리(Raw memory)를 읽어 저장하게 됩니다.

 

4. kdump 설정법

1) /etc/kdump.conf

#raw /dev/sda5

#ext3 /dev/sda3

#ext3 LABEL=/boot

#ext3 UUID=03138356-5e61-4ab3-b58e-27507ac41937

#net my.server.com:/export/tmp

#net user@my.server.com

#path /var/crash

#core_collector makedumpfile -c --message-level 1

#link_delay 60

#kdump_post /var/crash/scripts/kdump-post.sh

#extra_bins /usr/bin/lftp

#extra_modules gfs2

#options modulename options

#default shell

 

옵션 설명

1) raw device dump 받기

raw <devicename>

 

2) disk dump 받기

     ext3 <devicename>

     ext3 LABEL=라벨명

     ext3 UUID=f15759be-89d4-46c4-9e1d-1b67e5b5da82

 

생성 디렉토리를 변경

path /원하는 디렉토리명

 

3) NETWORK를 통한 dump file 생성

     NFS설정

net <nfs server>:</nfs/mount>

 

     SSH설정

net <user>@<ssh server>

설정 이 후, service kdump propagate 명령어로 ssh keys를 생성

 

4) dump 파일 생성 옵션

core_collector makedumpfile -c --message-level 1

 vmcore를 대용량의 메모리를 FULL DUMP로 생성하게 되면, 오래 걸리기 때문에 확인 쓸모 없는 페이지를 빼고, 압축을 하여 시간을 단축 시키는 것이 좋다. 옵션 확인 방법은 /sbin/makedumpfile --help로 확인이 가능하다

-c : 각 페이지를 압축하는 옵션

-d : 특정 분석이 불필요한 페이지를 빼는 옵션(X표 있는 것은 제외되는 page)

 

Dump

zero

cache

cache

user

free

Level

page

page

private

data

page

0






1

X





2


X




4


X

X



8




X


16





X

31

X

X

X

X

X

, FULL DUMP를 위해서는 –d 0 옵션을 주어야 하며, -d 31는 가장 적은 양의 덤프 옵션이다.

–c, 옵션과 –d 옵션 적용 시에는 vmcore 생성하는 시간이 늘어날 수 있으니, 재부팅 이 후 빨리 원복이 되어야 하는 시스템에서는 제외 하는 것이 좋다.

 

아무것도 설정 안 했을 시, 기본으로 적용 되는 옵션

path /var/crash

core_collector --message-level 7

 

5) 커널 파라미터 설정

/etc/grub.conf

# grub.conf generated by anaconda

#

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux Client (2.6.17-1.2519.4.21.el5)

        root (hd0,0)

        kernel /boot/vmlinuz-2.6.17-1.2519.4.21.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M

        initrd /boot/initrd-2.6.17-1.2519.4.21.el5.img

 

crashkernel=128M@16M에서 x86시리즈에서는 32bit 64bit든 기본은 128M@16M으로 설정을 한다. 여기에서 128M RAM에 상주하는 용량이다. 기본 권고는 상 위와 같으나 메모리 용량이 클 경우에는 좀 달리한다. 메모리 용량이 256GB이상이거나 TB급일 경우에는 crashkernel=128M@32M로 설정하라는 access.redhat.com 권고가 있으니, vmcore 생성이 정상적이지 않을 경우에는 참조하여 변경 하도록 한다.

 

참조:https://access.redhat.com/kb/docs/DOC-2164 , https://access.redhat.com/kb/docs/DOC-31705

 

5. Daemon 구동

1) kdump daemon 서비스 등록

# chkconfig kdump on (혹은 chkconfig --level 345 kdump on)

 

2) kdump daemon 구동

# service kdump start

 

3) kdump daemon 정지

# service kdump stop

 

4) kdump daemon 상태 확인

# service kdump status

 

6. kdump 테스트 방법

1) Alt+ SysRq + C

/etc/sysctl.conf 에서 kernel.sysrq = 1 로 설정 후 sysctl -p로 활성화 이 후 사용 가능

      키보드에서 Alt + sysRq + C 키를 동시에 눌러서 패닉 유발.

      echo c > /proc/sysrq-trigger 명령어를 통해서 패닉 유발

 

2) NMI_WATCHDOG

서버 HANG 상태로 인하여, keyboard interrupts가 먹혀들지 않아 " Alt+ SysRq + C"로 패닉 유발이 되지 않을 때 셋팅

      /etc/grub.confnmi_watchdog=1(혹은 2) 파라미터를 설정

      (vmware의 경우)nmi 시그널을 보냄

 

3) NMI(Non maskable interrupt) button

H/W에서 지원하는 nmi 버튼을 이용 하기 위한 셋팅

      /etc/sysctl.conf kernel.unknown_nmi_panic = 1을 설정 후 활성화

      /etc/grub.confnmi_watchdog=1(혹은 2) 파라미터를 설정

      nmi 버튼을 누름

 

 

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31