# S.M.A.R.T. (日本語)

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

## Smartmontools

smartmontools パッケージはストレージデバイスを診断するための2つのユーティリティ (`smartctl` と `smartd`) を含んでいます｡公式リポジトリから smartmontools をインストールしてください｡

### デバイスが SMART 対応かどうか確認する

デバイスが SMART 機能を有しているかどうかチェックするには次のコマンドを実行します (対象が ATA デバイスの場合 `-d ata` オプションが必要です):

    # smartctl -i /dev/<device>

(<device> は `sda, hda,...` のように置き換えて下さい)。このコマンドはデバイスに関する全般的な情報を表示します｡対応している場合、下の2つの行が確認できるはずです:

    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled

SMART が有効でない場合、以下を実行して有効化します:

    # smartctl -s on /dev/<device>

### デバイスの健康状態を調べる

実行中のデバイスの健康状態を調べる3つの方法があります(どれもユーザーデータには影響を与えません):

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

デバイスがどのテストに対応しているのか、そしてそれらの診断にどれくらい時間がかかるのか調べるには以下を実行します:

    # smartctl -c /dev/<device>

テストを実行するには:

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

Note: SSD などのディスクは全てのテストに対応していないことがあります｡デバイスが何に対応しているか調べるには `smartctl --capabilities /dev/<device>` を実行してください。

#### 結果

(全てのテストから集めた)テストによる全体の健康状態を見るには:

    # smartctl -H /dev/<device>

テストのエラー数を表示するには:

    # smartctl -l selftest /dev/<device>

テストの詳細な記録を表示するには:

    # smartctl -a /dev/<device>

エラーが記録されていない場合、おそらくデバイスは健康です｡もしエラーが多少記録された場合、問題があるかもしれないのでさらなる調査が必要です｡デバイスが再起不能に陥る前にデータのバックアップを取りリプレースすることを推奨します｡

### デバイスの監視

smartmontools デーモンにより、デバイスをバックグラウンドで定期的に監視して、任意で潜在的問題をメールするようにすることができます｡起動時にデバイスを監視するには、smartd サービスを有効にしてください:

     systemctl enable smartd.service

smart デーモンは `/etc/smartd.conf` に更に細かい設定をすることが可能です｡

Tip: `/etc/smartd.conf` は幾分難解なコマンドライン式のオプションを使って設定します｡ファイルの中にあるコメントや例を見たり、manpage を参照してください｡以下は監視オプションの例です。

#### 監視するデバイスの定義

全てのデバイスの全ての属性を監視するには以下を定義します:

     DEVICESCAN

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

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

Tip: ディスク別に異なるモニタリングオプションを指定したい場合、`DEVICESCAN` を使うのではなく個々に設定してください｡

#### 潜在的な問題をメールする

新しいエラーが発生したり、なんらかの問題が発生した時にメールされるようにします｡`-m` を用います:

    DEVICESCAN -m address@domain.com

(root メールアカウントではなく) 外部にメールを送信するには、MTA (Mail Transport Agent) か MUA (Mail User Agent) の事前の設定が必要です｡一般的な MTA は MSMTP と SSMTP です｡一般的な MTU は sendmail か Postfix です｡メールするだけなら、S-nail を設定するだけで足ります。

メールエージェントを設定したら、`-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

Tip: `smartctl -A /dev/<device> | grep Temperature_Celsius` を実行することで現在のディスクの温度を知ることができます｡
Tip: 特定のディスクが専ら他のディスクより熱い/冷たい場合、`DEVICESCAN` を削除して個々のデバイスを定義し、適切な温度設定をしてください｡

#### 完全な `smartd.conf` の例

上記の例を全てまとめると以下のような設定になります:

- `DEVICESCAN` (smartd は全てのディスクを監視対象にし、監視を実行する)
- `-a` (全ての属性を監視する)
- `-o on` (自動オンラインデータ収集を有効化する)
- `-S on` (自動属性保存を有効化する)
- `-n standby,q` (ディスクが待機中の時チェックを実行せず、ディスクアクセスが発生しないようにログに書き込まない)
- `-s ...` (短いもしくは長いテストの予定を立てる)
- `-W ...` (温度を監視する)
- `-m ...` (メールアラート)

    DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,35,40 -m <username or email>

#### `smartd` サービスの起動・リロードと状態の確認

    # systemctl start smartd

または

    # systemctl reload smartd

状態を確認する:

    # systemctl status smartd

全ての `smartd` ログ:

    # journalctl -u smartd

### GUI アプリケーション

- Gsmartcontrol — A GNOME frontend for the smartctl hard disk drive health inspection tool

  http://gsmartcontrol.berlios.de/home/index.php/en/Home || gsmartcontrol

## 情報元

- Smartmontools ホームページ
- Smartmontools on Ubuntu Wiki

Category:

- Storage (日本語)