オープンソースツールを使ったハードウェア診断

すべての電子機器と同様、コンピュータにも故障や破損が起こる。カーネルのコアダンプや突然のクラッシュに見舞われたことがないのは、幸運な人だけだろう。よく起こるハードウェアの問題としては、RAMモジュールの不良、CPUの過熱または破損、ハードディスクのセクタまたはクラスタの障害が多い。本稿では、こうした問題を突き止めるためのオープンソースツールをいくつか紹介する。これで時間とお金を節約できるほか、悩みの種も減るはずだ。

GNU/LinuxのライブCDディストリビューションは、ハードウェアの診断に便利だ。ハードウェアの診断に私が好んで用いるライブCDディストリビューションのGRMLには、これから説明するツールをはじめ、ホームユーザと熟練システム管理者のどちらにも役立つプログラムが含まれている。なお、ここで説明するツールの一部またはすべてが入っているGRML以外のディストリビューションも存在する。

大きな不良のあるメモリの影響

不良メモリは、システムの異常停止やときにはデータ破壊にもつながるクラッシュの原因になる。今度、プログラムをコンパイルしようとして失敗したときには、プログラムの作者にバグレポートを送る前にメモリのチェックを行うとよいだろう。Memtest86+は、RAMをテストするための優れたユーティリティだ。このツールはmemtest86をベースにしたものだが、AMD64をはじめとする最近のハードウェアのほとんどに対応している。一方、memtest86のほうは、x86ベースのアーキテクチャにしか対応していない。Memtest86+はブートイメージなので、オペレーティングシステムに依存せずに動作する。

Memtest86+を実行するには、GRMLのCDを使ってシステムをブートし、ブートプロンプトでmemtestと入力すればよい。使い方は簡単で、実行するとすぐに自動的にメモリのテストが始まる。cのキーを押すと表示される設定メニューでは、テスト方法の選択、ECCモードへの移行(システムがECCメモリを使用している場合)、テストの再開始、画面の更新が行える。ただし、大半のユーザは、デフォルト設定のままで問題ないはずだ。

一般にメモリの問題を検出するのは難しいので、確実を期すために、長期間Memtest86+を実行したままにしておき、最低10回は繰り返すとよい。また、Escキーを押せば、Memtest86+を終了してコンピュータを再起動させることができる。

CPUの過熱

CPUの過熱もまた、システムクラッシュの原因になり得る。CPUの問題は、日常的な作業の途中ではなく、コードのコンパイルや動画のエンコードなど多量のCPUリソースを消費するアプリケーションの実行中に現れる傾向がある。そのため、cpuburnというパッケージを使ってCPUに高い負荷をかけることで、CPUに問題があるかどうかをチェックできる。このcpuburnは複数のプログラムを集めたもので、プロセッサに極限まで負荷をかけることを目的としている。

cpuburnには、burn[CPU_TYPE]という名前を持つ、特定のCPUタイプに最適化された実行形式のバイナリが含まれている。なお、[CPU_TYPE]の部分にはP5、P6、K6、K7、MMX、BXの1つが入る。自分のシステムがどのCPUタイプにあたるかは、READMEファイル(GRMLの場合は/usr/share/doc/cpuburn/READMEにインストールされている)を読んで判断する。

また、cpuburnは、Lm_sensorsやACPI(ノートPCをテストする場合)のような温度センサプローブと組み合わせても使うことができ、CPU温度の情報をリアルタイムに参照できる。そのためには、仮想端末の1つでburn[CPU_TYPE]を実行し、もう1つでセンサを実行すればよい。CPUのクロックアップや追加の冷却対策をしている場合は、このプログラムがきっと役に立つだろう。

ハードディスクの問題

記憶装置メーカーは、より小型でより高速なハードディスクを絶えず生み出しているが、どんなハードディスクにも故障はつきものだ。大半のハードディスクは、Self-Monitoring, Analysis and Reporting Technology(略してSMART)という監視機能を備えている。SMARTは、ハードディスクドライブに関するあらゆる情報(型式、シリアル番号、動作温度など)を取得する以外に、ハードディスクの整合性をテストする優れた方法も提供している。SMARTを利用するには、smartmontoolsのようなプログラムを使う。

smartmontoolsパッケージには、2つのプログラムが含まれている。SMARTのタスクを実行するためのコマンドライン・ユーティリティsmartctlと、SMARTシステムを監視し、ハードディスク故障の予防対策を実施するためのデーモンsmartdである。ただし、これらのプログラムを使う前に、それぞれのmanページを注意深く読んでおくこと。

まずは、ハードディスクドライブからSMARTの情報をすべて読み取るために、smartctl -a /dev/HDD_DEVICE (HDD_DEVICEの部分は、使っているハードディスクのデバイスノード ― たとえば、プライマリマスタのIDEディスクの場合は/dev/hda ― で置き換える)を実行する。また、SATAドライブを使っている場合は、このコマンドの最後に-d ataを追加する。SMARTが有効ではない、というメッセージが出てsmartctlの実行に失敗した場合は、今度はsmartctl -s on /dev/HDD_DEVICE を実行するとよい。ハードディスクドライブの整合性を検証するには、smartctl -t long /dev/HDD_DEVICE として長期のSMARTテストを実行する。このテストはバッググラウンドで実行されるため、結果の確認は、smartctl -l selftest /dev/HDD_DEVICE の実行によって行う。

smartdデーモンは、実行中のシステムに対して定期的にSMARTテストを実行できる。smartdの設定ファイルsmartd.conf(通常は/etcにインストールされる)には、SMARTテストを定期的に実行する方法の例が示されているが、smartdの動作の詳細についてはmanページを参照してもらいたい。

何らかの理由でSMARTを実行できない ― たとえば、ハードディスクドライブがSMARTに対応していない ― 場合は、badblocksというプログラムを使ってハードディスクをチェックできる。badblocksは、ほとんどすべてのGNU/Linuxディストリビューションにおいてデフォルトでインストールされるe2fsprogsパッケージに含まれている。ハードディスク上の不良ブロックをすべて検出するための非破壊の読み書きテストを行う場合は、badblocks -n -v /dev/HDD_DEVICE を実行すればよい。

まとめ

ときどき私は、中小企業向けにコンサルティングやシステム管理のサービスを行っているが、ほとんどの場合は、ここで紹介したツールとPhilipsのドライバーがあれば用が足りる。問題のある部分を突き止め、ただその部品を交換することによって多くの時間を節約できる。システム全体をベンダのサービス部門に送る必要はないのだ。既存システムにおける問題の有無を確認する場合にも、構築した新しいシステムの稼働前にチェックを行う場合にも、これらのツールは貴重であり、しかも無料で入手できる。

NewsForge.com 原文