LS-VLでsmartdを有効化してみた(4)
やっぱりテスト結果の定時報告が欲しい
smartd から呼び出せるスクリプト "/usr/local/bin/mail.sh" まで作ったのですが、やはり何か異常を検出しないとメールを送って来ないようですなぁ。しかしLS-VLには既に定時報告する機能(管理Webの「システム」→「メンテナンス」→「メール通知設定」)があり、HDDにエラーが起きたかどうかをメールしてくれる。まぁ内容はエラー発生回数だけのようで、エラー発生時の詳しい情報までメールしてくれるのかは疑問だけど。まぁ、これでもいいかぁって一旦は思ったんだけどね。
しかし調べてみたら、このHDDのエラー発生回数は(LS-VLの場合)"/sys/block/sda/nr_errs" というファイルから得ている様子。良く知らないのだけど、多分これはファイルシステムの直情報じゃないかな。つまり、実際にHDDに対する入出力が発生して、その結果から初めてI/Oエラーが起きた事を検知し "/sys/block/sda/nr_errs" ファイルが更新されるのではないかと思う。つまり、エラーが起きた時には既に手遅れで既に不良セクタがいっぱい、なんて可能性もあるんじゃないかい?
せっかくメール送信するスクリプトも書いたことだし、S.M.A.R.T.情報(セルフテスト結果)を定期的にメールして欲しいなぁ。と思ったので、またこんな簡単なスクリプトを書いてみた。
#!/bin/sh
SMARTCTL="/usr/local/sbin/smartctl"
SMARTOPT="--device=sat --attribute --log selftest"
DEVICE="/dev/sda"
MAIL="/usr/local/bin/mail.sh"
MAILADD="hoge@xxxxx.ne.jp"
$SMARTCTL $SMARTOPT $DEVICE | $MAIL -s "$HOSTNAME smart report" $MAILADD
|
※赤字の部分は送信先メールアドレス
やっている事は単純。smartctl で HDDの情報とセルフテストの結果を出力させ、それを先に作った "/usr/local/bin/mail.sh" でメール送信しているだけ。
このスクリプトを cronで1日1回、セルフテストが終わった頃に起動させるようにしてみた。以下の作業は全てrootで行う。
- 上のスクリプトを "/etc/cron/cron.d/" 配下に置く。
置き場所は何処でも良いのだけど、cronで起動される物は皆この場所に置いてあるようなので、その作法に従った。ファイル名も分かりやすい適当な名前で構わない。今回は "send_smart_mail.sh" なんてファイル名にしてみた。(英語のダメダメっぷりが知れるセンスの無いファイル名だ。^^;)
- スクリプトに実行権を付ける。
# chmod +x /etc/cron/cron.d/send_smart_mail.sh
|
- "/etc/cron/crontabs/root" ファイルのバックアップを作成しておく。
# cd /etc/cron/crontabs
# cp -p root root.org
|
- crontabコマンドで、1日1回セルフテストが終わっている頃の時刻に先のスクリプトが呼び出されるよう書き加える。
例えば、こんな感じ。
# crontab -e
00 06 * * * /etc/cron/cron.d/send_smart_mail.sh
|
これで毎日、午前6時にスクリプトが呼び出され、S.M.A.R.T.情報とセルフテストの結果がメールされて来るはず。試しに "/etc/cron/cron.d/send_smart_mail.sh" 単体で動かしてみたところ、送られて来たメールはこんな感じ。
smartctl version 5.37 [arm-none-linux-gnueabi] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 114 099 006 Pre-fail Always - 67781928
3 Spin_Up_Time 0x0003 095 093 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 30
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 071 060 030 Pre-fail Always - 14113190
9 Power_On_Hours 0x0032 076 076 000 Old_age Always - 21490
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 30
183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0
187 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 Unknown_Attribute 0x003a 100 100 000 Old_age Always - 0
190 Temperature_Celsius 0x0022 058 042 045 Old_age Always In_the_past 773817892906
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 29
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 30
194 Temperature_Celsius 0x0022 042 058 000 Old_age Always - 42 (Lifetime Min/Max 0/24)
195 Hardware_ECC_Recovered 0x001a 033 005 000 Old_age Always - 67781928
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 170445777163251
241 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 1079144645
242 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 2976120346
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 21473 -
# 2 Short offline Completed without error 00% 21449 -
# 3 Short offline Completed without error 00% 21425 -
# 4 Short offline Completed without error 00% 21401 -
# 5 Short offline Completed without error 00% 21377 -
|
この程度の量だったら毎日メールされて来ても良いだろう。見るべき箇所は、
- 5 Reallocated_Sector_Ct
- 194 Temperature_Celsius
- 197 Current_Pending_Sector
- SMART Self-test log
と言ったところかな。5 Reallocated_Sector_Ct(不良セクタを代替した数)や197 Current_Pending_Sector(代替待ちの不良セクタ数)の RAW_VALUE が 0でなくなったら警戒した方がいいだろうな。温度もWORSTが60度を越えるようなら危ない。あとはセルフテストの結果。ShortテストはHDDが少々傷んでいてもエラーにならない事が多いようだから、Longテストの結果に注意しよう。
|