2.2. コマンドライン上での kdump の設定

2.2.1. メモリー使用量の設定

kdump カーネル用に予約されるメモリーは必ずシステムの起動時にその予約が行われます。つまり、メモリーのサイズはシステムのブートローダー設定で指定されています。このセクションでは GRUB2 ブートローダーを使用している AMD64 および Intel 64 のシステムでの予約メモリーサイズの変更方法、および zipl を使用している IBM Power System のサーバーでの予約メモリーサイズの変更方法について説明します。

手順2.1 GRUB2 でのメモリーオプションの変更

  1. root になり、vimGedit などのプレーンテキストエディターを使って/etc/default/grub 設定ファイルを開きます。
  2. GRUB_CMDLINE_LINUX で始まる行を探します。
    GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet"
    強調表示している crashkernel= オプションの部分で予約メモリーの設定を行います。
  3. crashkernel= オプションの値を設定したいメモリーサイズに変更します。たとえば、128 MB に設定する場合は次のように変更します。
    crashkernel=128M

    注記

    起動時にシステムで使用できる RAM のサイズに応じてオフセットや複数のメモリーサイズを指定するなど、予約メモリーの設定方法は数種類あります。このセクションではこうした設定方法について説明しています。
    ファイルを保存してからエディターを終了します。
  4. 変更を行った default ファイルを使って GRUB2 設定を再生成します。BIOS ファームウェアを使用しているシステムなら次のコマンドを実行します。
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    UEFI ファームウェアを使用しているシステムの場合は次のコマンドを実行します。
    # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
上記の手順を完了するとブートローダーが再構成され、次回の再起動から設定ファイルに指定したメモリーサイズが予約されるようになります。

手順2.2 zipl でのメモリーオプションの変更

  1. root になり、vimGedit などのプレーンテキストエディターを使って/etc/zipl.conf 設定ファイルを開きます。
  2. parameters= セクションを探し、crashkernel= パラメーターを編集します (このパラメーターがない場合は追加する)。たとえば 128 MB のメモリー予約の場合は次のように編集します。
    crashkernel=128M

    注記

    起動時にシステムで使用できる RAM のサイズに応じてオフセットや複数のメモリーサイズを指定するなど、予約メモリーの設定方法は数種類あります。このセクションではこうした設定方法について説明しています。
    ファイルを保存してからエディターを終了します。
  3. zipl 設定を再生成します。
    # zipl

    注記

    zipl コマンドにオプションを何も付けずに実行するとデフォルト値が使用されます。使用できるオプションについては zipl(8) の man ページをご覧ください。
上記の手順を完了するとブートローダーが再構成され、次回の再起動から設定ファイルに指定したメモリーサイズが予約されるようになります。
crashkernel= オプションの指定方法は数種類あります。auto の値を使用すると「kdump メモリー要件」 に記載したガイドラインに沿ってシステムのメモリー総合計に基づいた予約メモリーが自動設定されます。auto 値を特定のメモリーサイズに置き換えるとその動作が変更されます。たとえば、128 MB のメモリーを予約させる場合は次のように指定します。
crashkernel=128M
搭載しているメモリーの合計サイズに応じて予約メモリーのサイズが変化するよう設定することもできます。可変のメモリー予約を設定する場合の構文は crashkernel=<range1>:<size1>,<range2>:<size2> になります。例を示します。
crashkernel=512M-2G:64M,2G-:128M
上記の例の場合、システムメモリーの合計サイズが 512 MB 以上 2 GB 未満の場合は 64 MB のメモリー、システムメモリーの合計サイズが 2 GB 以上の場合は 128 MB のメモリーが kdump 用に予約されます。
一部のシステムでは特定の固定オフセットをつけてメモリーの予約を行う必要があるシステムがあります。オフセットを設定すると予約メモリーはそこから開始されます。予約メモリーにオフセットを設ける場合は次の構文を使用します。
crashkernel=128M@16M
上記の例の場合、kdump は 128 MB のメモリー予約を 16 MB (物理アドレス 0x01000000) から開始することになります。オフセットパラメーターを 0 に設定する、または完全に省略すると kdump により自動的にオフセットが設けられます。前述の可変の予約メモリーを設定する場合にもこの構文を使用することができます。オフセット指定は必ず一番後ろに付けます (例、crashkernel=512M-2G:64M,2G-:128M@16M)。

2.2.2. kdump タイプの設定

カーネルクラッシュがキャプチャーされたら、そのコアダンプをファイルとしてローカルのファイルシステムに保存するか、デバイスに直接書き込み NFS (Network File System) や SSH (Secure Shell) などのプロコルを使ってネットワーク経由で送信することができます。現在、設定できるのはいずれかひとつのオプションのみで、デフォルトのオプションは vmcore ファイルをローカルファイルシステムの /var/crash/ ディレクトリーに保存します。このオプションを変更する場合は root になりテキストエディターで /etc/kdump.conf 設定ファイルを開き以下の説明に従ってオプションを変更します。
コアダンプの保存先のローカルディレクトリーを変更する場合は #path /var/crash 行の先頭にあるハッシュ記号 (#) を取り除き、値を変更先のディレクトリーパスに置き換えます。
path /usr/local/cores

重要

Red Hat Enterprise Linux 7 では kdump のダンプ出力先として path ディレクティブで指定されているディレクトリーが kdump systemd サービスの起動時に存在していなければなりません。起動時にこのディレクトリーが存在していないとサービスの起動は失敗します。この動作は Red Hat Enterprise Linux の旧リリースと異なります。旧リリースではサービスの起動時にこのディレクトリーが存在していないと自動的に作成されていました。
また、ファイルを別のパーティションに書き込みたい場合は #ext4 行の先頭のハッシュ記号 (#) を取り除き、値を変更先のディレクトリーパスに置き換えます。値にはデバイス名 (#ext4 /dev/vg/lv_kdump 行)、ファイルシステムのラベル (#ext4 LABEL=/boot 行)、UUID (#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 行) のいずれかを使用できます。例を示します。
ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937

重要

ストレージデバイスの指定は LABEL= または UUID= を使用することをお勧めします。/dev/sda3 などディスクデバイス名は再起動を行うと同じ名前が使用されない恐れがあります。永続的なディスクデバイスの命名については Red Hat Enterprise Linux 7 ストレージ管理ガイド を参照してください。

重要

s390x ハードウェア上の DASD にダンプする場合には、続行する前に /etc/dasd.conf でダンプサービスが正しく指定されている必要があります。
ダンプをデバイスに直接書き込む場合は #raw /dev/vg/lv_kdump 行の先頭にあるハッシュ記号 (#) を取り除き、値をダンプ出力先のデバイス名に置き換えます。例を示します。
raw /dev/sdb1
NFS プロトコルを使ってリモートのマシンにダンプを保存する場合は #nfs my.server.com:/export/tmp 行の先頭にあるハッシュ記号 (#) を取り除き、値を有効なホスト名とディレクトリーパスに置き換えます。
nfs penguin.example.com:/export/cores
SSH プロトコルを使ってリモートのマシンにダンプを保存する場合は #ssh user@my.server.com 行の先頭にあるハッシュ記号 (#) を取り除き、値を有効なユーザー名とホスト名に置き換えます。設定に SSH キーも含める場合は #sshkey /root/.ssh/kdump_id_rsa 行の先頭にあるハッシュ記号 (#) を取り除き、値をダンプ出力先となるサーバー上で有効なキーの場所に変更します。
ssh john@penguin.example.com
sshkey /root/.ssh/mykey
SSH サーバーの設定方法およびキーベースの認証設定については Red Hat Enterprise Linux 7 システム管理者のガイド を参照してください。
対応しているダンプ出力先と非対応のダンプ出力先のタイプ別一覧は 表B.3「対応している kdump のダンプ出力先」 を参照してください。

2.2.3. コアコレクターの設定

vmcore ダンプファイルのサイズを小さくするために、kdump では外部アプリケーション (コアコレクター) を指定してデータを圧縮、必要に応じて関連性のない情報をすべて除外することができます。現在、完全対応しているコアコレクターは makedumpfile のみになります。
root になりテキストエディターで /etc/kdump.conf 設定ファイルを開きます。#core_collector makedumpfile -l --message-level 1 -d 31 行の先頭にあるハッシュ記号 (#) を取り除き、以下の説明に従ってコマンドラインのオプションを編集しコアコレクターを使用できるようにします。
ダンプファイルの圧縮を有効にするため -c パラメーターを追加します。例を示します。
core_collector makedumpfile -c
ダンプから特定のページを除外するため -d value を追加します。value には 表B.4「対応しているフィルターレベル」 で説明しているように除外対象ページに該当する値の合計を入力します。ゼロで埋められたページと未使用ページを除外する場合は次のようになります。
core_collector makedumpfile -d 17 -c
使用できるオプションの一覧については makedumpfile(8) の man ページをご覧ください。

2.2.4. デフォルト動作の設定

kdump「kdump タイプの設定」 で指定したダンプ出力先でのコアダンプの作成に失敗すると、デフォルトでは root ファイルシステムがマウントされコアをローカルに保存しようとします。この動作を変更する場合は root になりテキストエディターで /etc/kdump.conf 設定ファイルを開きます。#default shell 行の先頭にあるハッシュ記号 (#) を取り除き、表B.5「対応しているデフォルトの動作」 の説明に従って値を目的の動作に変更します。
例:
default reboot

2.2.5. サービスの有効化

起動時に kdump デーモンを開始させるには root になりシェルプロンプトで以下を入力します。
systemctl enable kdump.service
multi-user.target のサービスが有効になります。同様に systemctl stop kdump を使用するとこのサービスが無効になります。現在のセッションでサービスを開始する場合は root になり次のコマンドを使用します。
systemctl start kdump.service

重要

Red Hat Enterprise Linux 7 では kdump のダンプ出力先として指定されているディレクトリーが kdump systemd サービスの起動時に存在していなければなりません。起動時にこのディレクトリーが存在していないとサービスの起動は失敗します。この動作は Red Hat Enterprise Linux の旧リリースと異なります。旧リリースではサービスの起動時にこのディレクトリーが存在していないと自動的に作成されていました。
systemd およびサービスの設定方法全般については Red Hat Enterprise Linux 7 システム管理者のガイド を参照してください。