RHEL 9 for Real Time のインストール
Red Hat Enterprise Linux への RHEL for Real Time カーネルのインストール
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
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 9 の一部として提供され、RHEL 9 とのシームレスな統合を提供します。RHEL for Real Time により、組織内のレイテンシーを測定、設定、記録することができます。
RHEL for Real Time をインストールする前に、ベースプラットフォームが適切にチューニングされ、システム BIOS パラメーターが調整されていることを確認します。これらのタスクの実行に失敗すると、RHEL Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。
1.1. RHEL for Real Time でのレイテンシーの最適化 リンクのコピーリンクがクリップボードにコピーされました!
RHEL for Real Time は、非常に高い決定要件があるアプリケーション用に、適切にチューニングされたシステムでの使用を目的に設計されています。カーネルシステムのチューニングにより、決定論の改善が大きくなります。
たとえば、多くのワークロードで、システムを徹底してチューニングすることで、約 90% ほど一貫性が向上します。このため、RHEL for Real Time を使用する前に、まず標準的な RHEL のシステムチューニングを実行して、目的が満たされているかどうかを確認することが推奨されます。
システムのチューニングが重要なのは、リアルタイムカーネルを使用する場合でも標準カーネルの場合でも同じです。RHEL の一部として提供される標準カーネルを実行している調整されていないシステムに Real Time カーネルをインストールしても、目立った利点は得られないでしょう。標準カーネルをチューニングすることで、達成可能なレイテンシー改善の 90% が得られます。リアルタイムカーネルは、最も要求の厳しいワークロードで必要とされる、レイテンシー改善の最後の 10% を提供します。
リアルタイムカーネルシステムをチューニングする前に、ベースプラットフォームが適切にチューニングされ、システムの BIOS パラメーターの調整が行われていることを確認してください。これらのタスクの実行に失敗すると、RHEL Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。
リアルタイムカーネルの目的は、一貫性のある、低レイテンシーの、決定論に基づく予測可能な応答時間を提供することです。リアルタイムカーネルに関連する、追加のカーネルオーバーヘッドがあります。これは主に、個別にスケジュール設定されたスレッドでハードウェア割り込みを処理するためです。ワークロードのオーバーヘッドが増大すると、全体的なスループットが低下します。スループットの低下は 0% から 30% までの範囲ですが、正確な量はワークロードに大きく依存します。
1.2. DNF を使用した RHEL for Real Time のインストール リンクのコピーリンクがクリップボードにコピーされました!
dnf を使用してリアルタイムカーネルをインストールするだけでなく、Red Hat Enterprise Linux のダウンロードポータルから、Red Hat Enterprise Linux の他のすべての ダウンロード 可能なコンポーネントとともにダウンロードできます。Version メニューから適切なバージョンを選択します。
前提条件
- AMD64 または Intel64 システムに最新バージョンの RHEL 9 がインストールされている。リアルタイムカーネルは、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-9-for-x86_64-rt-rpmsRHEL for Real Time パッケージグループをインストールします。
# dnf groupinstall RTこのグループにより、複数のパッケージがインストールされます。
-
kernel-rtには、RHEL for Real Time カーネルパッケージが含まれています。 -
kernel-rt-coreには、コア RHEL for Real Time カーネルパッケージが含まれています。 -
kernel-rt-develには、RHEL for Real Time カーネル開発パッケージが含まれています。 -
kernel-rt-modulesには、RHEL for Real Time カーネルモジュールパッケージが含まれています。 -
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 9 リポジトリーで入手できます。# dnf install tuna
RHEL for Real Time カーネルがインストールされると、自動的にデフォルトのカーネルに設定され、次回の起動時に使用されます。kernel、kernel-debug、または kernel-rt-debug などの他の既存のカーネルバリアントをデフォルトのブートカーネルとして設定することもできます。詳細は、kernel-rt をデフォルトのブートカーネルとして設定する を参照してください。
検証
インストールの場所を確認し、コンポーネントが正常にインストールされていることを確認します。
# 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
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 デバッグパッケージ (デバッグおよびコードトレース用)。
| RPM パッケージ名 | 説明 | RT 固有 | 必須 |
|---|---|---|---|
|
| 低レイテンシーおよびプリエンプション機能 | はい | はい |
| RPM パッケージ名 | 説明 | RT 固有 | 必須 |
|---|---|---|---|
|
| カーネル開発用のヘッダーおよびライブラリー | はい | いいえ |
|
| デバッグ機能がコンパイルされた RHEL for Real Time カーネル (低速) | はい | いいえ |
|
| デバッグカーネル開発に使用するヘッダーおよびライブラリー | はい | いいえ |
|
| システムレイテンシーを測定し、優先度継承ミューテックスが適切に機能することを証明するためのユーティリティー | いいえ | いいえ |
デバッグパッケージは、カーネルクラッシュダンプを分析するために perf、trace-cmd、および crash ユーティリティーで使用するために提供されています。デバッグパッケージにはシンボルテーブルが含まれ、これらは非常に大きいです。このため、デバッグパッケージは、他の RHEL for Real Time パッケージとは別に配信されます。デバッグパッケージは、RHEL for Real Time - Debug RPMs リポジトリーからダウンロードできます。
| RPM パッケージ名 | 説明 | RT 固有 | 必須 |
|---|---|---|---|
|
|
| はい | いいえ |
|
| プロファイリングおよび追跡用のシンボル | はい | いいえ |
1.4. インストール後の手順 リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムカーネルをインストールした後、次のことを確認します。
- 最適な低レイテンシーの決定論を実現するには、RHEL for Real Time 固有のシステムチューニングを実行します。
- リアルタイムカーネルと標準カーネルのモジュール互換性について理解します。
-
kdumpを有効にするには、kexec/kdumpを有効にしてクラッシュダンプ情報を提供するように RHEL for Real Time を設定する必要があります。 - Real Time カーネルがデフォルトのカーネルであることを確認するには、以下のコマンドを実行します。
リアルタイムカーネルと標準カーネルのモジュール互換性
リアルタイムカーネルは、標準の Red Hat Enterprise Linux 9 カーネルとは大きく異なります。結果として、サードパーティーのカーネルモジュールは RHEL for Real Time と互換性がありません。
カーネルモジュールは、特別にビルドされたカーネルに固有のものです。リアルタイムカーネルは、標準のカーネルとは大きく異なるため、モジュールも大きく異なります。したがって、Red Hat Enterprise Linux 9 からサードパーティーのモジュールを取得して、リアルタイムカーネルでそのまま使用することはできません。
サードパーティーのモジュールを使用する必要がある場合は、RHEL for Real Time の開発およびテストパッケージで利用可能な RHEL for Real Time ヘッダーファイルを使用して再コンパイルする必要があります。
標準の Red Hat Enterprise Linux 9 用で、現在 RHEL for Real Time 用のカスタムビルドがないサードパーティードライバーは、次のとおりです。
- EMC Powerpath
- NVidia graphics
- Qlogic の高度なストレージアダプター設定ユーティリティー
ユーザー空間の syscall インターフェイスは、RHEL for Real Time と互換性があります。
第2章 実行する RHEL カーネルの指定 リンクのコピーリンクがクリップボードにコピーされました!
起動中に GRUB メニューで必要なカーネルを手動で選択すると、インストールされている任意のカーネル (標準または Real Time) で起動できます。デフォルトで起動するカーネルを設定することも可能です。
RHEL for Real Time カーネルがインストールされると、自動的にデフォルトのカーネルに設定され、次回の起動時に使用されます。
2.1. デフォルトのカーネルの表示 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで起動するように設定されたカーネルを表示できます。
手順
デフォルトのカーネルを表示するには、以下のコマンドを実行します。
# grubby --default-kernel /boot/vmlinuz-kernel-rt-5.14.0-70.13.1.rt21.83.el9_0コマンドの出力の
rtは、デフォルトのカーネルがリアルタイムカーネルであることを示しています。
2.2. 実行中のカーネルの表示 リンクのコピーリンクがクリップボードにコピーされました!
現在実行中のカーネルを表示できます。
手順
現在システムが実行中のカーネルを表示します。
~]# uname -a Linux rt-server.example.com 4.18.0-80.rt9.138.el8.x86_64 …注記システムが、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>RT_VMLINUZは、kernel-rtカーネルに関連付けられたvmlinuxファイルの名前です。以下に例を示します。# grubby --set-default=/boot/vmlinuz-5.14.0-284.11.1.rt14.296.el9_2.x86_64+rtシステム更新時のデフォルトのブートカーネルとして
kernel-rtを設定するには、次のコマンドを入力します。# sed -i ‘s/UPDATEDEFAULT=.*/UPDATEDEFAULT=yes/g’/etc/sysconfig/kernel # sed -i 's/DEFAULTKERNEL=.*/DEFAULTKERNEL=kernel-rt-core/g'/etc/sysconfig/kernelUPDATEDEFAULT変数をyesとして指定すると、システムの更新で変更されるデフォルトのカーネルが設定されます。出力例のデフォルトカーネルのパスは、インストールされている
kernel-rt-coreパッケージに固有のものです。rpm -q kernel-rt-coreコマンドを使用すると、カーネルへのパスをパッケージから確認できます。オプション: カーネルへのパスをパッケージから確認する必要がある場合は、まずインストールされているパッケージをリストします。
# rpm -q kernel-rt-core kernel-rt-core-5.14.0-284.11.1.rt14.296.el9_2.x86_64 kernel-rt-core-5.14.0-284.10.1.rt14.295.el9_2.x86_64 kernel-rt-core-5.14.0-284.9.1.rt14.294.el9_2.x86_64最新のインストール済みパッケージをデフォルトとして使用するには、次のコマンドを入力して、ブートイメージへのパスをそのパッケージから見つけます。
# rpm -ql kernel-rt-core-5.14.0-284.11.1.rt14.296.el9_2.x86_64|grep‘^/boot/vmlinu’ /boot/vmlinuz-5.14.0-284.11.1.rt14.296.el9_2.x86_64.x86_64+rtkernel-rtをデフォルトのブートカーネルとして設定するには、次のコマンドを入力します。# grubby --set-default=/boot/vmlinuz-5.14.0-284.11.1.rt14.296.el9_2.x86_64.x86_64+rt
検証
kernel-rtがデフォルトのカーネルであることを確認するには、次のコマンドを入力します。# grubby --default-kernel /boot/vmlinuz-5.14.0-284.11.1.rt14.296.el9_2.x86_64.x86_64+rt
第3章 kdump のインストール リンクのコピーリンクがクリップボードにコピーされました!
新しいバージョンの RHEL 9 インストールでは、kdump サービスはデフォルトでインストールされ、アクティブ化されます。
3.1. kdump とは リンクのコピーリンクがクリップボードにコピーされました!
kdump は、分析用にシステムメモリーの内容を含む vmcore ファイルを生成するクラッシュダンプ機能を提供します。kdump は、再起動を行うことなく予約済みの第 2 のカーネルを起動するために、kexec を使用します。その結果、クラッシュしたカーネルのメモリーが正確に記録されます。
カーネルクラッシュダンプは、システム障害時に利用できる唯一の情報になります。したがって、ミッションクリティカルな環境では、kdump を稼働させることが重要です。Red Hat は、通常のカーネル更新サイクルで kexec-tools を定期的に更新してテストすることを推奨します。これは、新しいカーネル機能をインストールするときに重要です。
マシンに複数のカーネルがある場合は、インストールされているすべてのカーネルに対して、または指定したカーネルに対してのみ 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に必要なメモリー予約を設定します。= コマンドラインでの kdump のインストール
カスタムの キックスタート インストールなどのインストール方法では、kdump がデフルトでインストールまたは有効化 されない 場合があります。その場合、次の手順で kdump を有効にできます。
前提条件
- アクティブな RHEL サブスクリプションがある。
-
システムの CPU アーキテクチャー用の
kexec-toolsパッケージを含むリポジトリーがある。 -
kdump設定とターゲットの要件をすべて満たしている。詳細は、サポートされている kdump 設定とターゲット を参照してください。
手順
システムに
kdumpがインストールされているかどうかを確認します。# rpm -q kexec-toolsこのパッケージがインストールされている場合は以下を出力します。
# kexec-tools-2.0.22-13.el9.x86_64このパッケージがインストールされていない場合は以下を出力します
package kexec-tools is not installedkdumpおよび必要なパッケージをインストールします。# dnf install kexec-tools
第4章 コマンドラインで kdump の設定 リンクのコピーリンクがクリップボードにコピーされました!
kdump 用メモリーは、システムの起動時に予約されます。システムの Grand Unified Bootloader (GRUB) 設定ファイルでメモリーサイズを設定できます。メモリーサイズは、設定ファイルで指定された crashkernel= 値と、システムの物理メモリーのサイズによって異なります。
4.1. kdump サイズの見積もり リンクのコピーリンクがクリップボードにコピーされました!
kdump 環境を計画および構築するときは、クラッシュダンプファイルに必要な容量を把握することが重要です。
makedumpfile --mem-usage コマンドは、クラッシュダンプファイルに必要な容量を推定します。また、メモリー使用量に関するレポートを生成します。このレポートは、ダンプレベルと、除外しても問題ないページを決定するのに役立ちます。
手順
次のコマンドを入力して、メモリー使用量に関するレポートを生成します。
# 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
makedumpfile --mem-usage は、必要なメモリーをページ単位で報告します。つまり、カーネルページサイズを元に、使用するメモリーのサイズを計算する必要があります。
4.2. RHEL 9 での kdump メモリー使用量の設定 リンクのコピーリンクがクリップボードにコピーされました!
kexec-tools パッケージは、デフォルトの crashkernel= メモリー予約値を保持します。kdump サービスは、これらのデフォルト値を使用して各カーネルのメモリーを確保します。これらの値は、手動設定の基準値として使用できます。最小要件はハードウェアによって異なりますのでご注意ください。
また、kdump の自動メモリー割り当ては、システムハードウェアアーキテクチャーと利用可能なメモリーサイズにより異なります。たとえば、AMD64 および Intel 64 ビットアーキテクチャーでは、crashkernel= パラメーターのデフォルト値は、使用可能なメモリーが 1 GB を超える場合にのみ機能します。kexec-tools ユーティリティーは、AMD64 および Intel 64 ビットアーキテクチャーで次のデフォルトのメモリー予約を設定します。
crashkernel=1G-4G:192M,4G-64G:256M,64G:512M
kdumpctl estimate を実行して、クラッシュをトリガーせずにおおよその値を取得することもできます。crashkernel= の推定値は正確でない可能性がありますが、適切な crashkernel= 値を設定する際の参考として役立ちます。
起動コマンドラインの crashkernel=auto オプションは、RHEL 9 以降のリリースでは対応しなくなりました。
前提条件
- システムの root 権限がある。
-
kdumpの設定とターゲットの要件をすべて満たしている。詳細は、サポートされている kdump 設定とターゲット を参照してください。 -
IBM Z システムの場合は、
ziplユーティリティーがインストールされている。
手順
クラッシュカーネルのデフォルト値を設定します。
# kdumpctl reset-crashkernel --kernel=ALLcrashkernel=値を設定する場合は、kdumpを有効にしてシステムを再起動し、設定をテストします。kdumpカーネルの起動に失敗した場合は、メモリーサイズを徐々に増やして許容可能な値を設定します。カスタムの
crashkernel=値を使用するには、以下を実行します。必要なメモリー予約を設定します。
crashkernel=192M必要に応じて、構文
crashkernel=<range1>:<size1>,<range2>:<size2>を使用して、予約メモリーの量を、インストールされているメモリーの合計量に応じて変動する値に設定できます。以下に例を示します。crashkernel=1G-4G:192M,2G-64G:256Mこの例では、システムメモリーの合計量が 1 GB 以上 4 GB 未満の場合、192 MB のメモリーが予約されます。メモリーの合計量が 4 GB を超える場合、256 MB が
kdump用に予約されます。オプション: 予約済みメモリーをオフセットします。
crashkernel予約は非常に早いため、特定の固定オフセットでメモリーを予約する必要があるシステムもあります。また、特別な用途にいくつかの領域を予約したいシステムもあります。オフセットが設定されると、予約メモリーはそこから開始されます。予約メモリーをオフセットするには、以下の構文を使用します。crashkernel=192M@16Mこの例では、16 MB (物理アドレス 0x01000000) から始まる 192 MB のメモリーを予約します。オフセットを 0 に設定するか、値を指定しない場合、
kdumpは予約されたメモリーを自動的にオフセットします。オフセットを最後の値として指定することにより、変数メモリー予約を設定するときにメモリーをオフセットすることもできます。たとえば、crashkernel=1G-4G:192M,2G-64G:256M@16Mです。ブートローダー設定を更新します。
# grubby --update-kernel ALL --args "crashkernel=<custom-value>"<custom-value>には、クラッシュカーネル用に設定したカスタムのcrashkernel=値を含める必要があります。
変更を有効にするために再起動します。
# reboot
kdump 設定をテストするコマンドにより、カーネルがクラッシュし、データが失われます。注意して手順を実行してください。kdump 設定のテストにアクティブな実稼働システムを使用しないでください。
sysrq キーをアクティブ化してカーネルをクラッシュさせます。address-YYYY-MM-DD-HH:MM:SS/vmcore ファイルは、/etc/kdump.conf ファイルで指定されているターゲットの場所に保存されます。デフォルトのターゲットの場所を選択した場合、vmcore ファイルは /var/crash/ の下にマウントされたパーティションに保存されます。
sysrqキーをアクティブにして、kdumpカーネルを起動します。# echo c > /proc/sysrq-triggerこのコマンドによりカーネルがクラッシュし、必要に応じてカーネルが再起動されます。
-
/etc/kdump.confファイルを表示し、ターゲットの保存先にvmcoreファイルが保存されているかどうかを確認します。
4.3. kdump ターゲットの設定 リンクのコピーリンクがクリップボードにコピーされました!
kdump を設定して、クラッシュダンプをローカルに保存するか、ネットワークファイルシステム (NFS) またはセキュアシェル (SSH) を使用してネットワーク経由で送信するかを選択します。デフォルトの保存場所は /var/crash/ ですが、ターゲットをカスタマイズしてデバイスまたはリモートサーバーに直接書き込むように設定することで、一度にアクティブになる保存オプションが 1 つだけになるようにすることができます。
前提条件
- システムの root 権限がある。
-
kdump設定とターゲットの要件をすべて満たしている。詳細は、サポートされている kdump 設定とターゲット を参照してください。
手順
ローカルファイルシステムの
/var/crash/ディレクトリーにクラッシュダンプファイルを保存するには、/etc/kdump.confファイルを変更して、パスを指定します。path /var/crashpath /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ディレクティブは、kdumpがクラッシュダンプの取得と指定の保存先への保存を完了した 後に 実行されるシェルスクリプトまたはコマンドを指定するものです。このメカニズムを使用すると、kdumpの機能を拡張して、ファイル権限の調整などの操作を実行できます。-
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重要RHEL 9 では、
kdumpsystemd サービスが起動する際に、pathディレクティブを使用してkdumpのターゲットとして定義されたディレクトリーが存在していなければ、エラーが発生する可能性があります。以前のバージョンの RHEL とは異なり、サービス起動時にディレクトリーが存在しない場合、ディレクトリーは自動的に作成されなくなりました。
-
ファイルを別のパーティションに書き込むには、
/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重要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
-
NFSプロトコルを使用してクラッシュダンプをリモートマシンに保存するには、次の手順を実行します。-
#nfs my.server.com:/export/tmpの行頭にあるハッシュ記号 (#) を削除します。 値を、正しいホスト名およびディレクトリーパスに置き換えます。以下に例を示します。
nfs penguin.example.com:/export/cores変更を有効にするには、
kdumpサービスを再起動します。sudo systemctl restart kdump.service注記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
-
-
4.4. kdump コアコレクターの設定 リンクのコピーリンクがクリップボードにコピーされました!
kdump では、core_collector を使用してクラッシュダンプイメージをキャプチャーします。RHEL では、makedumpfile ユーティリティーがデフォルトのコアコレクターです。これは、以下に示すプロセスによりダンプファイルを縮小するのに役立ちます。
- クラッシュダンプファイルのサイズを圧縮し、さまざまなダンプレベルを使用して必要なページのみをコピーする
- 不要なクラッシュダンプページを除外する
- クラッシュダンプに含めるページタイプをフィルタリングする
クラッシュダンプファイルの圧縮は、RHEL 7 以降ではデフォルトで有効になっています。
クラッシュダンプファイルの圧縮をカスタマイズする必要がある場合は、以下の手順に従います。
構文
core_collector makedumpfile -l --message-level 1 -d 31
オプション
-
-c、-l、または-p:zlib(-cオプションの場合)、lzo(-lオプションの場合)、またはsnappy(-pオプションの場合) のいずれかを使用して、ページごとに圧縮ダンプファイルの形式を指定します。 -
-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
-l オプションにより、dump の圧縮ファイル形式を指定します。-d オプションで、ダンプレベルを 31 に指定します。--message-level オプションで、メッセージレベルを 1 に指定します。
また、-c オプションおよび -p オプションを使用した以下の例を検討してください。
-cを使用してクラッシュダンプファイルを圧縮するには、次のコマンドを実行します。core_collector makedumpfile -c -d 31 --message-level 1-pを使用してクラッシュダンプファイルを圧縮するには、次のコマンドを実行します。core_collector makedumpfile -p -d 31 --message-level 1
4.5. 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
4.6. kdump の設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
/etc/sysconfig/kdump ファイルは、kdump カーネルのコマンドラインパラメーターを制御します。通常はデフォルト設定で十分ですが、KDUMP_COMMANDLINE_APPEND や KDUMP_COMMANDLINE_REMOVE などの変数を変更することで、特定のデバッグニーズに合わせてカーネルの動作をカスタマイズできます。
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_APPENDこのオプションは、現在のコマンドラインに引数を追加します。この引数は、以前の
KDUMP_COMMANDLINE_REMOVE変数によって解析されたものである場合があります。kdumpカーネルの場合は、mce、cgroup、numa、hest_disableなどの特定のモジュールを無効にすると、カーネルエラーを防ぐのに役立ちます。これらのモジュールは、kdump用に予約されているカーネルメモリーの大部分を消費したり、kdumpカーネルの起動失敗を引き起こしたりする可能性があります。kdumpカーネルコマンドラインでメモリーcgroupを無効にするには、以下のコマンドを実行します。
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 restartkdumpctlを使用してkdumpサービスのステータスを確認します。# kdumpctl statuskdump:Kdump is operational必要に応じて
systemctlコマンドを使用すると、出力が systemd ジャーナルに記録されます。カーネルクラッシュを開始して、
kdumpの設定をテストします。sysrq-triggerキーの組み合わせによりカーネルがクラッシュし、必要に応じてシステムが再起動します。# echo c > /proc/sysrq-triggerカーネルの再起動時に、
/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 start kdump.servicekdumpサービスを停止します。# systemctl stop kdump.servicekdumpサービスを無効にします。# systemctl disable kdump.service
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 を読み込まないようにする設定 リンクのコピーリンクがクリップボードにコピーされました!
KDUMP_COMMANDLINE_APPEND= 変数を設定することで、特定のカーネルドライバーが kdump キャプチャーカーネルにロードされるのを防ぎます。これにより、メモリー不足 (OOM) エラーを回避し、問題のあるモジュールを initramfs から除外することで、クラッシュカーネルの安定性を確保します。
次のいずれかの設定オプションを使用して、KDUMP_COMMANDLINE_APPEND= 変数を追加できます。
-
rd.driver.blacklist=<modules> -
modprobe.blacklist=<modules>
前提条件
- システムの root 権限がある。
手順
現在実行中のカーネルに読み込まれるモジュールのリストを表示します。ロードをブロックするカーネルモジュールを選択します。
$ lsmodModule Size Used by fuse 126976 3 xt_CHECKSUM 16384 1 ipt_MASQUERADE 16384 1 uinput 20480 1 xt_conntrack 16384 1/etc/sysconfig/kdumpファイルのKDUMP_COMMANDLINE_APPEND=変数を更新します。以下に例を示します。KDUMP_COMMANDLINE_APPEND="rd.driver.blacklist=hv_vmbus,hv_storvsc,hv_utils,hv_netvsc,hid-hyperv"modprobe.blacklist=<modules>設定オプションを使用した以下の例も検討してください。KDUMP_COMMANDLINE_APPEND="modprobe.blacklist=emcp modprobe.blacklist=bnx2fc modprobe.blacklist=libfcoe modprobe.blacklist=fcoe"kdumpサービスを再起動します。# systemctl restart kdump
4.11. 暗号化されたディスクがあるシステムでの kdump の実行 リンクのコピーリンクがクリップボードにコピーされました!
LUKS で暗号化されたパーティションをマウントするには、一定量のメモリー容量が必要です。システムにこの利用可能なメモリーが不足している場合、cryptsetup ユーティリティーはパーティションのマウントに失敗します。その結果、2 番目のカーネルは vmcore ファイルを暗号化されたターゲットにキャプチャーすることができません。
必要なメモリー量を推定するには、kdumpctl estimate コマンドを使用してください。このコマンドは、現在のカーネルサイズ、カーネルモジュール、initramfs、および LUKS の要件に基づいて、推奨される crashkernel 値を表示します。
推奨の crashkernel 値は、現在のカーネルサイズ、カーネルモジュール、initramfs、および暗号化したターゲットメモリー要件に基づいて計算されます。
カスタムの crashkernel= オプションを使用している場合、kdumpctl estimate は LUKS required size 値を出力します。この値は、LUKS 暗号化ターゲットに必要なメモリーサイズです。
手順
crashkernel=の推定値を出力します。# *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.-
crashkernel=の値を増やして、必要なメモリー量を設定します。 - システムを再起動します。
それでも kdump がダンプファイルを暗号化したターゲットに保存できない場合は、必要に応じて crashkernel= を増やしてください。
第5章 kdump の有効化 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 9 システムでは、特定のカーネルまたはインストールされているすべてのカーネルで kdump 機能を有効または無効にするように設定できます。ただし、kdump 機能を定期的にテストし、その動作状態を検証する必要があります。
5.1. インストールされているすべてのカーネルでの kdump の有効化 リンクのコピーリンクがクリップボードにコピーされました!
マシンにインストールされているすべてのカーネルに対して kdump サービスを開始します。サービスは kexec ツールがインストールされた後に開始されます。
前提条件
- 管理者権限がある。
手順
インストールされているすべてのカーネルに
crashkernel=コマンドラインパラメーターを追加します。# grubby --update-kernel=ALL --args="crashkernel=xxM"xxMは必要なメモリー (メガバイト単位) です。-
UKI の場合は、必要な引数に関連付けられたアドオンを
/lib/modules/$(uname -r)/vmlinuz-virt.efi.extra.d/から/boot/efi/loader/addons/にコピーすることにより、インストールされているすべての UKI にcrashkernel=コマンドラインパラメーターを追加します。 システムを再起動します。
# rebootkdumpサービスを有効にします。# systemctl enable --now kdump.service
検証
kdumpが実行されていることを確認します。# systemctl status kdump.servicekdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled) Active: active (live)
5.2. 特定のインストール済みカーネルでの kdump の有効化 リンクのコピーリンクがクリップボードにコピーされました!
マシン上の特定のカーネルに対して kdump サービスを開始します。
前提条件
- 管理者権限がある。
手順
マシンにインストールされているカーネルをリスト表示します。
# ls -a /boot/vmlinuz-*/boot/vmlinuz-0-rescue-2930657cd0dc43c2b75db480e5e5b4a9 /boot/vmlinuz-4.18.0-330.el8.x86_64 /boot/vmlinuz-4.18.0-330.rt7.111.el8.x86_64特定の
kdumpカーネルを、システムの Grand Unified Bootloader (GRUB) 設定に追加します。以下に例を示します。
# grubby --update-kernel=vmlinuz-4.18.0-330.el8.x86_64 --args="crashkernel=xxM"xxMは必要なメモリー予約 (メガバイト単位) です。-
UKI の場合は、必要な引数に関連付けられたアドオンを
/lib/modules/$(uname -r)/vmlinuz-virt.efi.extra.d/から/boot/efi/EFI/Linux/<machine-id>-<kernel-version>.efi.extra.d/にコピーすることにより、特定の UKI にcrashkernel=コマンドラインパラメーターを追加します。 kdumpを有効にします。# systemctl enable --now kdump.service
検証
kdumpが実行されていることを確認します。# systemctl status kdump.servicekdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled) Active: active (live)
5.3. kdump サービスの無効化 リンクのコピーリンクがクリップボードにコピーされました!
kdump.service を停止し、RHEL 9 システムでのサービスの起動を無効にすることができます。
前提条件
-
kdump設定とターゲットの要件をすべて満たしている。詳細は、サポートされている kdump 設定とターゲット を参照してください。 -
kdumpのインストール用のオプションがすべて、要件に応じて設定されている。詳細は、kdump のインストールを 参照してください。
手順
現在のセッションで
kdumpを停止するには、以下のコマンドを実行します。# systemctl stop kdump.servicekdumpを無効にするには、以下を行います。# systemctl disable kdump.service
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 がベースライン (4.18.0) カーネルに適用した RHEL for Real Time 固有の拡張機能に導入された変更の結果です。