kdumpの設定とcoreの解析方法

kdumpはLinux Kernelのクラッシュ時にダンプを取得するツールです。
使用するにはkexec-toolsが必要となりますので、下記をインストールします。

# yum install kexec-tools

kdumpの設定はkdump.confにて行います。
RHEL6.5以降は圧縮速度の早いLZO圧縮が使用可能なため、makedumpfileは「c」から「l」オプションに変更します。
※詳細はmakedumpfileのmanで確認できます。

# vi /etc/kdump.conf
core_collector makedumpfile -c --message-level 1 -d 31
↓
core_collector makedumpfile -l -d 31

メモリが4GB未満の場合は下記の設定が追加で必要です。

# vi /etc/grub.conf
crashkernel=auto
↓
crashkernel=128M

設定を反映させるため、kdumpを自動起動する設定にしてシステムを再起動します。

# chkconfig kdump on
# reboot

確認します。

# service kdump status
kdump is operational
# grep Crash /proc/iomem
03000000-0affffff : Crash kernel
# cat /sys/kernel/kexec_crash_size
134217728

ダンプファイルを取得します。

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

上記で失敗する場合は、カーネルパラメータのsysrqを有効にしてから実行します。

# vi /etc/sysctl.conf
kernel.sysrq = 1
# sysctl -p
# echo c > /proc/sysrq-trigger

再起動後、/var/crash 配下にダンプファイルが生成されていることを確認します。

# cd /var/crash/127.0.0.1-2015-07-07-21\:36\:43/
# ls -l
-rw------- 1 root root 17110008 7月 7 21:36 2015 vmcore
-rw-r--r-- 1 root root 93111 7月 7 21:36 2015 vmcore-dmesg.txt
# file vmcore
vmcore: data

ダンプファイルを解析するため、kernel-debuginfoをインストールします。

RHEL6 の場合でしたら、下記からkernel-debuginfoをダウンロードします。 ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/x86_64/Debuginfo/

または
http://debuginfo.centos.org/

# wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-2.6.32-431.el6.x86_64.rpm
# wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-common-x86_64-2.6.32-431.el6.x86_64.rpm

ダウンロードしたファイルをインストールします。

# rpm -ivh kernel-debuginfo*2.6.32-431.el6.x86_64.rpm

ダンプファイルを確認します。

# crash /boot/System.map-2.6.32-431.el6.x86_64 \
/usr/lib/debug/lib/modules/2.6.32-431.el6.x86_64/vmlinux \
/var/crash/127.0.0.1-2015-07-07-21\:36\:43/vmcore
crash 6.1.0-5.el6

Copyright (C) 2002-2012 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter \"help copying\" to see the conditions.
This program has absolutely no warranty. Enter \"help warranty\" for details.
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type \"show copying\" and \"show warranty\" for details. This GDB was configured as \"x86_64-unknown-linux-gnu\"… SYSTEM MAP: /boot/System.map-2.6.32-431.el6.x86_64 DEBUG KERNEL: /usr/lib/debug/lib/modules/2.6.32-431.el6.x86_64/vmlinux (2.6.32-431.el6.x86_64) DUMPFILE: vmcore [PARTIAL DUMP] CPUS: 1 DATE: Wed Jul 7 21:36:32 2015 UPTIME: 00:09:27 LOAD AVERAGE: 0.00, 0.03, 0.02 TASKS: 129 NODENAME: ks-cl01 RELEASE: 2.6.32-431.el6.x86_64 VERSION: #1 SMP Sun Nov 10 22:19:54 EST 2013 MACHINE: x86_64 (1496 Mhz) MEMORY: 511.4 MB PANIC: \"Oops: 0002 [#1] SMP \" (check log for details) PID: 1583 COMMAND: \"bash\" TASK: ffff88001fbaa040 [THREAD_INFO: ffff88001d0ba000] CPU: 0 STATE: TASK_RUNNING (PANIC)
crash> quit

コメントは受け付けていません。