SMARTでHDDを診断

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

概要

S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology、以下SMART)は最近のストレージデバイスに内蔵されている補助コンポーネントである。 温度・代替処理された不良セクタの数・シークエラーなどの統計が保存され、ソフトウェアはそれらの値からデバイスの健康状態を推察し、故障を予測したり値が不安定なときに通知することができる[1]。 この記事はArchWikiの記事[1]を一部改変・追加をしたものである。

smartmontoolsで、SMARTを用いたテストやストレージの健康状態を調べることができる。

smartmontoolsのインストール

smartmontoolsをインストール(ubuntu13.04環境)。

$ sudo apt-get install smartmontools

smartmontoolsの使い方

ストレージデバイスがSMARTに対応しているか調べる

smartctrlコマンドの-iオプションで、デバイスのID情報及びSMARTに対応しているかどうかを調べられる:

smartctl -i /dev/<device>

ストレージデバイスの健康状態をテストする

実行中のデバイスの健康状態を調べる3つの方法がある(どれもユーザーデータには影響を与えない)[1]:

  • Short (検出されているデバイスの中で問題のありそうなデバイスを精査する)
  • Extended (または Long。Short のチェックを全ての部分で行う)
  • Conveyance (デバイスの転送中に深刻なエラーが発生した場合にそれを特定する)

デバイスがどのテストに対応しているかを確認する

# smartctl -c /dev/<device>

各テストを実行する:

# smartctl -t short /dev/<device>
# smartctl -t long /dev/<device>
# smartctl -t conveyance /dev/<device>

テストの結果およびストレージデバイスのSMARTの詳細な記録を表示する

smartctlの-aオプションでデバイスのすべてのSMART情報を表示する:

smartctl -a /dev/<device>

エラーログを表示

smartctl -l error /dev/<device>

エラーが出ていなければ、要注意である。

セルフテストの結果を表示

smartctl -l selftest /dev/<device>

smartdによる監視

smartdデーモンでSMART情報を監視・報告したり、定期的なテストを行うことができる。

監視対象デバイスの指定

全てのデバイスの全ての属性を監視するには、/etc/smartd.confに以下を定義する:

DEVICESCAN

あるいは、個々のデバイスを監視対象にするには以下のように定義する:

#DEVICESCAN
/dev/<first_device> -a
/dev/<second_device> -a

エラーや問題をメールで報告させる

新しいエラーが発生したり、なんらかの問題が発生した時にメールされるようにする。-m オプションを用いる:

DEVICESCAN -m address@domain.com

外部にメールを送信するには、MTA(Mail Transport Agent)かMUA(Mail User Agent) の事前の設定が必要である。 -M test を使って一度メールが正しく送れるかどうか確認することができる (デーモンを再起動すればテストメールが送信される):

DEVICESCAN -m address@domain.com -M test

電源管理

あなたのコンピューターが電源管理下にあるのなら、smartd に低電圧時の HDD の扱いについて定義しておくべきである。通常スピンアップ時は SMART への反応は smartd コマンドによって発行される。もしこのオプションを使用しないなら,低電圧運転中に smartd による定期的な監視時にスピンアップし高電力モードになることがある。

DEVICESCAN -n standby,15,q

詳しい情報は smartmontools wiki を見てください。

自己診断の予定を組む

smartdはスケジュールに従って自己診断の実行をするようディスクに通知することができる。以下の /etc/smartd.conf 設定例では毎日午前2-3時の間に短い自己診断が、加えて、土曜日の午前3-4時の間に長い自己診断が行われるようにする:

DEVICESCAN -s (S/../.././02|L/../../6/03)

温度が変わったら警告する

smartd はディスクの温度を記録して、急激な温度上昇が起こった時や温度の上限に達した時に警告をすることができる。以下の例では温度が4度以上変わった時と35度に到達した時にログを記録し、さらに温度が40度と危険なときにはログを取ってメールを送信する:

DEVICESCAN -W 4,35,40

Slackware用のsmartd起動スクリプト

とても安易なスクリプトではあるが、Slackware用の起動スクリプトを以下に示す。 /etc/rc.d/rc.smartd:

#!/bin/sh
#
# smartd start and stop script
#
#

SERVICENAME=smartd
PROGNAME=smartd
PROGRAM=/usr/sbin/smartd

service_start()
{
  printf "Starting "$SERVICENAME".\n"
  $PROGRAM
}

service_stop()
{
  printf "Stopping "$SERVICENAME".\n"
  killall $PROGRAM
}

service_restart()
{
  service_stop
  sleep 1
  service_start
}

case "$1" in
'start')
  service_start ;;
'stop')
  service_stop ;;
'restart')
  service_restart ;;
*)
  echo "usage $0 start|stop|restart"
esac

サーバー起動時にsmartdが起動するように、例えば/etc/rc.d/rc.localに以下を追加する:

## Start smartd
if [ -x /etc/rc.d/rc.smartd ]; then
  /etc/rc.d/rc.smartd start
fi

/etc/rc.d/rc.localを使うのは私の好みなので、やり方はこれに限ったのものではない。

References

  1. 1.0 1.1 1.2 S.M.A.R.T. (日本語) - ArchWiki