TOP設計・移行・活用> lcrash
OSS適用システムの障害解析ツール
OSS適用システムの障害解析ツール

第1回:ダンプ解析ツールの現状と必要性
著者:ユニアデックス  前原 志好   2005/6/14
前のページ  1  2   3  4  次のページ
lcrash

   これは、Linux Kernel Crash Dump(LKCD)で採取されたダンプを編集するために作成されたツールで、数社の大手デベロッパーによって開発が進められている。しばらく更新がなかったのだが、昨年には新バージョンもリリースされ、LKCDダンプフォーマット以外でnetdumpフォーマット(diskdumpとnetdumpは同一フォーマット)にも対応するようになった。

   大きな特徴として、ダンプ解析にあたって独自の仕様を持っており、カーネルのシンボル情報を得るのにデバッグオプション付きでコンパイルされたカーネルを必要としないことや、異なるアーキテクチャ上で採取されたダンプにも対応できるようになっていることが挙げられる。たとえば、IA-32マシンで採取したダンプをIA-64マシンで解析することが可能である。

   更に、独自でsialというライブラリを抱え、C言語に非常に似た記述方法で作成したスクリプトをインタープリタとして動かせるエンジンを持っている。このsialはC言語と100%互換性があるわけではないので、若干癖はあるが、カーネルの変数や構造体にアクセスできるなど大変有効なユーティリティである。

   さて、紹介が長くなったが、簡単にlcrashを使ってダンプを解析する例を示す。LKCDが標準でインストールされていれば、ダンプを採取するには以下のコードを実行すればよい。

# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger

   ダンプが採取され、マシンがリブートされ、/var/log/dumpの下にダンプデータが保存される。はじめてのダンプ採取であれば、以下のコマンドを実行することでダンプ解析をスタートさせることができる。

# cd /var/log/dump/0⁄* ダンプ採取毎に数字が1増加される *⁄
# /sbin/lcrash -n 0
(略)
>>

   「>> 」というプロンプトが出てくるので、ここでlcrashのコマンドを入力してみる。

>> trace
================================================================
STACK TRACE FOR TASK: 0xde292000(bash)

0 LKST_ETYPE_O_PANIC_HEADER_hook [0xc0120a72]
1 die+141 [0xc010c1fd]
2 LKST_ETYPE_OOPS_PGFAULT_HEADER_hook+230 [0xc011ab61]
3 scrup+289 [0xc01a60a1]
4 do_con_write+730 [0xc01a9dda]
5 vgacon_cursor+222 [0xc01f63de]
6 poke_blanked_console+83 [0xc01ab1e3]
7 vt_console_print+549 [0xc01aa4e5]
8 do_page_fault [0xc011a8b0]
9 error_code+93 [0xc03b822d]
10 save_this_cpu_state+59 [0xc01ec87b]
11 __dump_configure_header+51 [0xc01ec953]
12 dump_configure_header+485 [0xc01eb0b5]
13 dump_execute+54 [0xc01eb8b6]
14 sysrq_handle_crashdump+58 [0xc01b4d0a]
15 __handle_sysrq_nolock+123 [0xc01b4eeb]
16 handle_sysrq+89 [0xc01b4e49]
17 write_sysrq_trigger+83 [0xc0181e13]
18 sys_write+163 [0xc01545e3]
19 [jbd]do_get_write_access+1196 [0xe000ddec]
20 no_timing+5 [0xc03b80d1]
21 no_timing+5 [0xc03b80d1]
22 LKST_ETYPE_SYSCALL_ENTRY_HEADER_hook+53 [0xc03b8036]
================================================================
   traceコマンドは、タスクのスタックトレースの情報を表示する。この場合、引数を何も指定していないため、システムが停止したときにアクティブであったタスクのスタックトレースを表示している。ここから、sysrq-triggerに書き込みがされ、ダンプ採取ルーチンが起動されたことがわかる。

   ここでは、これ以上の解説は割愛する。LKCDのプロジェクトのページに非常に詳細なコマンドの実行方法が記載されたマニュアルがあるので、そちらを参照されたい。

LKCDのプロジェクトのページ
http://lkcd.sourceforge.net/
前のページ  1  2   3  4  次のページ


ユニアデックス株式会社 前原 志好
著者プロフィール
ユニアデックス株式会社  前原 志好
日本ユニシス(株)入社後、米国UNISYS製メインフレームのカーネルを担当する。2004年4月から、所属組織ごとユニアデックス(株)に転籍。その後OSS関連作業に着手。今年は、メインフレーマーとの掛け橋(トランスレータ)役を担当する。


INDEX
第1回:ダンプ解析ツールの現状と必要性
  はじめに
lcrash
  crash
  Aliciaの登場