Jun 8 00:08:28 localhost kdumpctl: No memory reserved for crash kernel.
Jun 8 00:08:28 localhost kdumpctl: Starting kdump: [FAILED]
Jun 8 00:08:28 localhost systemd: kdump.service: main process exited, code=exited, status=1/FAILURE
Jun 8 00:08:28 localhost systemd: Unit kdump.service entered failed state.
Jun 8 00:08:28 localhost systemd: kdump.service failed.
kdumpサービスの状態を確認してもエラー以下のエラーが出力されています。
# /usr/bin/systemctl status kdump.service
Unit kdump.service-usr-bin-systemctl.service could not be found.
Unit status.service could not be found.
●kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since 木 2017-06-01 00:00:28 JST; 1 day 22h ago
Process: 1006 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE)
Main PID: 1006 (code=exited, status=1/FAILURE)
6月 01 00:00:16 localhost.localdomain systemd[1]: Starting Crash recovery kernel arming...
6月 01 00:00:28 localhost.localdomain kdumpctl[1006]: No memory reserved for crash kernel.
6月 01 00:00:28 localhost.localdomain kdumpctl[1006]: Starting kdump: [FAILED]
6月 01 00:00:28 localhost.localdomain systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE
6月 01 00:00:28 localhost.localdomain systemd[1]: Failed to start Crash recovery kernel arming.
6月 01 00:00:28 localhost.localdomain systemd[1]: Unit kdump.service entered failed state.
6月 01 00:00:28 localhost.localdomain systemd[1]: kdump.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
原因
kdump 用のメモリが確保されていないのが主な原因です。
恐らく4G以上のメモリが搭載されていないと思われます。
crashkernel=auto オプションは、4 GB 以上の物理メモリーが搭載されていないとkdumpのメモリ確保は行われません。
(crashkernel=auto に関しては、後の記述を参照してください。)
kdump に使用するメモリは常に空けておかなくてはいけないけません。なぜならクラッシュは突然発生するからです。突然発生したとき空きのメモリがないと処理ができません。
無理やりメモリを確保したら、クラッシュしたときの状況証拠が壊れてしましますからね。無理やり作ったらクラッシュ時のメモリではなくなり、ダンプを取る意味が薄れてしまいます。
(何かのメモリを追い出さなくてはならないため)
対処
可能ならシステムに多く(4G以上)のメモリを搭載します。しかし(仮想環境で大量に linux 基盤を稼働する場合など)それができない場合は設定の追加が必要です。
RHEL 7.2の場合
システムに4G未満のメモリしかなく、かつkdumpを取得したい場合は以下の設定を行います。
(1)
【ファイル】
/etc/default/grub
【変更内容】
変更前:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
変更後:
GRUB_CMDLINE_LINUX="crashkernel=128M rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
(2)grub再構築
# grub2-mkconfig -o /boot/grub2/grub.cfg
(3)リブート
#shutdown -r
確認方法
(1)コマンドでkdumpの status を確認すると、正常に起動していることが分かります。
# /usr/bin/systemctl status kdump.service
Unit kdump.service-usr-bin-systemctl.service could not be found.
Unit status.service could not be found.
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: active (exited) since 金 2017-06-01 00:00:00 JST; 25s ago
Process: 1002 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 1002 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/kdump.service
6月 01 00:00:00 localhost.localdomain systemd[1]: Starting Crash recovery k...
6月 01 00:00:00 localhost.localdomain kdumpctl[1002]: kexec: loaded kdump k...
6月 01 00:00:00 localhost.localdomain kdumpctl[1002]: Starting kdump: [OK]
6月 01 00:00:00 localhost.localdomain systemd[1]: Started Crash recovery ke...
Hint: Some lines were ellipsized, use -l to show in full.
(2)実際にクラッシュを発生させてみます。(保存されていないデータがすべてロストするので、テスト環境で十分に注意して実行してください。)
#echo c > /proc/sysrq-trigger
(3)デフォルト設定ではカーネルダンプが記録された後、自動的に再起動されます。
以下の場所にカーネルダンプが記録されています。
/var/spool/abrt/vmcore-xxxxxxxxxxxxxx
(4)以下の場所にクラッシュ時の情報が記録されています。解析のヒントとなります。
var/spool/abrt/oops-YYYY-MM-DD-hh:ss:mm-xxxxxxx
(*)本ページは Redhat Enterprise Linux 7.2以後を想定しています。最終更新日:2017/07/12
[ホーム] - [ Redhat Linux 7 FAQ 一覧]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018