ハードディスクの情報取得
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シリーズ)今度時間のある時にでも調べてみたいです。