RHEL for Real Time のインストール
低レイテンシーのために RHEL にリアルタイム機能を追加
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 RHEL for Real time のインストール
多くの業界や組織にはパフォーマンスコンピューティングが必要で、特に金融業界や通信業界では、低で予測可能なレイテンシーが必要になる場合があります。レイテンシー (応答時間) はイベントとシステム応答間の時間として定義され、通常マイクロ秒 (μs) で測定されます。
Linux 環境で実行されているほとんどのアプリケーションでは、基本的なパフォーマンスチューニングにより、レイテンシーを十分に改善できます。Red Hat は、レイテンシーを低く保つだけでなく、予測可能な機能も必要とする業界向けに、この内容を提供する 'ドロップイン' のカーネル置き換えを開発しました。RHEL for Real Time は RHEL 10 の一部として配布されており、RHEL 10 for Real Time とのシームレスな統合を提供することで、組織内のレイテンシーを測定、設定、および記録する機会をクライアントに提供します。
RHEL for Real Time をインストールする前に、ベースプラットフォームが適切にチューニングされ、システム BIOS パラメーターが調整されていることを確認します。これらのタスクの実行に失敗すると、RHEL Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。
1.1. RHEL for Real Time でのレイテンシーの最適化
RHEL for Real Time は、非常に高い決定要件があるアプリケーション用に、適切にチューニングされたシステムでの使用を目的に設計されています。カーネルは、決定論の改善の大部分を提供します。
たとえば、多くのワークロードで、システムを徹底してチューニングすることで、結果の一貫性が最適なパーセンテージで向上されます。このため、RHEL for Real Time を使用する前に、まず標準的な RHEL のシステムチューニングを実行して、目的が満たされているかどうかを確認することが推奨されます。
システムのチューニングが重要なのは、リアルタイムカーネルを使用する場合でも標準カーネルの場合でも同じです。チューニングされていないシステムにリアルタイムカーネルをインストールしても、目立った利点はありません。標準カーネルを調整すると、適切なレイテンシー番号を実現することができますが、一貫してはなりません。リアルタイムカーネルは、希望するレイテンシーの削減および決定論を提供します。
リアルタイムカーネルシステムをチューニングする前に、ベースプラットフォームが適切にチューニングされ、システムの BIOS パラメーターの調整が行われていることを確認してください。これらのタスクの実行に失敗すると、RHEL Real-time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。
リアルタイムカーネルの目的は、一貫性のある低レイテンシーと決定論を提供し、予測可能な応答時間を提供することです。リアルタイムカーネルに関連する、追加のカーネルオーバーヘッドがあります。レイテンシーを削減し、システムで最も優先度の高いタスクがより多くの処理時間を受け取るために、追加のインフラストラクチャーが必要で、より多くのオーバーヘッドを追加する傾向があります。オーバーヘッドが増加すると、全体的なスループットが低下する可能性があります。スループットの低下は 0% から 30% までの範囲ですが、正確な量はワークロードに大きく依存します。
カーネルのレイテンシー要件がミリ秒 (ms) の範囲にある一般的なワークロードの場合、標準の RHEL カーネルで十分です。ただし、ワークロードに、割り込み処理やマイクロ秒 (μs) 範囲のプロセススケジューリングなどのコアカーネル機能に対する厳格な低遅延の決定論要件がある場合は、リアルタイムカーネルが最適です。
1.2. dnf を使用した RHEL for Real Time のインストール
dnf
を使用してリアルタイムカーネルをインストールするだけでなく、RHEL for Real Time を含む ISO イメージを Download Red Hat Enterprise Linux ポータルからダウンロードすることもできます。この ISO イメージを使用して、RHEL for Real Time に含まれるすべての RPM パッケージを取得できます。ただし、これは起動可能な ISO イメージではないため、これを使用して起動可能な USB または CD メディアを作成することはできません。Red Hat Enterprise Linux の最新バージョンを確認してインストールします。
前提条件
- AMD64 または Intel64 システムに最新バージョンの RHEL 10 がインストールされている。リアルタイムカーネルは、Red Hat Enterprise Linux の実行が認定されている AMD64 および Intel 64 (x86_64 とも呼ばれます) サーバープラットフォームで動作します。
- マシンが登録され、RHEL が RHEL for Real Time サブスクリプションに割り当てられている。
ベースプラットフォームが適切にチューニングされ、システム BIOS パラメーターが調整されている。
警告リアルタイムカーネルをインストールする前に前提条件のタスクを実行しないと、RHEL for Real Time カーネルのデプロイメントで一貫したパフォーマンスが得られなくなる可能性があります。
手順
RHEL for Real Time リポジトリーを有効にします。
subscription-manager repos --enable rhel-10-for-x86_64,aarch64-rt-rpms
# subscription-manager repos --enable rhel-10-for-x86_64,aarch64-rt-rpms
Copy to Clipboard Copied! RHEL for Real Time パッケージグループをインストールします。
dnf groupinstall RT
# dnf groupinstall RT
Copy to Clipboard Copied! このグループにより、複数のパッケージがインストールされます。
-
kernel-rt
には、機能的な kernel-rt をインストールするためにパッケージの依存関係のリストを含むメタパッケージが含まれています。 -
kernel-rt-core
には、コア RHEL for Real Time カーネルパッケージが含まれています。 -
kernel-rt-devel
には、PREEMPT_RT
を有効にしてコンパイルした適切なカーネルバイナリーが含まれています。パッケージには、カーネルのインストールを実行するための設定およびスクリプトも含まれます。 -
kernel-rt-modules-core
には、機能カーネルに必要な基本的なカーネルモジュールが含まれています。kernel-rt-modules は、一般的に使用されるカーネルモジュールを提供し、kernel-modules-core を補完します。 -
kernel-rt-modules-extra
には、RHEL for Real Time カーネル追加モジュールパッケージが含まれています。 -
realtime-setup
は、RHEL for Real Time に必要な基本環境をセットアップします。 -
rteval
は、RHEL for Real Time のシステム適合性を評価します。 -
rteval-loads
は、rteval
ロード用のソースコードを提供します。 -
tuned-profiles-realtime
には、リアルタイムを対象とした追加のTuneD
プロファイルを含むパッケージが含まれています。
-
オプション:
tuna
パッケージには、リアルタイムカーネルワークロードのチューニングに役立つツールが含まれており、コマンドラインまたは GUI からの CPU 分離とスレッドアフィニティー操作を大幅に自動化します。このパッケージは、ベースの RHEL 10 リポジトリーで入手できます。dnf install tuna
# dnf install tuna
Copy to Clipboard Copied!
RHEL for Real Time カーネルがインストールされると、自動的にデフォルトのカーネルに設定され、次回の起動時に使用されます。kernel
、kernel-debug
、または kernel-rt-debug
などの他の既存のカーネルバリアントをデフォルトのブートカーネルとして設定することもできます。詳細は以下を参照してください。
検証
インストールの場所を確認し、コンポーネントが正常にインストールされていることを確認します。
rpm -ql realtime-setup
# rpm -ql realtime-setup /etc/security/limits.d/realtime.conf /etc/sysconfig/realtime-setup /etc/udev/rules.d/99-rhel-rt.rules /usr/bin/realtime-setup /usr/bin/rt-setup-kdump /usr/bin/slub_cpu_partial_off /usr/lib/.build-id /usr/lib/.build-id/a4 /usr/lib/.build-id/a4/da77908aa4c6f048939f3267f1c552c456d117 /usr/lib/systemd/system/rt-entsk.service /usr/lib/systemd/system/rt-setup.service /usr/sbin/kernel-is-rt /usr/sbin/rt-entsk
Copy to Clipboard Copied!
1.3. RHEL for Real Time リポジトリーで利用可能な RPM パッケージ
Red Hat Package Manager (RPM) for RHEL for Real Time リポジトリーには、以下のパッケージが含まれます。
-
RHEL for Real Time カーネルパッケージである
kernel-rt
パッケージ。 - real-time カーネルのテストプログラムを含む RHEL for Real Time カーネルテストパッケージ。
- RHEL for Real Time debuginfo パッケージ(デバッグおよびコードトレース用)。
RPM パッケージ名 | 説明 | RT 固有 | 必須 |
---|---|---|---|
| 低レイテンシーおよびプリエンプション機能 | はい | はい |
RPM パッケージ名 | 説明 | RT 固有 | 必須 |
---|---|---|---|
| カーネル開発用のヘッダーおよびライブラリー | はい | いいえ |
| デバッグ機能がコンパイルされた RHEL for Real Time カーネル (低速) | はい | いいえ |
| デバッグカーネル開発に使用するヘッダーおよびライブラリー | はい | いいえ |
| システムレイテンシーを測定し、優先度継承ミューテックスが適切に機能することを証明するためのユーティリティー | いいえ | いいえ |
debuginfo パッケージは、カーネルクラッシュダンプを分析するための perf
ユーティリティー、trace-cmd
ユーティリティー、および crash
ユーティリティーで使用するために提供されています。debuginfo パッケージにはシンボルテーブルが含まれており、非常に大きいです。このため、debuginfo パッケージは他の RHEL for Real Time パッケージとは別に配信されます。RHEL オファーの一部として、RHEL-RT を使用してデバッグパッケージをダウンロードできます。
RPM パッケージ名 | 説明 | RT 固有 | 必須 |
---|---|---|---|
|
| はい | いいえ |
| プロファイリングおよび追跡用のシンボル | はい | いいえ |
1.4. インストール後の手順
リアルタイムカーネルをインストールした後、次のことを確認します。
- 最適な低レイテンシーの決定論を実現するには、提供された tuned プロファイルを最終的なチューニングとして、またはシステムに必要な特定のチューニングのキャンバスとして使用して、RHEL for Real Time 固有のシステムチューニングを実行します。
- リアルタイムカーネルと標準カーネルのモジュール互換性の詳細。
-
kdump
を有効にするには、kexec/kdump
を有効にしてクラッシュダンプ情報を提供するように RHEL for Real Time を設定する必要があります。 - Real Time カーネルがデフォルトのカーネルであることを確認するには、以下のコマンドを実行します。
リアルタイムカーネルと標準カーネルのモジュール互換性
カーネルモジュールは、特別にビルドされたカーネルに固有のものです。RHEL for real-time と RHEL には共通コードベースがありますが、RHEL for Real Time ではリアルタイム機能と機能が有効になっています。そのため、RHEL でリアルタイムに使用するには、モジュールを再ビルドする必要があります。
サードパーティーのモジュールを使用する必要がある場合は、RHEL for Real Time の開発およびテストパッケージで利用可能な RHEL for Real Time ヘッダーファイルを使用して再コンパイルする必要があります。
標準の Red Hat Enterprise Linux 10 用のサードパーティードライバーですが、現在 RHEL for Real Time 用のカスタムビルドはありません。
- EMC Powerpath
- NVidia graphics
- Qlogic の高度なストレージアダプター設定ユーティリティー
ストックカーネル用に Red Hat Enterprise Linux 10 用に構築されたユーザー空間ツールは、RHEL for Real Time と完全に互換性があります。一部のアプリケーションは、設計上、リアルタイムの最適化を好まさない方法で動作する可能性があります。
第2章 実行する RHEL カーネルの指定
起動中に GRUB メニューで必要なカーネルを手動で選択すると、インストールされている任意のカーネル (標準または Real Time) で起動できます。デフォルトで起動するカーネルを設定することも可能です。
RHEL for Real Time カーネルがインストールされると、自動的にデフォルトのカーネルに設定され、次回の起動時に使用されます。
2.1. デフォルトのカーネルの表示
デフォルトで起動するように設定されたカーネルを表示できます。
手順
デフォルトのカーネルを表示するには、以下のコマンドを実行します。
grubby --default-kernel
# grubby --default-kernel /boot/vmlinuz-6.12.0-89.el10_0.x86_64+rt
Copy to Clipboard Copied! コマンドの出力の
+rt
は、デフォルトのカーネルがリアルタイムカーネルであることを示しています。
2.2. 実行中のカーネルの表示
現在実行中のカーネルを表示できます。
手順
現在システムが実行中のカーネルを表示します。
uname -a
# uname -a Linux rt-server.example.com 6.12.0-89.el10_0.x86_64 …
Copy to Clipboard Copied! 注記システムが、8.3 から 8.4 などのマイナー更新を受け取ると、デフォルトのカーネルが Real Time カーネルから標準カーネルに自動的に戻る場合があります。
2.3. kernel-rt をデフォルトのブートカーネルとして設定する
新しくインストールされたシステムでは、標準の RHEL kernel
がデフォルトのブートカーネルとして設定され、次回の起動時およびその後のシステム更新時にデフォルトのカーネルとして使用されます。この設定を変更して、ブートに使用するデフォルトのカーネルとして kernel-rt
を設定し、すべてのシステム更新に対してこの設定を永続化することもできます。kernel-rt
の設定は 1 回限りの手順であり、必要に応じて変更したり、別のカーネルに戻すことができます。kernel
、kernel-debug
、または kernel-rt-debug
などの他の既存のカーネルバリアントをデフォルトのブートカーネルとして設定することもできます。
手順
kernel-rt
をデフォルトのブートカーネルとして設定するには、次のコマンドを入力します。grubby --set-default=<RT_VMLINUZ>
# grubby --set-default=<RT_VMLINUZ>
Copy to Clipboard Copied! RT_VMLINUZ
は、kernel-rt
カーネルに関連付けられたvmlinux
ファイルの名前です。以下に例を示します。grubby --set-default=/boot/vmlinuz-6.12.0-284.11.1.rt14.296.el0_0_2.x86_64+rt
# grubby --set-default=/boot/vmlinuz-6.12.0-284.11.1.rt14.296.el0_0_2.x86_64+rt
Copy to Clipboard Copied! システム更新時のデフォルトのブートカーネルとして
kernel-rt
を設定するには、次のコマンドを入力します。sed -i 's/UPDATEDEFAULT=.*/UPDATEDEFAULT=yes/g' /etc/sysconfig/kernel sed -i 's/DEFAULTKERNEL=.*/DEFAULTKERNEL=kernel-rt-core/g' /etc/sysconfig/kernel
# sed -i 's/UPDATEDEFAULT=.*/UPDATEDEFAULT=yes/g' /etc/sysconfig/kernel # sed -i 's/DEFAULTKERNEL=.*/DEFAULTKERNEL=kernel-rt-core/g' /etc/sysconfig/kernel
Copy to Clipboard Copied! UPDATEDEFAULT
変数をyes
として指定すると、システムの更新で変更されるデフォルトのカーネルが設定されます。出力例のデフォルトカーネルのパスは、インストールされている
kernel-rt-core
パッケージに固有のものです。rpm -q kernel-rt-core
コマンドを使用すると、カーネルへのパスをパッケージから確認できます。オプション: カーネルへのパスをパッケージから確認する必要がある場合は、まずインストールされているパッケージをリストします。
rpm -q kernel-rt-core
# rpm -q kernel-rt-core kernel-rt-core-6.12.0-55.14.1.el10_0.x86_64 kernel-rt-core-6.12.0-55.13.1.el10_0.x86_64 kernel-rt-core-6.12.0-55.12.1.el10_0.x86_64
Copy to Clipboard Copied! 最新のインストール済みパッケージをデフォルトとして使用するには、次のコマンドを入力して、ブートイメージへのパスをパッケージから見つけます。
rpm -ql kernel-rt-core-6.12.0-55.14.1.el10_0.x86_64 | grep '^/boot/vmlinu'
# rpm -ql kernel-rt-core-6.12.0-55.14.1.el10_0.x86_64 | grep '^/boot/vmlinu' /boot/vmlinuz-6.12.0-55.14.1.el10_0.x86_64+rt
Copy to Clipboard Copied! kernel-rt
をデフォルトのブートカーネルとして設定するには、次のコマンドを入力します。grubby --set-default=/boot/vmlinuz-6.12.0-55.14.1.el10_0.x86_64+rt
# grubby --set-default=/boot/vmlinuz-6.12.0-55.14.1.el10_0.x86_64+rt
Copy to Clipboard Copied!
検証
kernel-rt
がデフォルトのカーネルであることを確認するには、次のコマンドを入力します。grubby --default-kernel
# grubby --default-kernel /boot/vmlinuz-6.12.0-55.14.1.el10_0.x86_64+rt
Copy to Clipboard Copied!
第3章 kdump のインストール
kdump
サービスは、新しいバージョンの RHEL 10 インストールにデフォルトでインストールされ、アクティベートされます。
3.1. kdump とは
kdump
は、クラッシュダンプメカニズムを提供し、クラッシュダンプまたは vmcore
ダンプファイルを生成するサービスです。vmcore
には、分析およびトラブルシューティング用のシステムメモリーの内容が含まれています。kdump
は、kexec
システムコールを使用して、再起動せずに 2 番目のカーネルである capture kernel を起動します。このカーネルはクラッシュしたカーネルのメモリーの内容をキャプチャーし、ファイルに保存します。この別のカーネルは、システムメモリーの予約部分で使用できます。
カーネルクラッシュダンプは、システム障害時に利用できる唯一の情報になります。したがって、ミッションクリティカルな環境では、kdump
を稼働させることが重要です。通常のカーネル更新サイクルで、kexec-tools
、kdump-utils
、makedumpfile
パッケージを定期的に更新してテストする必要があります。これは、新しいカーネル機能をインストールするときに重要です。
マシンに複数のカーネルがある場合は、インストールされているすべてのカーネルに対して、または指定したカーネルに対してのみ kdump
を有効にできます。kdump
をインストールすると、システムによってデフォルトの /etc/kdump.conf
ファイルが作成されます。/etc/kdump.conf
にはデフォルトの最小 kdump
設定が含まれています。これを編集して kdump
設定をカスタマイズできます。
3.2. Anaconda を使用した kdump のインストール
Anaconda インストーラーでは、対話式インストール時に kdump
設定用のグラフィカルインターフェイス画面が表示されます。kdump
を有効にして、必要な量のメモリーを予約できます。
手順
-
Anaconda インストーラーで、KDUMP をクリックして
kdump
を有効にします。 - メモリー予約をカスタマイズする必要がある場合は、Kdump Memory Reservation で Manual を選択します。
-
KDUMP > Memory To Be Reserved (MB) で、
kdump
に必要なメモリー予約を設定します。
3.3. コマンドラインで kdump のインストール
カスタムの キックスタート インストールなどのインストール方法では、kdump
がデフルトでインストールまたは有効化 されない 場合があります。その場合、次の手順で kdump
を有効にできます。
前提条件
- アクティブな RHEL サブスクリプションがある。
-
システムの CPU アーキテクチャー用の
kexec-tools
パッケージを含むリポジトリーがある。 -
kdump
設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。
手順
システムに
kdump
がインストールされているかどうかを確認します。rpm -q kexec-tools
# rpm -q kexec-tools
Copy to Clipboard Copied! このパッケージがインストールされている場合は以下を出力します。
+ このパッケージがインストールされていない場合は以下を出力します。
+
package kexec-tools is not installed
package kexec-tools is not installed
kdump
および必要なパッケージをインストールします。dnf install kexec-tools
# dnf install kexec-tools
Copy to Clipboard Copied!
第4章 コマンドラインで kdump の設定
kdump
用メモリーは、システムの起動時に予約されます。システムの Grand Unified Bootloader (GRUB) 設定ファイルでメモリーサイズを設定できます。メモリーサイズは、設定ファイルで指定された crashkernel=
値と、システムの物理メモリーのサイズによって異なります。
4.1. kdump サイズの見積もり
kdump
環境を計画および構築するときは、クラッシュダンプファイルに必要な容量を把握することが重要です。
makedumpfile --mem-usage
コマンドは、クラッシュダンプファイルに必要な容量を推定します。また、メモリー使用量に関するレポートを生成します。このレポートは、ダンプレベルと、除外しても問題ないページを決定するのに役立ちます。
手順
次のコマンドを入力して、メモリー使用量に関するレポートを生成します。
makedumpfile --mem-usage /proc/kcore
# makedumpfile --mem-usage /proc/kcore TYPE PAGES EXCLUDABLE DESCRIPTION ------------------------------------------------------------- ZERO 501635 yes Pages filled with zero CACHE 51657 yes Cache pages CACHE_PRIVATE 5442 yes Cache pages + private USER 16301 yes User process pages FREE 77738211 yes Free pages KERN_DATA 1333192 no Dumpable kernel data
Copy to Clipboard Copied!
makedumpfile --mem-usage
は、必要なメモリーをページ単位で報告します。つまり、カーネルページサイズを元に、使用するメモリーのサイズを計算する必要があります。
4.2. メモリー使用量の設定
kdump-utils
パッケージは、デフォルトの crashkernel=
メモリー予約値を維持します。kdump
サービスはデフォルト値を使用して、各カーネルのクラッシュカーネルメモリーを予約します。デフォルト値は、crashkernel=
値を手動で設定するときに必要なメモリーサイズを見積もるための基準値としても機能します。クラッシュカーネルの最小サイズは、ハードウェアおよびマシンの仕様により異なります。
また、kdump
の自動メモリー割り当ては、システムハードウェアアーキテクチャーと利用可能なメモリーサイズにより異なります。たとえば、AMD64 および Intel 64 ビットアーキテクチャーでは、crashkernel=
パラメーターのデフォルト値は、使用可能なメモリーが 2 GB を超える場合にのみ機能します。kdump-utils
ユーティリティーは、AMD64 および Intel 64 ビットアーキテクチャーで次のデフォルトのメモリー予約を設定します。
crashkernel=2G-64G:256M,64G-:512M
crashkernel=2G-64G:256M,64G-:512M
kdumpctl estimate
を実行して、クラッシュをトリガーせずにおおよその値を取得することもできます。crashkernel=
の推定値は正確でない可能性がありますが、適切な crashkernel=
値を設定する際の参考として役立ちます。
起動コマンドライン の crashkernel=1G-4G:192M,4G-64G:256M,64G:512M
オプションは、RHEL 10 以降のリリースではサポートされなくなりました。
前提条件
- システムの root 権限がある。
-
kdump
の設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。 -
IBM Z システムの場合は、
zipl
ユーティリティーがインストールされている。
手順
クラッシュカーネルのデフォルト値を設定します。
kdumpctl reset-crashkernel --kernel=ALL
# kdumpctl reset-crashkernel --kernel=ALL
Copy to Clipboard Copied! crashkernel=
値を設定する場合は、kdump
を有効にしてシステムを再起動し、設定をテストします。kdump
カーネルの起動に失敗した場合は、メモリーサイズを徐々に増やして許容可能な値を設定します。カスタムの
crashkernel=
値を使用するには、以下を実行します。必要なメモリー予約を設定します。
crashkernel=192M
crashkernel=192M
Copy to Clipboard Copied! 必要に応じて、構文
crashkernel=<range1>:<size1>,<range2>:<size2>
を使用して、予約メモリーの量を、インストールされているメモリーの合計量に応じて変動する値に設定できます。以下に例を示します。crashkernel=1G-4G:192M,2G-64G:256M
crashkernel=1G-4G:192M,2G-64G:256M
Copy to Clipboard Copied! この例では、システムメモリーの合計量が 1 GB 以上 4 GB 未満の場合、192 MB のメモリーが予約されます。メモリーの合計量が 4 GB を超える場合、256 MB が
kdump
用に予約されます。オプション: 予約済みメモリーをオフセットします。
crashkernel
予約は非常に早いため、特定の固定オフセットでメモリーを予約する必要があるシステムもあります。また、特別な用途にいくつかの領域を予約したいシステムもあります。オフセットが設定されると、予約メモリーはそこから開始されます。予約メモリーをオフセットするには、以下の構文を使用します。crashkernel=192M@16M
crashkernel=192M@16M
Copy to Clipboard Copied! この例では、16 MB (物理アドレス 0x01000000) から始まる 192 MB のメモリーを予約します。オフセットを 0 に設定するか、値を指定しない場合、
kdump
は予約されたメモリーを自動的にオフセットします。オフセットを最後の値として指定することにより、変数メモリー予約を設定するときにメモリーをオフセットすることもできます。たとえば、crashkernel=1G-4G:192M,2G-64G:256M@16M
です。ブートローダー設定を更新します。
grubby --update-kernel ALL --args "crashkernel=<custom-value>"
# grubby --update-kernel ALL --args "crashkernel=<custom-value>"
Copy to Clipboard Copied! <custom-value>
には、クラッシュカーネル用に設定したカスタムのcrashkernel=
値を含める必要があります。
変更を有効にするために再起動します。
reboot
# reboot
Copy to Clipboard Copied!
kdump
設定をテストするコマンドにより、カーネルがクラッシュし、データが失われます。注意して手順を実行してください。kdump 設定のテストにアクティブな実稼働システムを使用しないでください。
sysrq
キーをアクティブ化してカーネルをクラッシュさせます。address-YYYY-MM-DD-HH:MM:SS/vmcore
ファイルは、/etc/kdump.conf
ファイルで指定されているターゲットの場所に保存されます。デフォルトのターゲットの場所を選択した場合、vmcore
ファイルは /var/crash/
の下にマウントされたパーティションに保存されます。
sysrq
キーをアクティブにして、kdump
カーネルを起動します。echo c > /proc/sysrq-trigger
# echo c > /proc/sysrq-trigger
Copy to Clipboard Copied! このコマンドによりカーネルがクラッシュし、必要に応じてカーネルが再起動されます。
-
/etc/kdump.conf
ファイルを表示し、ターゲットの保存先にvmcore
ファイルが保存されているかどうかを確認します。
4.3. kdump ターゲットの設定
クラッシュダンプは通常、ローカルファイルシステムにファイルとして保存され、デバイスに直接書き込まれます。必要に応じて、NFS
または SSH
プロトコルを使用して、ネットワーク経由でクラッシュダンプを送信できます。クラッシュダンプファイルを保存するオプションは、一度に 1 つだけ設定できます。デフォルトの動作では、ローカルファイルシステムの /var/crash/
ディレクトリーに保存されます。
前提条件
- システムの root 権限がある。
-
kdump
設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。
手順
ローカルファイルシステムの
/var/crash/
ディレクトリーにクラッシュダンプファイルを保存するには、/etc/kdump.conf
ファイルを変更して、パスを指定します。path /var/crash
path /var/crash
Copy to Clipboard Copied! path /var/crash
オプションは、kdump
がクラッシュダンプファイルを保存するファイルシステムへのパスを表します。注記-
/etc/kdump.conf
ファイルでダンプターゲットを指定すると、path は指定されたダンプ出力先に対する相対パスになります。 -
/etc/kdump.conf
ファイルでダンプターゲットを指定しない場合、パスはルートディレクトリーからの 絶対 パスを表します。
現在のシステムにマウントされているファイルシステムに応じて、ダンプターゲットと調整されたダンプパスが自動的に設定されます。
-
kdump
によって生成されるクラッシュダンプファイルと付随するファイルを保護するには、ユーザー権限や SELinux コンテキストなど、ターゲットの宛先ディレクトリーの属性を適切に設定する必要があります。さらに、次のようにkdump.conf
ファイルでkdump_post.sh
などのスクリプトを定義することもできます。kdump_post <path_to_kdump_post.sh>
kdump_post <path_to_kdump_post.sh>
Copy to Clipboard Copied! kdump_post
ディレクティブは、kdump
がクラッシュダンプの取得と指定の保存先への保存を完了した 後に 実行されるシェルスクリプトまたはコマンドを指定するものです。このメカニズムを使用すると、kdump
の機能を拡張して、ファイル権限の調整などの操作を実行できます。-
kdump
ターゲット設定
*grep -v ^# /etc/kdump.conf | grep -v ^$*
# *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
path /usr/local/cores
Copy to Clipboard Copied! 重要Red Hat Enterprise Linux 10 では、障害を回避するために、
kdump
systemd
サービスの起動時に、path
ディレクティブを使用してkdump
ターゲットとして定義されたディレクトリーが存在している必要があります。サービスの起動時にディレクトリーが存在しない場合は、ディレクトリーは自動的に作成されなくなります。
-
ファイルを別のパーティションに書き込むには、
/etc/kdump.conf
設定ファイルを編集します。必要に応じて
#ext4
の行頭にあるハッシュ記号 (#
) を削除します。-
デバイス名 (
#ext4 /dev/vg/lv_kdump
行) -
ファイルシステムラベル (
#0ext4 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
ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
Copy to Clipboard Copied! 重要LABEL=
またはUUID=
を使用してストレージデバイスを指定する必要があります。/dev/sda3
などのディスクデバイス名は、再起動した場合に一貫性が保証されません。IBM Z ハードウェアで Direct Access Storage Device (DASD) を使用する場合は、
kdump
に進む前に、ダンプデバイスが/etc/dasd.conf
で正しく指定されていることを確認してください。
クラッシュダンプを直接書き込むには、
/etc/kdump.conf
設定ファイルを修正します。-
#raw /dev/vg/lv_kdump
の行頭にあるハッシュ記号 (#
) を削除します。 値を対象のデバイス名に置き換えます。以下に例を示します。
raw /dev/sdb1
raw /dev/sdb1
Copy to Clipboard Copied!
-
NFS
プロトコルを使用してクラッシュダンプをリモートマシンに保存するには、次の手順を実行します。-
#nfs my.server.com:/export/tmp
の行頭にあるハッシュ記号 (#
) を削除します。 値を、正しいホスト名およびディレクトリーパスに置き換えます。以下に例を示します。
nfs penguin.example.com:/export/cores
nfs penguin.example.com:/export/cores
Copy to Clipboard Copied! 変更を有効にするには、
kdump
サービスを再起動します。sudo systemctl restart kdump.service
$ sudo systemctl restart kdump.service
Copy to Clipboard Copied! 注記NFS ディレクティブを使用して NFS ターゲットを指定すると、
kdump.service
が自動的に NFS ターゲットをマウントしてディスク容量をチェックしようとします。NFS ターゲットを事前にマウントする必要はありません。kdump.service
がターゲットをマウントしないようにするには、kdump.conf
でdracut_args --mount
ディレクティブを使用します。これにより、kdump.service
が--mount
引数を使用してdracut
ユーティリティーを呼び出して NFS ターゲットを指定できるようになります。
-
SSH プロトコルを使用してクラッシュダンプをリモートマシンに保存するには、次の手順を実行します。
-
#ssh user@my.server.com
の行頭にあるハッシュ記号 (#
) を削除します。 - 値を正しいユーザー名およびホスト名に置き換えます。
SSH キーを設定に含めます。
-
#sshkey /root/.ssh/kdump_id_rsa
の行頭にあるハッシュ記号 ("#") を削除します。 値を、ダンプ先のサーバー上の正しいキーの場所に変更します。以下に例を示します。
ssh john@penguin.example.com sshkey /root/.ssh/mykey
ssh john@penguin.example.com sshkey /root/.ssh/mykey
Copy to Clipboard Copied!
-
-
4.4. kdump コアコレクターの設定
kdump
では、core_collector
を使用してクラッシュダンプイメージをキャプチャーします。RHEL では、makedumpfile
ユーティリティーがデフォルトのコアコレクターです。これは、以下に示すプロセスによりダンプファイルを縮小するのに役立ちます。
- クラッシュダンプファイルのサイズを圧縮し、さまざまなダンプレベルを使用して必要なページのみをコピーする
- 不要なクラッシュダンプページを除外する
- クラッシュダンプに含めるページタイプをフィルタリングする
クラッシュダンプファイルの圧縮はデフォルトで有効になっています。
クラッシュダンプファイルの圧縮をカスタマイズする必要がある場合は、以下の手順に従います。
構文
core_collector makedumpfile -l --message-level 1 -d 31
core_collector makedumpfile -l --message-level 1 -d 31
オプション
-
-c
、-l
、または-p
:-c
オプションの場合はzlib
、-l
オプションの場合はlzo
、-p
オプションの場合はsnappy
、-z
オプションの場合はzstd
を使用して、ページごとに圧縮ダンプファイル形式を指定します。 -
-d
(dump_level)
: ページを除外して、ダンプファイルにコピーされないようにします。 -
--message-level
: メッセージタイプを指定します。このオプションでmessage_level
を指定すると、出力の表示量を制限できます。たとえば、message_level
で 7 を指定すると、一般的なメッセージとエラーメッセージを出力します。message_level
の最大値は 31 です。
前提条件
- システムの root 権限がある。
-
kdump
設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。
手順
-
root
として、/etc/kdump.conf
設定ファイルを編集し、#core_collector makedumpfile -l --message-level 1 -d 31
の先頭からハッシュ記号 ("#") を削除します。 - 次のコマンドを入力して、クラッシュダンプファイルの圧縮を有効にします。
core_collector makedumpfile -l --message-level 1 -d 31
core_collector makedumpfile -l --message-level 1 -d 31
-l
オプションにより、dump
の圧縮ファイル形式を指定します。-d
オプションで、ダンプレベルを 31 に指定します。--message-level
オプションで、メッセージレベルを 1 に指定します。
-c
、-p
、-z
オプションを使用した以下の例お検討してください。
-c
を使用してクラッシュダンプファイルを圧縮するには、次のコマンドを実行します。core_collector makedumpfile -c -d 31 --message-level 1
core_collector makedumpfile -c -d 31 --message-level 1
Copy to Clipboard Copied! -p
を使用してクラッシュダンプファイルを圧縮するには、次のコマンドを実行します。core_collector makedumpfile -p -d 31 --message-level 1
core_collector makedumpfile -p -d 31 --message-level 1
Copy to Clipboard Copied! -z
を使用してクラッシュダンプファイルを圧縮するには、次のコマンドを実行します。core_collector makedumpfile -z -d 31 --message-level 1
core_collector makedumpfile -z -d 31 --message-level 1
Copy to Clipboard Copied!
4.5. kdump のデフォルト障害応答の設定
デフォルトでは、設定したターゲットの場所で kdump
がクラッシュダンプファイルの作成に失敗すると、システムが再起動し、ダンプがプロセス内で失われます。デフォルトの失敗応答を変更し、コアダンプをプライマリーターゲットに保存できない場合に別の操作を実行するように kdump
を設定できます。追加のアクションは次のとおりです。
dump_to_rootfs
-
コアダンプを
root
ファイルシステムに保存します。 reboot
- システムを再起動します。コアダンプは失われます。
halt
- システムを停止します。コアダンプは失われます。
poweroff
- システムの電源を切ります。コアダンプは失われます。
shell
-
initramfs
内からシェルセッションを実行します。コアダンプを手動で記録できます。 final_action
-
kdump
の成功後、またはシェルまたはdump_to_rootfs
の失敗アクションの完了時に、reboot
、halt
およびpoweroff
などの追加操作を有効にします。デフォルトはreboot
です。 failure_action
-
カーネルクラッシュでダンプが失敗する可能性がある場合に実行するアクションを指定します。デフォルトは
reboot
です。
前提条件
- root 権限
-
kdump
設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。
手順
-
root
ユーザーとして、/etc/kdump.conf
設定ファイルの#failure_action
行の先頭からハッシュ記号 (#
) を削除します。 値を必要なアクションに置き換えます。
failure_action poweroff
failure_action poweroff
Copy to Clipboard Copied!
4.6. kdump の設定ファイル
kdump
カーネルの設定ファイルは /etc/sysconfig/kdump
です。このファイルは、kdump
カーネルコマンドラインパラメーターを制御します。ほとんどの設定では、デフォルトオプションを使用します。ただし、シナリオによっては、kdump
カーネルの動作を制御するために特定のパラメーターを変更する必要があります。たとえば、KDUMP_COMMANDLINE_APPEND
オプションを変更して kdump
カーネルコマンドラインを追加して詳細なデバッグ出力を取得したり、KDUMP_COMMANDLINE_REMOVE
オプションを変更して kdump
コマンドラインから引数を削除したりします。
KDUMP_COMMANDLINE_REMOVE
現在の
kdump
コマンドラインから引数を削除します。これにより、kdump
エラーやkdump
カーネルの起動失敗の原因となるパラメーターが削除されます。これらのパラメーターは、以前のKDUMP_COMMANDLINE
プロセスから解析されるか、/proc/cmdline
ファイルから継承されたものである場合があります。この変数が設定されていない場合は、
/proc/cmdline
ファイルからすべての値が継承されます。このオプションを設定すると、問題のデバッグに役立つ情報も提供されます。特定の引数を削除するには、以下のようにして
KDUMP_COMMANDLINE_REMOVE
に追加します。
KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
# KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
KDUMP_COMMANDLINE_APPEND
このオプションは、現在のコマンドラインに引数を追加します。この引数は、以前の
KDUMP_COMMANDLINE_REMOVE
変数によって解析されたものである場合があります。kdump
カーネルの場合は、mce
、cgroup
、numa
、hest_disable
などの特定のモジュールを無効にすると、カーネルエラーを防ぐのに役立ちます。これらのモジュールは、kdump
用に予約されているカーネルメモリーの大部分を消費したり、kdump
カーネルの起動失敗を引き起こしたりする可能性があります。kdump
カーネルコマンドラインでメモリーcgroup
を無効にするには、以下のコマンドを実行します。
KDUMP_COMMANDLINE_APPEND="cgroup_disable=memory"
KDUMP_COMMANDLINE_APPEND="cgroup_disable=memory"
4.7. kdump 設定のテスト
kdump
を設定したら、システムクラッシュを手動でテストして、定義した kdump
ターゲットに vmcore
ファイルが生成されていることを確認する必要があります。vmcore
ファイルは、新しく起動したカーネルのコンテキストからキャプチャーされます。したがって、vmcore
にはカーネルクラッシュをデバッグするための重要な情報が含まれています。
アクティブな実稼働システムでは kdump
をテストしないでください。kdump
をテストするコマンドにより、カーネルがクラッシュし、データが失われます。システムアーキテクチャーに応じて、十分なメンテナンス時間を必ず確保してください。kdump
のテストでは時間のかかる再起動が数回必要になる場合があります。
kdump
のテスト中に vmcore
ファイルが生成されない場合は、kdump
のテストを成功させるために、再度テストを実行する前に問題を特定して修正してください。
手動でシステムを変更した場合は、システム変更の最後に kdump
設定をテストする必要があります。たとえば、次のいずれかの変更を行った場合は、kdump
のパフォーマンスが最適になるように、kdump
の設定をテストしてください。
- パッケージのアップグレード。
- ハードウェアレベルの変更 (ストレージやネットワークの変更など)。
- ファームウェアのアップグレード。
- サードパーティーのモジュールを含む新規のインストールおよびアプリケーションのアップグレード。
- ホットプラグメカニズムを使用した、このメカニズムをサポートするハードウェアへのメモリーの追加。
-
/etc/kdump.conf
ファイルまたは/etc/sysconfig/kdump
ファイルに対する変更。
前提条件
- システムの root 権限がある。
-
重要なデータがすべて保存されている。
kdump
をテストするコマンドにより、カーネルがクラッシュし、データが失われます。 - システムアーキテクチャーに応じて、十分なマシンメンテナンス時間が確保されている。
手順
kdump
サービスを有効にします。kdumpctl restart
# kdumpctl restart
Copy to Clipboard Copied! kdumpctl
を使用してkdump
サービスのステータスを確認します。kdumpctl status
# kdumpctl status kdump:Kdump is operational
Copy to Clipboard Copied! 必要に応じて
systemctl
コマンドを使用すると、出力がsystemd
ジャーナルに印刷されます。カーネルクラッシュを開始して、
kdump
の設定をテストします。sysrq-trigger
キーの組み合わせによりカーネルがクラッシュし、必要に応じてシステムが再起動します。echo c > /proc/sysrq-trigger
# echo c > /proc/sysrq-trigger
Copy to Clipboard Copied! カーネルの再起動時に、
/etc/kdump.conf
ファイルで指定した場所にaddress-YYYY-MM-DD-HH:MM:SS/vmcore
ファイルが作成されます。デフォルトは/var/crash/
です。
4.8. システムクラッシュ後に kdump によって生成されるファイル
システムがクラッシュすると、kdump
サービスは、カーネルメモリーをダンプファイル (vmcore
) にキャプチャーします。また、トラブルシューティングと事後分析に役立つ追加の診断ファイルを生成します。
kdump
によって生成されるファイル:
-
vmcore
- クラッシュ時のシステムメモリーを含む主なカーネルメモリーダンプファイル。これには、kdump
設定で指定されているcore_collector
プログラムの設定に従ってデータが追加されます。デフォルトでは、カーネルデータ構造、プロセス情報、スタックトレース、およびその他の診断情報が含まれます。 -
vmcore-dmesg.txt
- パニックになったプライマリーカーネルからのカーネルリングバッファーログ (dmesg
) の内容。 -
kexec-dmesg.log
-vmcore
データを収集するセカンダリーのkexec
カーネルの実行に基づくカーネルおよびシステムログメッセージが含まれます。
4.9. kdump サービスの有効化および無効化
kdump
機能は、特定のカーネルまたはインストールされているすべてのカーネルで有効または無効にするように設定できます。kdump
機能を定期的にテストし、正しく動作することを検証する必要があります。
前提条件
- システムの root 権限がある。
-
kdump
の設定とターゲットの要件をすべて満たしている。サポートされている kdump 設定とターゲット を参照してください。 -
kdump
をインストールするためのすべての設定が、要件に応じてセットアップされている。
手順
multi-user.target
のkdump
サービスを有効にします。systemctl enable kdump.service
# systemctl enable kdump.service
Copy to Clipboard Copied! 現在のセッションでサービスを起動します。
systemctl start kdump.service
# systemctl start kdump.service
Copy to Clipboard Copied! kdump
サービスを停止します。systemctl stop kdump.service
# systemctl stop kdump.service
Copy to Clipboard Copied! kdump
サービスを無効にします。systemctl disable kdump.service
# systemctl disable kdump.service
Copy to Clipboard Copied!
kptr_restrict=1
をデフォルトとして設定することが推奨されます。kptr_restrict
がデフォルトで (1) に設定されている場合、Kernel Address Space Layout (KASLR
) が有効かどうかに関係なく、kdumpctl
サービスがクラッシュカーネルをロードします。
kptr_restrict
が 1
に設定されておらず、KASLR が有効になっている場合は、/proc/kore
ファイルの内容がすべてゼロとして生成されます。kdumpctl
サービスは、/proc/kcore
ファイルにアクセスしてクラッシュカーネルを読み込むことができません。kexec-kdump-howto.txt
ファイルには、kptr_restrict=1
に設定することを推奨する警告メッセージが表示されます。kdumpctl
サービスが必ずクラッシュカーネルを読み込むように、sysctl.conf
ファイルで次の内容を確認します。
-
sysctl.conf
ファイルでのカーネルのkptr_restrict=1
設定
4.10. カーネルドライバーが kdump を読み込まないようにする設定
/etc/sysconfig/kdump
設定ファイルに KDUMP_COMMANDLINE_APPEND=
変数を追加することで、キャプチャーカーネルが特定のカーネルドライバーをロードしないように制御できます。この方法を使用すると、kdump
初期 RAM ディスクイメージ initramfs
が、指定されたカーネルモジュールをロードするのを防ぐことができます。これにより、メモリー不足 (OOM) killer エラーやその他のクラッシュカーネル障害を防ぐことができます。
次のいずれかの設定オプションを使用して、KDUMP_COMMANDLINE_APPEND=
変数を追加できます。
-
rd.driver.blacklist=<modules>
-
modprobe.blacklist=<modules>
前提条件
- システムの root 権限がある。
手順
現在実行中のカーネルに読み込まれるモジュールのリストを表示します。ロードをブロックするカーネルモジュールを選択します。
lsmod
$ lsmod Module Size Used by fuse 126976 3 xt_CHECKSUM 16384 1 ipt_MASQUERADE 16384 1 uinput 20480 1 xt_conntrack 16384 1
Copy to Clipboard Copied! /etc/sysconfig/kdump
ファイルのKDUMP_COMMANDLINE_APPEND=
変数を更新します。以下に例を示します。KDUMP_COMMANDLINE_APPEND="rd.driver.blacklist=hv_vmbus,hv_storvsc,hv_utils,hv_netvsc,hid-hyperv"
KDUMP_COMMANDLINE_APPEND="rd.driver.blacklist=hv_vmbus,hv_storvsc,hv_utils,hv_netvsc,hid-hyperv"
Copy to Clipboard Copied! modprobe.blacklist=<modules>
設定オプションを使用した以下の例も検討してください。KDUMP_COMMANDLINE_APPEND="modprobe.blacklist=emcp modprobe.blacklist=bnx2fc modprobe.blacklist=libfcoe modprobe.blacklist=fcoe"
KDUMP_COMMANDLINE_APPEND="modprobe.blacklist=emcp modprobe.blacklist=bnx2fc modprobe.blacklist=libfcoe modprobe.blacklist=fcoe"
Copy to Clipboard Copied! kdump
サービスを再起動します。systemctl restart kdump
# systemctl restart kdump
Copy to Clipboard Copied!
4.11. 暗号化されたディスクがあるシステムでの kdump の実行
LUKS 暗号化パーティションを実行すると、システムで利用可能なメモリーが一定量必要になります。システムが必要なメモリー量を下回ると、cryptsetup
ユーティリティーがパーティションのマウントに失敗します。その結果、2 番目のカーネル (キャプチャーカーネル) で、暗号化したターゲットの場所に vmcore
ファイルをキャプチャーできませんでした。
kdumpctl estimate
コマンドは、kdump
に必要なメモリー容量を予測できます。kdumpctl estimate
は、推奨の crashkernel
値を出力します。この値は kdump
に必要な最適なメモリーサイズです。
推奨の crashkernel
値は、現在のカーネルサイズ、カーネルモジュール、initramfs、および暗号化したターゲットメモリー要件に基づいて計算されます。
カスタムの crashkernel=
オプションを使用している場合、kdumpctl estimate
は LUKS required size
値を出力します。この値は、LUKS 暗号化ターゲットに必要なメモリーサイズです。
手順
crashkernel=
の推定値を出力します。*kdumpctl estimate*
# *kdumpctl estimate* Encrypted kdump target requires extra memory, assuming using the keyslot with minimum memory requirement Reserved crashkernel: 256M Recommended crashkernel: 652M Kernel image size: 47M Kernel modules size: 8M Initramfs size: 20M Runtime reservation: 64M LUKS required size: 512M Large modules: <none> WARNING: Current crashkernel size is lower than recommended size 652M.
Copy to Clipboard Copied! -
crashkernel=
の値を増やして、必要なメモリー量を設定します。 - システムを再起動します。
それでも kdump
がダンプファイルを暗号化したターゲットに保存できない場合は、必要に応じて crashkernel=
を増やしてください。
第5章 kdump の有効化
RHEL 10 システムでは、特定のカーネルまたはインストールしたすべてのカーネルで kdump
機能を有効または無効にすることができます。ただし、kdump
機能を定期的にテストし、その動作状態を検証する必要があります。
5.1. インストールされているすべてのカーネルでの kdump の有効化
kdump
サービスは、kdump-utils
をインストールした後、kdump.service
を有効にすると起動します。マシンにインストールされているすべてのカーネルに対して、kdump
サービスを有効にして起動できます。
前提条件
- システムの root 権限がある。
手順
インストールされているすべてのカーネルに
crashkernel=
コマンドラインパラメーターを追加します。grubby --update-kernel=ALL --args="crashkernel=xxM"
# grubby --update-kernel=ALL --args="crashkernel=xxM"
Copy to Clipboard Copied! xxM
は必要なメモリー (メガバイト単位) です。システムを再起動します。
reboot
# reboot
Copy to Clipboard Copied! kdump
サービスを有効にします。systemctl enable --now kdump.service
# systemctl enable --now kdump.service
Copy to Clipboard Copied!
検証
kdump
が実行されていることを確認します。systemctl status kdump.service
# systemctl status kdump.service ○ kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled) Active: active (live)
Copy to Clipboard Copied!
5.2. 特定のインストール済みカーネルでの kdump の有効化
マシン上の特定カーネルに対して、kdump
サービスを有効にできます。
前提条件
- システムの root 権限がある。
手順
マシンにインストールされているカーネルをリスト表示します。
ls -a /boot/vmlinuz-*
# ls -a /boot/vmlinuz-* /boot/vmlinuz-0-rescue-2930657cd0dc43c2b75db480e5e5b4a9 /boot/vmlinuz-6.12.0-55.9.1.el10_0.x86_64 /boot/vmlinuz-6.12.0-55.9.1.el10_0.x86_64
Copy to Clipboard Copied! 特定の
kdump
カーネルを、システムの Grand Unified Bootloader (GRUB) 設定に追加します。以下に例を示します。
grubby --update-kernel=vmlinuz-6.12.0-55.9.1.el10_0.x86_64 --args="crashkernel=xxM"
# grubby --update-kernel=vmlinuz-6.12.0-55.9.1.el10_0.x86_64 --args="crashkernel=xxM"
Copy to Clipboard Copied! xxM
は必要なメモリー予約 (メガバイト単位) です。kdump
サービスを有効にします。systemctl enable --now kdump.service
# systemctl enable --now kdump.service
Copy to Clipboard Copied!
検証
kdump
が実行されていることを確認します。systemctl status kdump.service
# systemctl status kdump.service ○ kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled) Active: active (live)
Copy to Clipboard Copied!
5.3. kdump サービスの無効化
kdump.service
を停止し、RHEL 10 システムでサービスが起動しないようにできます。
前提条件
-
kdump
設定とターゲットの要件をすべて満たしている。詳細は 対応している kdump 設定とターゲット を 参照してください。
手順
現在のセッションで
kdump
を停止するには、以下のコマンドを実行します。systemctl stop kdump.service
# systemctl stop kdump.service
Copy to Clipboard Copied! kdump
を無効にするには、以下を行います。systemctl disable kdump.service
# systemctl disable kdump.service
Copy to Clipboard Copied!
kptr_restrict=1
をデフォルトとして設定することが推奨されます。kptr_restrict
がデフォルトで (1) に設定されている場合、Kernel Address Space Layout (KASLR
) が有効かどうかに関係なく、kdumpctl
サービスがクラッシュカーネルをロードします。
kptr_restrict
が 1
に設定されておらず、KASLR
が有効になっている場合は、/proc/kore
ファイルの内容がすべてゼロとして生成されます。kdumpctl
サービスは、/proc/kcore
ファイルにアクセスしてクラッシュカーネルを読み込むことができません。kexec-kdump-howto.txt
ファイルには、kptr_restrict=1
に設定することを推奨する警告メッセージが表示されます。kdumpctl
サービスが必ずクラッシュカーネルを読み込むように、sysctl.conf
ファイルで次の内容を確認します。
-
sysctl.conf
ファイルでのカーネルのkptr_restrict=1
設定
第6章 RHEL for Real Time バグの診断
RHEL for Real Time または標準カーネルのどちらのカーネルが問題の原因であるかを特定すると、バグをより早く修正できる可能性が高くなります。手順に従うことで、バグレポートを送信する前に問題の原因を診断できます。
前提条件
- RHEL for Real Time カーネルの最新バージョンがインストールされている。
手順
- RHEL for Real Time カーネルの最新バージョンを使用していることを確認します。
-
GRUB
メニューを使用して、RHEL for Real Time カーネルを起動します。 - 問題が発生した場合は、RHEL for Real Time に対するバグを報告してください。
標準カーネルで問題を再現してみてください。
このトラブルシューティングの手順は、問題の場所を特定するのに役立ちます。
標準カーネルで問題が発生しない場合、バグはおそらく、Red Hat がベースライン(5.14.0)カーネルに適用した RHEL for Real Time 固有の拡張機能に導入された変更の結果です。