|
標準のLinuxカーネルでは、クッラシュダンプ機能は入ってい
ません。
そこで、Linuxにクラッシュダンプ機能を追加するために
LKCD[1]、
netdump[2]、diskdump[3]等のツールの開発が行われてい
ます。
しかし、これらの既存のクラッシュダンプ機能には、ダンプ採取の確実性の観点から、大きく二つの問題点が存在
します。
一つ目は、資源の問題です。特に資源のロックに問題があ
ります。
いずれのクラッシュダンプ・システムもデバイスへの出力は、
既存のドライバを使用します。ドライバは、通常のカーネルサービスを使用
しますが、もし仮にクラッシュを引き起こした処理が、ダンプ出力のために必要な資源をロックしていた場合、ダンプ処理はデッドロックに陥ることにな
ります。また、マルチプロセッサ・システムにおいては、クラッシュダンプの開始時に他のCPUで実行中の処理については強制的に中断させられるため、ダンプ出力にために必要な資源を
ロックしていれば、ダンプ処理はデッドロックに陥ります。
ロックはしていなくても、資源不足のためにダンプ処理が失敗する可能性もあ
ります。
二つ目は、制御表の信頼性の問題です。カーネルがクラッシュするということは、カーネル内に何らかの矛盾が生じているということであり、
制御表が破壊されてる可能性が高いわけです。既存のクラッシュダンプでは、
ダンプの出力にカーネルの通常の機能を使用しているために、破壊されている制御表を参照する可能性が高くな
ります。
元々、クラッシュダンプ機能は、カーネルがもはや信用できないという前提で、必要最小限かつ動くルートを完全に把握して設計されていなければな
りません。
Linuxの既存のクラッシュダンプ機能の問題点は、カーネルが正常に動くことを前提として設計されていることであると言え
ます(特にLKCD)。
Linux
カーネルは、複雑化の一途をたどっており、SCSIサブシステムを取り上げても、その動きを完全に把握することは
困難です。既存の
Linuxカーネルの中に制御可能なダンプルートを設けることは難しいと考えられ
ます。したがって、既存のカーネルと無依存にダンプを採取できる機能を考える必要が出てくるので
す。
|