LinuxでDiskの温度を監視する

■ディスクのトラブルを未然に防ぐ
■ディスクの故障の予兆
 ハードウエアの故障は懐にダメージを与え,復旧に要する作業と時間に苦痛を伴いますが, 大抵は元の状態に戻せないということはありません.しかし,ディスクの故障は少々 異なり,データがサルベージ出来ない場合は,最悪の事態(データのロスト.復旧 不可能)を招く可能性があります.そのため,多くの人はディスククラッシュに関して ナーバスな態度を取ることが多く,その予兆に関して非常にセンシティブです.

 ソフト的なクラッシュが人災で引き起こされた場合には救済措置はありませんが, ハード的な故障の場合には,大抵その予兆があります. 例えばディスクの動作音が激しくなったり,異音が発せられたり,ファイルの読み込み や書き込み時にエラーが発生したりします.

 しかし,ディスクはメカニカルなパーツが多いため,障害が発生した際に一気に 全体がクラッシュし,そして全ての内容物をロストするといった最悪のシナリオも あります.そしてその予兆もユーザーが認識できるか出来ないかのレベルが出た後, 短期間で一気に症状が深刻化する場合があります.そのため,人間が主観的に知覚 できるか否か分からない程度の予兆に頼るのではなく,ディスクに何らかのメカニ ズムを組み込み,クラッシュの前兆がキャッチされた際に即座に分かるような システムが望まれます.

■S.M.A.R.T.
 このようなニーズから策定された規格に,S.M.A.R.T(Self-Monitoring Analysis and Reporting Technology)があります.文字通り,ディスクに自己診断 機能規格を持たせることにより,PC側からクラッシュの前兆をタイムリーに把握し ようという機構です.BIOS に S.M.A.R.T 機能が搭載されていれば,起動時に ディスクのステータスを確認し,『このディスク,ちょっと危ないよ』という情報 を掴むことができます.

※とは言え,完璧な物ではありません.S.M.A.R.T.で エラーが出ていないからといって安全だとは限りません.また,エラーが出たから と言って,すぐにクラッシュするというわけではない場合もあります.

 S.M.A.R.T. の個別のパラメータを見ると,様々なクラッシュの前兆を確認する ことが出来るのですが,多くの人が一番気にしているのは,ディスクの動作温度で あると思います.温度とハードウエアの故障との関係に関しては多くのページで解説 されておりますので改めてここで解説を行いませんが,一般に高温状態で動作する デバイスは,各種の劣化が加速される傾向にあります.そのため,ディスクに関しても, 『現在どの程度の温度で動作しているか』を確認することは非常に有効であると 考えられます

 そこで S.M.A.R.T. 機能を用いて,ディスクの温度をチェックしてみようというのが 本ページの趣旨です.利用 OS がWindows であれば, SIGuardianをはじめとして様々なソフトが 存在します.また,ディスクの温度監視に限定するのであれば,HDDTemperature等,さ らに多くのソフトが利用可能です.しかし,Linux 用ソフトとなりますとかなり限られてきます. そこで本ページでは, Linux を使用してサーバとして24h稼働させているマシンを対象 として解説を行うことにします.

※S.M.A.R.T. が監視するパラメータは多岐に渡っておりますので,本ページでは 詳細に解説を行いません.もし興味がある方は, こちらのページ 等を参照してください.

■Linux でディスクの温度を監視する
■smartmontoolsのインストールと利用
 Linux用のディスク温度確認用ソフトとしては,そのものズバリのネーミングである hddtempの 知名度が高いのではないかと思います.このソフトを使用すると,対応したディスク (温度監視機能が内蔵されたディスクドライブ)の温度を確認することが可能です. しかし今回は,より高機能な S.M.A.R.T. 情報を一通り取得可能なソフトを利用する ことにしました.

 今回使用したソフトは,smartmontoolsです. こちらのページからダウンロード してください.私は smartmontools-5.22.tar.gz を使用しました(tar ball ではなく,RPM パッケージを使用しても良いでしょう).
 インストール方法は至って簡単です.ファイルを展開した後,"./configure"を実行し, "make","make install"でOKです.殆どの linux ディストリビューションであれば,問題 なくインストールできると思います.

 次に使用方法ですが,まずはディスクの S.M.A.R.T. 機能を利用可能に設定する必要が あります.root で以下のコマンドを実行します(hdaを監視したい場合の例).

#smartctl -s on -o on -S on /dev/hda
smartctl version 5.22 Copyright (C) 2002-3 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.

 次に hda の S.M.A.R.T. の値を全て表示する場合は,以下のようにコマンドを 実行します.

#smartctl -a /dev/hda
smartctl version 5.22 Copyright (C) 2002-3 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     Maxtor 4R120L0
Serial Number:    R40FN3TE
Firmware Version: RAMB1TU0
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 0
Local Time is:    Sun Nov 30 14:23:18 2003 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
(後略)

 非常に多くの情報が表示されるため,面食らってしまうかもしれません. 今回の目的である温度を見る場合は,出力をパイプしてgrepすると良いでしょう.

#smartctl -a /dev/hda |grep -i temp
194 Temperature_Celsius  0x0032 253 253 000  Old_age   Always  -   33

 表示されるカラムはそれぞれ『ID,アトリビュート名,フラグ,値,WORST, 閾値, タイプ,updated,いつfailしたか,ローデータ』を表します.つまり,現時点の 温度のみを見たい場合は,最後の値を確認すればOKです.上記の例の場合,このディスク は現在 33度であることを示しています.

■はたして SmartDrive は大丈夫か?
 いくつかの掲示板を眺めてみますと,『静音化のために SmartDrive を使用して いた所,内部に熱が籠ってクラッシュした』という報告 が散見されます.その一方で,『うちは問題なし.放熱もきちんとできている』という 報告もあります.

 非常に気になる情報でしたので,実際に手元の環境のディスク(hda:MAXTOR 4R120L0 はsmatdriveに入れて24h運用しています)で確認してみました.なお,室温は18度の環境下 で測定を行っています.

条件 温度[℃]
無負荷状態34
ファイルコピー中
(hda内で4GBのMPEG2ファイルを読み込み&書き出し)
(MAX) 40

 上記の結果を見ますと,負荷時の温度上昇は +6[度]に止まっており,それほど気にしなくても 良さそうです.また,夏場に室温が30度に上昇した場合を想定した場合,無負荷時および ファイルコピー中の温度は(計算上)それぞれ 46度,52度となりますが,メーカーの動作保証 温度(5度〜55度)内に辛うじて収まります.夏場の利用でも深刻な問題は無さそうです.

 なお,リムーバブルケースに収めた 250GB のディスク の温度を確認した所,スピンアップ直後(アクセスが3分間無い場合はスピンダウンするように 設定しています)は17度,アイドル時には24度,そしてファイルコピー中は 29度でした.(室温が 18度なのに17度とレポートされている理由は色々と考えられますが,観測点の違いによる温度差の 他に,サーマルダイオードによる測定誤差が考えられます.センサ次第で2,3度の誤差が出ることは ざらですので,厳密な数値として考えない方が良いでしょう)

 この結果を見ると,SmartDrive に収めている場合は(両ドライブ共に同程度の発熱がある とすると) 10度程温度が高くなると言えそうです.これを高いと見るか低いと見るかは人そ れぞれだと思いますが,個人的には『動作保証温度内に収まっているから良しとする』です. ただし,高発熱のドライブを使用した場合は問題になるかもしれません.

 なお,最近のドライブは温度の測定が可能ですが,MAXTOR製ドライブの少し前のモデルの 場合は動作温度の取得ができません.現在このマシンで使用中のドライブで言いますと, 4R120L0,5A250J0 は動作温度が確認できましたが,4G120J6はできませんでした.

■まとめ
 今回は,ずっと懸念事項であった『Linuxでディスクの動作時の温度を確認する』方法に 関して検討し,実際に行いました.その結果,現在使用中の構成であれば,夏場であっても SmartDrive に内蔵した状態で問題無さそうであることが分かりました.

 高温は 各種の部品の寿命を著しく短くする要因の1つですので,高発熱/高回転 ドライブを利用されている方は一度確認してみると良いでしょう.

 なお,今回は smatmontools の smatctl コマンドのみを利用しましたが,このパッケージの smartd daemonを利用することにより,エラー発生時に自動的にメールで知らせるように することも可能です(smartd.confの設定が必要).もし,厳密に監視を行いたい場合は この機能を利用すると良いと思います.


『Asus Terminator 活用メモ』 へ戻る