まずは、エラーの内容を確認しよう
まずは、エラーの内容を確認しましょう。確かに上記のように起動できていないようなので、シスログのmessage をダンプしてみます。
$ cat /var/log/messages|grep kdump
...
Aug 5 06:12:02 exmplehost kdumpctl: No memory reserved for crash kernel.
Aug 5 06:12:02 exmplehost kdumpctl: Starting kdump: [FAILED]
Aug 5 06:12:02 exmplehost systemd: kdump.service: main process exited, code=exited, status=1/FAILURE
Aug 5 06:12:02 exmplehost systemd: Unit kdump.service entered failed state.
...
|
起動時刻から、上記のエラーメッセージが、kdump起動失敗時の出力情報のようです。
No memory reserved for crash kernel.
と出力されていますから、単純に「カーネルクラッシュ時のメモリがありませんよ・・・・」ぐらいの感じでしょうか。
そのほか、色々確認してみても、どうも上記のエラーメッセージぐらいしか、kdump起動失敗時の出力情報は無いようです。
No memory reserved for crash kernel.の対処
先の簡単な英訳に従えば、カーネルクラッシュのためのメモリを確保してあげれば良いだけのようです。
GRUB(GRand Unified Bootloader) のコマンドラインの引数に カーネルクラッシュのためのメモリ設定があります。
以下は、その設定ファイル(/etc/default/grub) の変更イメージです。
$ vi /etc/default/grub
...
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=jp106 rd.lvm.lv=centos/root crashkernel=128M rhgb quiet"
...
|
上記のように crashkernel=auto → crashkernel=128M へ変更しただけです。
編集を終えたら、grub2-mkconfig にて、最新のgrub設定ファイルを生成します。
$ grub2-mkconfig -o /boot/grub2/grub.cfg
|
最新のgrub設定ファイルを生成しおえたら、システムリブートします。
$ reboot
|
これで、再度、kdumpの状態を確認してみてください。
以下のように起動できていると思います。
$ systemctl status kdump.service
kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled)
Active: active (exited) since 火 2014-08-05 06:12:02 JST; 2h 17min ago
Process: 1260 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 1260 (code=exited, status=1/FAILURE)
CGroup: /system.slice/kdump.service
8月 05 06:12:01 exmplehost.sakura.ne.jp systemd[1]: Starting Crash recovery...
8月 05 06:12:02 exmplehost.sakura.ne.jp kdumpctl[1260]: kexec: loaded kdump kernel
8月 05 06:12:02 exmplehost.sakura.ne.jp kdumpctl[1260]: Starting kdump: [OK]
8月 05 06:12:02 exmplehost.sakura.ne.jp systemd[1]: Started Crash recovery kernel arming.
Hint: Some lines were ellipsized, use -l to show in full.
|
これは、おそらくは、さくらのVPSの1Gメモリプランだったから?かもしれません。
メモリが少ないと、自動的にkdumpは、実行しないというのを聞いたことがあります。おそらく、そのために autoでは実行しなかったのではないかと思います。
確かに、上記のようにスタティックにメモリ量を指定すれば、kdumpは動作しますが、kdump(カーネルクラッシュ)のためのメモリは、完全に別に確保されるため、利用可能なメモリは、先の例でいうと 128 MB減ることになります。
実際に、kdumpが起動に失敗していた状態と、起動に成功した状態でのメモリについては、以下のようになりました。
$ free
total used free shared buffers cached
Mem: 1017864 389936 627928 6700 1444 252680
-/+ buffers/cache: 135812 882052
Swap: 2129916 0 2129916
$ free
total used free shared buffers cached
Mem: 886792 233284 653508 5856 10936 96792
-/+ buffers/cache: 125556 761236
Swap: 2129916 0 2129916
|
きれいに 128MB 程度が利用可能な全メモリ量減っているがわかるかと思います。
このように少ないメモリしかない場合においては、kdumpを起動させることで、全体のメモリ量が枯渇しかねないことを十分に考慮の上で、kdumpを動かす必要があるかと思います。
あくまで、個人的な見解ですが、
せめて 4GB以上のメモリがないサーバーにおいて、kdumpを起動することで、かえってメモリの枯渇を生み、システム的な不安定を生じかねないとも思います。
また、kdumpがカーネルクラッシュのダンプ情報であることから、VPSなどのレンタルサーバーにおいては、どれほどの意味があるのか?も正直はかりかねるところでもあります。
いずれにせよ、この記事が、上記の問題で困りの方の参考になればうれしく思います。
コメントを投稿 :