CentOS5/6 のカーネルダンプを CentOS7 の crash コマンドで読み込む

こんにちは。サイオステクノロジー OSS サポート担当 金田です。

件数は多くないのですが、カーネルダンプを解析して障害調査をすることがあります。CentOS 系ですと、まだ CentOS5 系が現役のシステムもあり、カーネルダンプの解析のためにお問合せ元の OS バージョンにあわせて環境を作り調査、というのが一般的な流れですが、これは結構手間です。また、OS が古いと crash コマンドの機能に制限があり十分解析できないことがあります。

そこで CentOS7 の crash コマンドで古い OS のカーネルダンプが読み込ませられれば、環境作りの手間が省け、機能が豊富な新しいバージョンの crash コマンドで解析がてきるようになります。今回はその方法をご紹介します。

■kernel-debuginfo 関連のパッケージのインストール

今回は、異なるバージョンの kernel-debuginfo 関連パッケージを一つの環境に複数インストールするという点がポイントになります。ただ、kernel-debuginfo 関連パッケージを yum でインストールすると、次に新しいバージョン (またはリリース) の kernel-debuginfo 関連のパッケージをインストールする際、依存関係から古いパッケージが削除されてしまい、古いバージョン (またはリリース) ではインストールできません。そのため、rpm パッケージをダウンロードして、rpm -i –force でインストールするか、rpm2cpio ~ | cpio -idm 等でファイルを所定の場所にインストールする必要があります。ただし rpm コマンドで kernel-debuginfo 関連のパッケージをインストールした後に、yum で他のパッケージのインストールやアップデートをする際「警告: RPMDB は yum 以外で変更されました。」といった警告が出るので、これが気になる場合は rpm2cpio でインストールしたほうが良いでしょう。

では、CentOS5/6 の kernel-debuginfo 関連のパッケージをダウンロードできるように、yum レポジトリの設定をしておきます。/etc/yum.repos.d/CentOS-Debuginfo.repo に以下の設定を追加します。

今回 crash コマンドで読み込むカーネルダンプのバージョンに合わせて、CentOS5 用は以下のパッケージをダウンロードしています。
※504.el6 の部分は対応する kernel のリリース番号に合わせてください。

CentOS6 用は以下のパッケージをダウンロードしています。

■crash コマンドでの読み込み結果

ファイルは上で紹介した方法で配置したとして、実際に crash コマンドで読み込んでみます。まずは CentOS5 のクラッシュダンプから。

無事読み込めました。次に CentOS6 のカーネルダンプを読み込んでみます。

こちらも無事に読み込めました。

■最後に

若干トリッキーではありますが、CentOS7 の環境でバージョンの異なるカーネルダンプを読み込む方法をご紹介しました。rpm -ql で確認するとわかりますが、kernel-debuginfo 関連のパッケージは、バージョン+リリース番号でディレクトリが作られていて、各バージョン+リリース番号が共存可能な形で提供されているため実施可能な方法でした。kernel 以外の debuginfo はバージョン単位までしかディレクトリが作られていないので、リリース番号が異なる場合の共存はできないようです。crash コマンドでどのように解析するかといったお話はまた機会があればご紹介したいと思います。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*