ハードディスクの情報取得

CPUなら/proc/cpuinfoを、メモリなら/proc/meminfoをそれぞれcatすれば情報収集できるわけですが、HDDについてはいいのが無いなあと以前思っていたのですが、最近HDDについてもいいのを見つけました。

S.M.A.R.Tという用語を聞いたことありますでしょうか。

SMARTというのは"Self-Monitoring, Analysis and Reporting Technology"の略で、HDD自身によるハードウェア状態把握機能のことです。たぶん、BIOSのメニューをいじったことがある人なら一度くらいは目にしたことがあるんじゃないでしょうか。

この機能をBIOSでOnにしていれば(たぶんデフォルトでOnになってます)、あとはいろいろなツールでこの機能にアクセスして情報を取得することができます。

とりあえずFedora7に最初から入っていたっぽいsmartctlというツールを使ってみます。まずはHDDの名前とか型番とかを見るために-iオプションとディバイスを指定してsmartctlを実行します。

mir@mir99:~$ sudo smartctl -i /dev/sda
smartctl version 5.37 [x86_64-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar SE (Serial ATA) family
Device Model:     WDC WD2500JS-22NCB1
Serial Number:    WD-WCANKJ700031
Firmware Version: 10.02E02
User Capacity:    250,059,350,016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Fri Sep 28 23:22:04 2007 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

こんな感じでハードウェアを特定するための情報を取得できますので、バッファサイズがどれくらいかとかの細かいスペックについても型番情報を使って後で調べることも可能です。

また、SMART自体はハードディスクの状態を取得するための機能(正確には、ハードウェア故障が起きる前にエラー発生率増加等による故障の予兆をよみとるための機能)ですので、いろいろ報告してくれます。オプション--allを指定することですべての情報の取得が可能です。

自分的に気になっているHDDの温度もバッチリです。HDDの一般的な耐熱温度は55℃らしいので52℃までいったのはちょっと心配ですが。

mir@mir99:~$ sudo smartctl --all /dev/sda | grep Temp
190 Temperature_Celsius     0x0022   048   038   045    Old_age   Always   In_the_past 52
194 Temperature_Celsius     0x0022   098   088   000    Old_age   Always       -       52
mir@mir99:~$ sudo smartctl --all /dev/sdb | grep Temp
194 Temperature_Celsius     0x0002   142   142   000    Old_age   Always       -       42 (Lifetime Min/Max 25/52)

ただし、SMARTによるHDD状態の取得はRAIDコントローラを挟んでしまうとできません。SATAディスクを直接使っている自宅サーバとかだと良いのですが、会社で使用するサーバだとほとんどRAID(あるいはさらに+ストレージ)を使っているでしょうからこの方法だとダメということになりますね。

でもその代わり、ストレージベンダとかはこれに代わる機能をおそらく用意しているはず(というかSMART機能が普通に搭載されるようになる以前からストレージベンダはやっているはず)なので、それぞれの固有のストレージに用意されているツール等を使うことで同じことはできると思います。

単にRAIDコントローラだけ使っている場合でも、たぶん用意されているんじゃないかなぁ。個人的にはHPさんのRAIDコントローラを使っている率が高いので(Smart Arrayシリーズ)今度時間のある時にでも調べてみたいです。