S.M.A.R.T.でHDDを監視する on Mac mini

DLNA周りを色々調べていた拍子に見つけたのが S.M.A.R.T.にHDDの寿命を監視する というコラム。そういえばもう何度もHDDのクラッシュで泣かされている身分としてはこういうのもしっかりモニタリングしておかなきゃね、と。(寿命も分かるらしいし)
そんなわけで早速ソースをダウンロードしてインストール。ここからソースをダウンロードして、

tar zxvf smartmontools-5.38.tar.gz
cd smartmontools-5.38
./configure
make
sudo make install

でインストール完了。
早速コマンドをうってみる。

# smartctl -i /dev/disk0

smartctl version 5.38 [i386-apple-darwin9.5.0] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Hitachi Travelstar 5K160 series
Device Model:     Hitachi HTS541612J9SA00
Serial Number:    XXXXXXXXXX
Firmware Version: XXXXXXXX
User Capacity:    120,034,123,776 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 1
Local Time is:    Sat Nov 15 15:52:34 2008 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

おー、ちゃんとEnabledになってる。ちなみに外付けのHDDにも試してみたらエラーが出てダメだった。

# smartctl -i /dev/disk1

smartctl version 5.38 [i386-apple-darwin9.5.0] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Smartctl open device: /dev/disk1 failed: Operation not supported by device

うーん、いくら実家のNASに毎日バックアップをとっているといっても、ちょっと心配。
まあでもそれは良しとして、内蔵HDDだけでも定期的にチェックするように設定。
まずは smartd.conf。/usr/local/etc/ にあるので、viで編集。やったことは2つ。
23行目にある DEVICESCAN という行をコメントアウト。これがあると他の設定は無視されてしまう。

/dev/disk0 -a -o on -S on -s (S/../.././05|L/../../6/06) -H -m root@localhost

という行を追加。(こうすると毎日簡易テスト/週に1回詳細テストを行って問題があれば root にメールを送る)

そして再起動してもちゃんと起動するように /etc/hostconfig に

SMARTd=-YES-

と追加。これでOK。

さて、実家の方だが、実家はI/O dataの LANDISK (debian) を使っているのでちょっと設定が違う。
smartmontools が入っているかなと見てみたら、smartctlはあるが、smartdがない。smartmontoolsを apt-get install しようとしたが、No such files が返ってきてしまう。どうしたものやらと見てみたら、なんと stable 版が etch になっているではないか。リモートから dist-upgrade するのは怖いし、kernelをバージョンアップしろとか言っているので、さすがにめんどくさくなって、smartctl の結果をメールするように cron を設定。

35 5   * * *   root /usr/sbin/smartctl -d marvell /dev/sda -t short
40 5   * * *   root /usr/sbin/smartctl -d marvell /dev/sda -l error | /usr/sbin/sendmail メールアドレス

35 7   * * 1   root /usr/sbin/smartctl -d marvell /dev/sda -t long
40 12  * * 1   root /usr/sbin/smartctl -d marvell /dev/sda -l error | /usr/sbin/sendmail メールアドレス

まあ、これでいいでしょ。*1

*1:毎日メールちゃんと見るのか、という話はありますが、エラーが出たときにどんな表示がでるか調べてスクリプトを書くのもめんどくさいので、これで良しとしました。ちなみにディスク容量やらセキュリティやら何やらの理由でコンパイラも入っていないのでコンパイルもできない。