smartmontools入門 — HDDのSMART監視とテスト

概要
smartmontoolsは、ほとんどの現代的なATA/SCSIディスクに組み込まれている自己監視・解析・報告技術(SMART)を利用して、ストレージを制御・監視するためのツールセットです。主なコンポーネントは次の2つです。
- smartctl: ディスクの情報取得、自己診断テストの起動、SMART属性の表示を行うコマンドラインツール。
- smartd: 継続的にディスクを監視し、ログや通知を行うデーモン。
定義: SMARTとは、磁気ディスクやSSDが持つ自己診断情報の集合で、故障の兆候を早期に検出するためのものです。
重要: SMARTは万能ではありません。SMARTが異常を報告しないケースや、突発的に故障するケースもあります。常に冗長化と定期バックアップを組み合わせて運用してください。
インストール
Debian/Ubuntu系の例:
sudo apt-get install smartmontools
必要条件は、SMART対応のディスクとroot権限です。GUIが欲しい場合は後述のgsmartcontrolもインストールします。
sudo apt-get install gsmartcontrol
初回確認とディスク情報の取得
ディスクがSMART対応か確認するには次を実行します。
sudo smartctl -i /dev/sda
ここで/dev/sdaは実際のデバイス名に置き換えてください。出力の例(ディスク基本情報)を示します。
出力の最終行付近にSMARTが有効かどうかが表示されます。SMARTが無効なら次で有効化します。
sudo smartctl -s on /dev/sda
有効化コマンド実行後の表示例:
上記は既に有効であれば何もしません。
IDEとSATAでの情報取得の例:
sudo smartctl -a /dev/sda
sudo smartctl -a -d ata /dev/sda
ディスクの健康状態を簡易チェックするには:
sudo smartctl -H /dev/sda
出力でFAILEDや予期せぬエラーが出たら、直ちにバックアップを取ってください。
自己診断テストの種類と実行
smartctlは主に3種類の自己診断テストを扱います。
- short: 短時間の基本テスト。
- long: セクタ読み書きに基づく詳細テスト(時間がかかる)。
- conveyance: 輸送によるダメージを検出する短めのテスト。
テスト可能な内容は次で確認できます。
sudo smartctl -c /dev/sda
出力例(サポートされるテストと所要時間):
各テストの開始コマンド:
sudo smartctl -l long /dev/sda
sudo smartctl -l short /dev/sda
sudo smartctl -l conveyance /dev/sda
ロングテスト実行後の出力例:
注意: 多くの自己診断テストはバックグラウンドで実行されます。進行状況は画面上に継続表示されないので、結果は後で確認します。
結果の確認:
sudo smartctl -l selftest /dev/sda
表示例(自己診断ログ):
読み方に迷ったらmanを参照してください。
man 8 smartctl
man 8 smartd
smartdをデーモンとして運用する
手動で都度実行する代わりに、smartdをデーモンとして常駐させると自動監視と通知が可能です。設定は次のファイルを編集します。
sudo nano /etc/default/smartmontools
サービス起動フラグを有効にします。編集後の例のスクリーンショット:
次にsmartdの設定を行います。
sudo nano /etc/smartd.conf
設定ファイル例のスクリーンショット:
システムによってはDEVICESCANが機能しない場合があります。その場合は個別に/dev/sdaのように指定してください。典型的な1行例:
/dev/sda -m root -M exec /usr/share/smartmontools/smartd-runner
説明:
- -m root: エラー時にrootにメールを送る。メール送信先はローカルのrootアカウント。
- -M exec /usr/share/smartmontools/smartd-runner: エラー時に指定のスクリプトを実行する。環境によりこのスクリプトが無いことがあるので、その場合は-Mオプションを省略。
スケジュール例を含めたより詳細な行:
DEVICESCAN -a -H -l error -l selftest -f -s(S/../.././02|L/../../6/03) -m root -M exec /usr/share/smartmontools/smartd-runner
この例の意味:
- -a: 一般的によく使うオプションをまとめて有効化。
- -H: SMARTの健康状態を確認。
- -l error: エラーログの増加を報告。
- -l selftest: selftestログの増加を報告。
- -f: 使用中の属性に関する故障を検出。
- -s(…): ショートとロングの自己診断テストのスケジュール。ここではショートを毎日02:00、ロングを毎週土曜03:00に設定。
詳細はmanを参照してください。
man 5 smartd.conf
GUI: GSmartControl
コマンドラインが苦手な場合はGSmartControlを使うとGUIでディスク一覧、属性、自己診断の起動が可能です。
GUIのデバイス情報画面例:
右クリックメニューからテスト開始や詳細表示ができます。
運用チェックリスト(役割別)
運用者向け簡易チェックリスト:
- インストールと初期確認を実行したか。
- smartdをデーモンとして有効にしたか。
- 通知先(メールや監視システム)を設定したか。
- 定期バックアップが有効であるか。
- テストスケジュールが業務時間に影響しない時間帯か確認したか。
管理者(SRE/システム管理者)向け:
- smartd.confでDEVICESCANか個別指定かを決定したか。
- -mで通知先が期待通りかテストしたか。
- smartd-runnerやメール送信の実行権限を確認したか。
- 監視システム(Prometheus, Nagios等)と連携する場合はログ取りの仕組みを用意したか。
テストケースと受け入れ基準
運用導入後の簡単な受け入れテスト:
- ステップ1: /dev/sdXの情報がsmartctl -iで取得できること。
- ステップ2: smartctl -HでOKが返ること(正常なディスクの場合)。
- ステップ3: smartdを起動後、設定したスケジュールで自己診断が開始され、ログが増えていること。
- ステップ4: 故障条件を模擬した場合に通知が送られること(テストメール送信で確認)。
受け入れ基準: 上記4点が満たされ、バックアップ手順が検証済みであること。
トラブルシューティングとよくあるケース
問題: smartctlがデバイスを認識しない
対処:
- デバイス名が正しいかを確認する。
- USB-SATA変換経由のディスクは-dオプションで適切なドライバ指定が必要な場合がある。
- パススルーやRAIDコントローラ配下のディスクは、コントローラによっては直接アクセスできない。
問題: smartd の通知が来ない
対処:
- -mで指定したメールアドレスにローカルMTAがメールを送れるか確認する。
- smartd-runnerを使っている場合は実行権限とパスを確認する。
- syslog/journalを確認してエラーメッセージを探す。
いつ失敗するか(限界):
- SMARTは読み取りベースの指標が中心なので、制御系の突発故障や電源系の問題は検知しない場合がある。
- RAID配下の物理ディスクはコントローラ越しで情報が隠蔽されることがある。
代替アプローチと互換性
- ハードウェアベンダー製ツール: 一部のNASやサーバーベンダーは独自の診断ツールを提供しており、コントローラ付き環境ではそちらが適切な場合がある。
- 監視統合: PrometheusやZabbixにSMARTのメトリクスを取り込むExportersやスクリプトを使うとRCAや履歴把握に便利。
- RAID/ハードウェアコントローラ: HBAやRAIDカード経由のディスクはsmartmontoolsで直接アクセスできない場合がある。コントローラの管理ツールを優先する。
互換性メモ: SATA/ATAのディスクは-d ata指定が必要な場合がある。NVMeデバイスはsmartctlでnvmeサポートがあり、コマンドが一部異なる。
小さな運用SOP(導入〜初期運用)
- インストール: apt/パッケージ管理でsmartmontoolsを導入。
- 初期確認: smartctl -iでSMART対応を確認。
- 有効化: smartctl -s onでSMARTをONに。
- ベースライン: smartctl -aで属性を保存し、ベースラインを記録。
- 自動監視: /etc/default/smartmontoolsでデーモン有効化、/etc/smartd.confでスケジュール設定。
- テスト: short/longを実行し、結果をselftestで確認。
- 通知経路: ローカルメールまたは監視システムへ連携を行い、メール送信テストを実施。
- 定期レビュー: 属性の傾向を週次/月次で確認し、異常があればエスカレーション。
参考とリンク
- 公式: smartmontools.org
- manページ: smartctl と smartd の man を参照
1行用語集
- SMART: 磁気ディスクやSSDが保持する自己診断・監視情報の規格。
- smartctl: SMART情報の表示と自己診断開始を行うコマンド。
- smartd: SMARTを継続監視するデーモン。
まとめ: smartmontoolsはディスク障害の早期発見に有効なツール群です。万能ではない点に注意しつつ、定期バックアップと監視体制を整えることで、運用の信頼性を高められます。
短い告知文: smartmontoolsを使えば、ディスクのSMART情報取得と自己診断の自動化が可能です。まずはインストールと/dev/sdXの初回確認を試してみてください。