7.2. kdump のインストールと設定
7.2.1. kdump のインストール
多くの場合、Red Hat Enterprise Linux 7 の新規インストールで kdump
サービスはデフォルトでインストールされます。グラフィカルインターフェイスまたはテキストインターフェイスを使用して対話形式でインストールする場合には、Anaconda インストーラーに kdump の設定画面があります。インストーラーの画面には kdump
というタイトルが付けられ、メイン画面の インストールの概要
からアクセスすることができます。kdump のメモリー要件の詳細は、「kdump メモリー要件」 を参照してください。インストーラーの kdump 設定画面は Red Hat Enterprise Linux 7 インストールガイド で説明しています。
Red Hat Enterprise Linux の以前のリリースでは Firstboot ユーティリティーで kdump の設定ができました。このユーティリティーはインストールの終了後、システムをはじめて再起動すると自動的に実行されていました。Red Hat Enterprise Linux 7.1 からは kdump の設定がインストーラー内に移動しています。
カスタムのキックスタートを使用したインストールなど一部のインストール方法では、デフォルトで kdump をインストールしない場合または有効にしない場合があります。このような場合に、kdump を追加でインストールするには root
で次のコマンドをシェルプロンプトから実行します。
#
yum install kexec-tools
お使いのシステムアーキテクチャー向けの kexec-tools パッケージが含まれるカスタムのリポジトリーか、アクティブなサブスクリプションがシステムにある場合に、上記のコマンドで kdump およびその他に必要なパッケージすべてが確実にインストールされます。
システムに kdump がインストールされているかわからない場合は rpm
を使うと確認できます。
$
rpm -q kexec-tools
この他、グラフィカルな設定ツールもあります。ただし上記のコマンドを使用した場合に、デフォルトではグラフィカルな設定ツールはインストールされません。「グラフィカルユーザーインターフェイスでの kdump の設定」 で説明されているように、グラフィカルな設定ツールをインストールする場合は次のコマンドを root
で実行します。
#
yum install system-config-kdump
Yum を使用した Red Hat Enterprise Linux 7 の新規パッケージのインストール方法はRed Hat Enterprise Linux 7 システム管理者のガイドを参照してください。
Red Hat Enterprise Linux 7.4 から、kdump
は Intel IOMMU
ドライバーをサポートしています。7.3 以前のバージョンのカーネルを実行する場合は、Intel IOMMU
のサポートを無効にすることを推奨します。
7.2.2. コマンドラインで kdump の設定
7.2.2.1. メモリー使用量の設定
kdump カーネル用に予約されるメモリーは必ずシステムの起動時にその予約が行われます。 つまり、メモリーのサイズはシステムのブートローダー設定で指定されています。
kdump カーネル用に割り当てるメモリーを指定するには、crashkernel=
オプションを必要な値に設定します。たとえば、128 MB のメモリーを予約するには、以下を使用します。
crashkernel=128M
AMD64 システム、Intel 64 システム、および IBM Power SYstems サーバーでは、GRUB2 ブートローダーを使用し、IBM Z では zipl を使用して、crashkernel=
オプションを変更する方法は、「カーネルコマンドラインパラメーターの設定」 を参照してください。
crashkernel=
オプションは、複数の方法で定義できます。「kdump メモリー要件」 で説明されているガイドラインに従い、auto
値を指定すると、システムの合計メモリーに基づいた、予約メモリーの自動設定が可能になります。メモリーサイズが大きいシステムでは、オペレーティングシステムに設定された上限まで、crashkernel=auto
オプションが指定されたアーキテクチャーに従って計算されます。
この動作を変更するには、auto
の値を特定のメモリー量に置き換えます。
crashkernel=
オプションは、特にメモリー量が少ないシステムで有用です。たとえば、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-:128 _M@16 _M
)。
7.2.2.2. kdump ターゲットの設定
カーネルクラッシュがキャプチャーされると、コアダンプはローカルファイルシステムのファイルとして保存したり、デバイスに直接書き込みしたり、NFS
(Network File System) または SSH
(Secure Shell) プロトコルを使用してネットワーク上で送信したりすることができます。現時点で設定できるのは、これらのオプションの 1 つのみです。デフォルトのオプションでは、vmcore
ファイルをローカルファイルシステムの /var/crash
ディレクトリーに保存します。
vmcore
ファイルをローカルファイルシステムの/var/crash/
ディレクトリーに保存するには、/etc/kdump.conf
ファイルを編集してパスを指定します。path /var/crash
オプションの
path /var/crash
は、kdump
がvmcore
ファイルを保存するファイルシステムパスを表します。注記-
/etc/kdump.conf
ファイルでダンプターゲットを指定すると、path は指定されたダンプ出力先に対する相対パスになります。 -
/etc/kdump.conf
ファイルでダンプターゲットを指定しない場合、パスはルートディレクトリーからの 絶対 パスを表します。
現在のシステムにマウントされている内容に応じて、ダンプターゲットと調整されたダンプパスが自動的に適用されます。
例7.1
kdump
ターゲット設定grep -v ^# etc/kdump.conf | grep -v ^$ ext4 /dev/mapper/vg00-varcrashvol path /var/crash core_collector makedumpfile -c --message-level 1 -d 31
ここでは、ダンプターゲットが指定され (
ext4/dev/mapper/vg00-varcrashvol
)、/var/crash
にマウントされており、path
オプションも/var/crash
に設定されるため、kdump
はvmcore
ファイルをvar/crash/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
行) のいずれかを使用できます。ファイルシステムタイプと、デバイス名、ラベル、UUID を希望の値に変更します。
- 注記
-
UUID 値を指定するための正しい構文は、
UUID="correct-uuid"`
とUUID=correct-uuid
の両方です。
以下に例を示します。
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 システム管理者のガイドを参照してください。
対応しているダンプ出力先と非対応のダンプ出力先のタイプ別一覧は、表7.3「対応している kdump のダンプ出力先」 を参照してください。
7.2.2.3. コアコレクターの設定
vmcore
ダンプファイルのサイズを小さくするために、kdump
では外部アプリケーション (core collector) を指定して、データの圧縮や必要に応じた関連性のないすべての情報の除外ができます。現在、完全サポートしているコアコレクターは makedumpfile
のみになります。
コアコレクターを有効にするには、root
として、テキストエディターで /etc/kdump.conf
設定ファイルを開いて、#core_collector makedumpfile -l --message-level 1 -d 31
の行頭にあるハッシュ記号 (#) を取り除き、以下の説明通りにコマンドラインのオプションを編集します。
ダンプファイルの圧縮を有効にするには、-l
パラメーターを追加します。以下に例を示します。
core_collector makedumpfile -l
ダンプから特定のページを除外するには、-d value
を追加します。value には 表7.4「サポートしているフィルターレベル」 で説明しているように、省略するページの値の合計を入力します。ゼロと未使用ページを除外する場合は次のようになります。
core_collector makedumpfile -d 17 -c
利用可能なオプションの完全なリストは、makedumpfile(8)
man ページを参照してください。
7.2.2.4. デフォルト動作の設定
デフォルトでは、kdump
は kexec
システムコールを使用し、再起動することなく 2 番目のカーネル (キャプチャーカーネル) で起動し、クラッシュしたカーネルメモリー (クラッシュダンプ またはvmcore) の内容をキャプチャーして、ファイルへ保存します。保存が成功すると、kdump
はマシンを再起動します。
ただし、kdump
が、「kdump ターゲットの設定」 で指定したダンプ出力先でコアダンプの作成に失敗すると、kdump
は、vmcore を保存せずにシステムを再起動します。この動作を変更する場合は root
として、テキストエディターで /etc/kdump.conf
設定ファイルを開きます。#default shell
の行頭にあるハッシュ記号 (#) を取り除き、表7.5「サポートしているデフォルトの動作」 の説明にしたがって値を目的の動作に変更します。
以下に例を示します。
default reboot
7.2.2.5. サービスの有効化
起動時に kdump
デーモンを開始するには、シェルプロンプトで root
として以下を入力します。
systemctl
enable
kdump.service
これにより、multi-user.target
のサービスが有効になります。同様に systemctl
disable
kdump
を入力すると kdump
が無効になります。現在のセッションでサービスを開始する場合は root
として、次のコマンドを使用します。
systemctl
start
kdump.service
Red Hat Enterprise Linux 7 では kdump の出力先として指定されているディレクトリーが kdump
systemd サービスの起動時に存在していなければなりません。この動作は、サービスの起動時にそのディレクトリーが存在しない場合に自動的に作成されていた Red hat Enterprise Linux の以前のリリースのものとは異なります。
systemd およびサービスの設定全般についてはRed Hat Enterprise Linux 7 システム管理者のガイドを参照してください。
7.2.3. グラフィカルユーザーインターフェイスでの kdump の設定
Kernel Dump Configuration ユーティリティーを起動するにはパネルから system-config-kdump
を入力します。図7.1「基本設定」 に示すウィンドウが表示されます。
このユーティリティーを使用すると kdump
の設定のほか、起動時にサービスを有効または無効にすることもできます。設定が完了したら をクリックして変更を保存します。認証が済んでいる場合を除きスーパーユーザーのパスワード入力が求められます。また、設定の変更を適用するにはシステムの再起動が必要な旨を示すメッセージが表示されます。
SELinux
が Enforcing モードで実行中の IBM Z または PowerPC システムでは、カーネルダンプ設定ユーティリティーを起動する前に kdumpgui_run_bootloader のブール値を有効にする必要があります。このブール値により、system-config-kdump が bootloader_t SELinux ドメインのブートローダーで実行できるようになります。このブール値を永続的に有効化するには、root として以下のコマンドを実行します。
# setsebool -P kdumpgui_run_bootloader 1
s390x ハードウェア上の DASD にダンプする場合には、続行する前に /etc/dasd.conf
でダンプサービスが正しく指定されている必要があります。
7.2.3.1. メモリー使用量の設定
基本設定
タブでは kdump
カーネル用に予約するメモリーサイズを設定できます。手動セッティング
のラジオボタンを選択し、新規の kdump メモリー
フィールドの横にある上矢印ボタンまたは下矢印ボタンをクリックして予約するメモリーサイズを増減させます。システムで使用できるメモリーの残量に応じて 使用可能なメモリー
フィールドが変化します。kdump のメモリー要件については、「メモリー要件」 を参照してください。
図7.1 基本設定
7.2.3.2. kdump ターゲットの設定
出力先
タブでは vmcore
ダンプの出力先を指定することができます。ダンプはローカルのファイルシステムにファイルとして保存するか、デバイスに直接書き込むか、NFS
(Network File System) や SSH
(Secure Shell) などのプロトコルを使用してネットワーク経由で送信することができます。
図7.2 出力先
ローカルのファイルシステムにダンプを保存する場合は ローカルファイルシステム
のラジオボタンを選択します。必要に応じて パーティション
のドロップダウンリストから別のパーティションを選択し、パス
フィールドで出力先ディレクトリーを選択して設定をカスタマイズすることもできます。
Red Hat Enterprise Linux 7 では kdump の出力先として指定されているディレクトリーが kdump
systemd サービスの起動時に存在していなければなりません。この動作は、サービスの起動時にそのディレクトリーが存在しない場合に自動的に作成されていた Red hat Enterprise Linux の以前のリリースのものとは異なります。
デバイスに直接ダンプを書き込む場合は Raw デバイス
ラジオボタンを選択し、目的の出力先デバイスをその横にあるドロップダウンリストから選択します。
ネットワーク接続経由で、リモートのマシンにダンプを送信する場合は ネットワーク
ラジオボタンを選択します。NFS
プロトコルを使用する場合は NFS
ラジオボタンを選択して サーバー名
と ディレクトリーへのパス
フィールドを入力します。SSH
プロトコルを使用する場合は SSH
ラジオボタンを選択して サーバー名
、ディレクトリーへのパス
、ユーザー名
のフィールドにリモートサーバーのアドレス、出力先ディレクトリー、有効なユーザー名をそれぞれ入力します。
SSH サーバーの設定方法およびキーベースの認証設定についてはRed Hat Enterprise Linux 7 システム管理者のガイドを参照してください。現在サポートしている出力先の一覧については、表7.3「対応している kdump のダンプ出力先」 を参照してください。
7.2.3.3. コアコレクターの設定
Filtering Settings (フィルタリングセッティング)
タブでは、vmcore
ダンプのフィルターレベルを選択することができます。
図7.3 フィルタリング
ダンプから ゼロページ
、キャッシュページ
、キャッシュプライベート
、ユーザーデータ
、または フリーページ
を除外するには該当ラベルの横にあるチェックボックスを使用して選択します。
7.2.3.4. デフォルト動作の設定
kdump
がコアダンプを作成できない場合に実行する動作を選択するには、ダンプが失敗した場合の動作
ドロップダウンリストから適切なオプションを選択します。利用可能なオプションは以下の通りです。
- rootfs および reboot へのダンプ を使用すると、コアをローカルに保存して、システムを再起動します。
- Reboot システムを再起動するデフォルトの動作
- シェルの開始 アクティブなシェルプロンプトでユーザーを表示します。
- halt システムを停止します。
- Poweroff システムの電源を切ります。
図7.4 フィルタリング
makedumpfile
コアコレクターに渡されるオプションをカスタマイズするには Core collector
のテキストフィールドを編集します。詳細は 「コアコレクターの設定」 を参照してください。
7.2.3.5. サービスの有効化
起動時に kdump
サービスを開始する場合はツールバーの ボタンをクリックしてから ボタンをクリックします。これにより、multi-user.target
のサービスが有効になり、起動します。 ボタンをクリックして ボタンをクリックするとサービスが直ちに無効になります。
Red Hat Enterprise Linux 7 では kdump の出力先として指定されているディレクトリーが kdump
systemd サービスの起動時に存在していなければなりません。この動作は、サービスの起動時にそのディレクトリーが存在しない場合に自動的に作成されていた Red hat Enterprise Linux の以前のリリースのものとは異なります。
systemd の出力先およびサービスの設定全般についてはRed Hat Enterprise Linux 7 システム管理者のガイドを参照してください。