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