smartmontoolsでハードディスクのSMARTを監視する方法

概要
SMART(Self-Monitoring, Analysis and Reporting Technology)は、現代のハードディスクが持つ自己診断機能で、故障の前兆となる各種指標(属性)を記録・報告します。smartmontoolsはこのSMART属性を読み取り、ドライブの状態確認や自己テスト実行、定期監視とアラート送信を可能にするフリーソフトウェアです。システム管理者や上級ユーザーが事前に問題を検知してバックアップや交換対応を行えるよう支援します。
重要: SMARTは万能ではありません。すべての故障を予測できるわけではないため、定期的なバックアップが最優先です。
この記事の対象読者
- Linux系サーバー/デスクトップの管理者
- 自分のPCやNASのディスク状態を把握したい上級ユーザー
- 運用者で障害予兆を自動通知したい人
用語(1行定義):
- SMART: ディスク自身が記録する自己監視データの集合。
- smartctl: smartmontoolsの対話/手動用コマンドラインツール。
- smartd: 定期的にSMARTを照会して通知するデーモン。
目標(この記事でできること)
- smartmontoolsのインストール方法
- smartctlでの手動チェックと自己テスト実行
- smartdを使った定期監視とメール通知の基本設定
- 運用チェックリストとトラブル対応手順
インストール
Debian系(Debian / Ubuntu等)では、smartmontoolsはデフォルトのリポジトリに含まれます。インストールは次のように実行します。
sudo apt-get install smartmontools
Fedora系では次のコマンドを使います。
sudo yum install smartmontools
インストールするとシステムに二つの主要なプログラムが追加されます:
- smartctl — 対話的/手動で使うツール
- smartd — バックグラウンドで定期監視するデーモン
smartctl:手動確認と自己テスト
smartctlはroot権限が必要です。ディスク全体(パーティションではない)を対象とするため、デバイスファイル(例: /dev/sda)を最後に指定します。以降の例では /dev/sda を使用しますが、環境に合わせて置き換えてください。
情報を取得するには -i
オプションを使います。
sudo smartctl -i /dev/sda
上記の出力から、SMARTサポートが「利用可能(available)」かつ「有効(enabled)」であることが確認できます。もし利用可能だが有効になっていない場合は、以下で有効化します。
sudo smartctl -s on /dev/sda
デバイスの健康状態(基本的な判定)を確認するには -H
を使います。
sudo smartctl -H /dev/sda
出力が “PASSED” でなければ、そのディスクは故障している、または故障の前兆を示しています。データの即時バックアップを行ってください。
SMARTの機能や自己テストの可否、短時間/長時間テストの推定所要時間などを表示するには -c
を使います。
sudo smartctl -c /dev/sda
上記例では短時間テストが約2分、拡張(long)テストが約95分と推定されています。短時間テストは簡易チェック、拡張テストは読み取り全面検査です。
短時間テストを実行する例:
sudo smartctl -t short /dev/sda
自己テストはバックグラウンドで動作するため、その間に他作業が可能です。テスト結果は次のコマンドで確認します。
sudo smartctl -l selftest /dev/sda
この出力は直近20件の自己テスト履歴を示します。現在進行中のテストについては表示されません。
拡張テストを実行するには:
sudo smartctl -t long /dev/sda
短時間/長時間いずれかのテストが失敗した場合は、すぐにデータをバックアップしてください。
重要: smartctlのコマンドにドライブの種類(例: -d sat)を明示する必要がある環境があります。エラーが出る場合はsmartctlのマニュアルを参照して適切な -d
オプションを追加してください。
smartd:自動監視と通知設定
smartctlは手動確認用として有効ですが、頻繁に手動でチェックするのは現実的ではありません。smartdはデーモンとして定期的にSMARTを照会し、エラーや不具合の兆候を検知した際に通知する仕組みを提供します。
設定ファイルは通常 /etc/smartd.conf
にあります。まずこのファイルを開き、もし DEVICESCAN
が有効になっていたらコメントアウト(行頭に #
を追加)し、監視対象を明示的に列挙することを推奨します。例として各ドライブに次の行を追加します。
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m root -M exec /usr/share/smartmontools/smartd-runner
上のオプションの意味:
/dev/sda
: 監視対象のデバイスファイル-a
: 一般的なオプションをまとめて有効にする(推奨)-d sat
: 必要な場合にドライブタイプを指定(環境により不要)-o on
: SMARTの自動オフラインテストを有効化-S on
: SMARTの自動セーブ(autosave)を有効化-s (S/../.././02|L/../../6/03)
: 短時間テストは毎日午前2時(S/../.././02)、拡張テストは毎週土曜午前3時(L/../../6/03)に実行する設定例-m root
: 問題発生時に通知先メールアドレス(複数はカンマ区切り)-M exec /usr/share/smartmontools/smartd-runner
: Debian/Ubuntuの環境ではメール送信に加えて他のアクション(スクリプト呼び出しなど)を行うラッパー
注: -m
オプションでメール通知するには、システムでメール送信が正常に構成されている必要があります(postfix, sendmail, msmtpなど)。
詳細は man smartd.conf
を参照してください。
smartdの自動起動設定
smartdをシステム起動時に有効にするには、設定ファイル /etc/default/smartmontools
を編集し、start_smartd=yes
の前の #
を削除して有効化します。編集後、デーモンを起動または再起動します。
sudo /etc/init.d/smartmontools start
テスト通知を送る場合は、smartd.confの行に -M test
を一時的に追加してから再起動します(設定が環境によって異なるため、-M test
の書き方はsmartmontoolsのバージョンに依存します)。再起動コマンド:
sudo /etc/init.d/smartmontools restart
再起動後にテスト通知が送信され、メールや実行スクリプトで通知受信が確認できれば設定は機能しています。
運用チェックリスト(役割別)
管理者向けチェックリスト:
- インストール: smartmontoolsパッケージをインストール
- 検出:
smartctl -i /dev/
でSMART有効状態を確認 - 自動化:
/etc/smartd.conf
に監視対象を明示的に追加 - 通知:
-m
オプションでメールアドレスを指定、メール送信の動作確認を実施 - テスト: 定期的に
smartctl -l selftest
を確認 - ドキュメント: 監視対象リストと通知先を運用手順に記載
オペレータ(現場担当)向けチェックリスト:
- 異常通知受信時は即座に現状バックアップを指示
- diskの入れ替えが必要な場合は交換手順を実行
- 交換後にsmartdの監視対象を更新
コマンド早見表(チートシート)
- 情報表示: sudo smartctl -i /dev/sda
- 健康判定: sudo smartctl -H /dev/sda
- 機能一覧: sudo smartctl -c /dev/sda
- 短時間テスト開始: sudo smartctl -t short /dev/sda
- 長時間テスト開始: sudo smartctl -t long /dev/sda
- 自己テスト履歴表示: sudo smartctl -l selftest /dev/sda
- SMART有効化: sudo smartctl -s on /dev/sda
小さな方法論(継続的な監視の作り方)
- インベントリ作成: 監視対象ディスクをリスト化(モデル/シリアル/用途)
- 初回ベースライン取得: 各ディスクで
smartctl -i
と-c
を実行し、初期値を保存 - 自動監視導入:
/etc/smartd.conf
を編集し、短時間/長時間テストとメール通知を設定 - 定期確認: 月次で
smartctl -l selftest
と属性(Reallocated_Sector_Ct等)をレビュー - 交換基準設定: 重要属性のしきい値(例: 再割当セクタの増加、読み取りエラー)を定義して運用手順に落とす
いつSMARTは役に立たないか(カウンター例)
- 電子的故障やコントローラ障害など、SMART属性に顕在化しない崩壊的障害
- 突発的な物理衝撃や停電で発生する即時故障
- ファームウェアやドライブベンダ固有の問題でSMARTレポートが不正確な場合
これらの場合も想定して冗長化とバックアップを確実に行ってください。
リスクと緩和(簡易マトリクス)
- リスク: SMARTが故障を検知できない → 緩和: 定期バックアップ、RAID/冗長化
- リスク: 通知メールが届かない → 緩和: メール送信設定の監視、別途Webhook/Slack連携
- リスク: 長時間テストの負荷でI/O影響 → 緩和: オフピークでのスケジュール、影響を受けるサービスの回避
受け入れ基準(運用で満たすべきこと)
- smartdが起動しており監視対象が正しく設定されている
- 異常発生時に管理者へ通知が届くこと(テスト通知で確認済み)
- 異常を受けて24時間以内にバックアップ方針に従う手順が実行される
まとめ
smartmontools(smartctl + smartd)は、ハードディスクの予兆検知と自動通知を行う強力なツールです。ただしSMART自体はすべての故障を予測できるわけではないので、定期的なバックアップと冗長化を必須としてください。smartctlでの手動チェック、smartdでの自動監視、そして通知のテストを組み合わせることで、ディスク障害発生前の対応時間を稼げます。
重要: どんなに監視が充実していても、バックアップポリシーと復旧手順の存在が最も重要です。
短いチェックリスト(速習用):
- インストール: sudo apt-get install smartmontools
- サイズ:
sudo smartctl -i /dev/sdX
でSMARTの有効化状態確認 - 定期:
/etc/smartd.conf
に監視対象と-m
を設定 - テスト:
sudo smartctl -t short /dev/sdX
→sudo smartctl -l selftest /dev/sdX
で確認