I/O関連のトラブルやカーネルパニックなどの原因にハードウェアがかかわっているのは多々あることだ。しかし、実際にそのような状況に直面した場合、どのように原因を探れば良いだろうか。今回から2回に分けて、PDに必要なハードウェア関連情報の収集方法について解説しよう。
いままでに直面した問題の中で、その原因がハードウェアにあるのか、それともOSにあるのかと頭を抱えたことはないだろうか。
例えば、「新しく用意したUSBデバイスが正しく認識されない」とか、「RAID Arrayにディスクを追加するとパフォーマンスが落ちる」、「メモリ構成を変えたら不安定になった」、「システムの稼働中にNMI*によってリブートされた」、「外部ストレージが正しく認識されない」、「外部ストレージ領域でI/Oエラーが発生する」など、ハードウェアが原因と思われる現象遭遇した人も少なくないはずだ。このようなケースに直面し、OS側からのアプローチを行ったが何も見いだせず、ただ時間が経過していくだけのいわゆる「ハマッた」状況に陥った方もいるかと思う。
そこで、今回はトラブルの原因がハードウェアにあるのか、それともOSにあるのか見分けがつかないケースを想定し、そのような状況で何を手がかりにPDを進めれば良いのか、幾つか述べていきたい。
まず、このようなケースは最も厄介で、PDが難しいということをはじめに言っておこう。例えば、再現性の確認などはハードウェアを考慮した組み合わせで検証を進めなければならない。BIOS、ファームウェア、デバイスドライバ、カーネルなどのすべてに対し、それぞれのバージョンによる組み合わせを考慮する必要があるということだ。そのため、問題点を絞り込むまでに多大な時間を要してしまう。
通常、ハードウェアにも疑いを向けるケースではパーツを手当たり次第に交換して様子を見る、といった対応が思い浮かぶだろう。この場合、NIC、RAIDカード、ディスクといった末端のデバイスだけではなく、メモリ、CPUなどのコアなパーツ、さらにときにはベースボード*も交換の対象となることがある。しかし、単に現象を見ただけでパーツ交換を行うのであれば「経験」や「勘」に頼るだけとなってしまい、そこで現象が収まらなければ再度別のパーツを交換することになる。やってみて吉と出るか凶と出るか、といったところだが、得てして吉と出る方が少ないため、結局時間が掛かることとなるのである。
ハードウェアかOSかといったケースでは、その原因の多くはBIOS、ファームウェア、デバイス本体、デバイスドライバ、カーネルなど、ハードウェアの構成要素における不具合や、それぞれが前提とするバージョンレベルに不整合があることなどに起因する。例えば、ファームウェアの不具合はデバイスドライバの挙動に影響し、当該のデバイスにアクセスしたタイミングで想定された動作が行われなくなる。また、バージョンの不整合といったものも存在する。一般にデバイスドライバには、対応するファームウェアやカーネルのバージョンが前提条件として定めてあり、その前提条件が保たれていない場合動作に支障が発生する。特に、ベンダー提供のデバイスドライバなどではそのような前提条件が定められていることがある。通常この前提条件は添付のreadmeファイルなどに明記されているため、注意を怠らなければこのようなことは起こらないはずだが、前提条件不足で問題になるケースは意外に少なくない。デバイス関連のエラーやそれによって引き起こされる問題が起きた際には、まずこの前提条件を調査することを怠ってはならない。
基本的ではあるが、図1はOSがデバイスを操作する仕組みを示したものである。
まず、簡単に言えばBIOS/ファームウェアはハードウェア側で動き、デバイスドライバはOS側で動く。デバイスドライバとBIOS/ファームウェアとのアクセスはハードウェアとOSがそれぞれ持つアドレステーブルを利用する。OSが持つアドレステーブルは各デバイスに割り当てられており、デバイスドライバは割り当てられたテーブルを通じて対応したファームウェアと通信をする。それに応じてファームウェアがハードウェアを制御することでデバイスは動作するのである。
つまり、ハードウェアかOSかという境界線はBIOS/ファームウェアとデバイスドライバの間にあり、それを境にPDすることになるのである。問題が起きた場合これらを切り分けるポイントとしては、OS側からだけのアプローチではなく、同時にハードウェア側からもアプローチすることに尽きる。ハードウェア側からのアプローチにはハードウェアの持っている機能を利用するため、PDの際はハードウェア管理の領域にも足を踏み入れることになる。
Problem Determinationの略。直訳すれば、「問題を確定する」などになる問題切り分けをし、問題部分を特定する、つまり問題判別することをPDと呼ぶ
Non Maskable Interrupt致命的なハードウェア異常が発生した場合に発生する処理
マザーボードともばれる
Copyright © ITmedia, Inc. All Rights Reserved.