TL;DR
mdadm の設定ファイルに MAILADDR を追加して mdadm を再起動すると、RAID 障害時に自動でメールが送信されます。MTA(例: postfix や sendmail)がサーバにインストールされ、メール送信ができることを事前に確認してください。
概要
このガイドは、ソフトウェアRAID(mdadm)で障害が発生したときに自動でメール通知を受け取るための最短手順を説明します。Debian(Etch)の環境で検証した手順をベースにしていますが、多くの Linux ディストリビューションで同様に適用できます。重要なのは mdadm の設定ファイルに通知先メールアドレスを記述し、mdadm のモニタを有効にすることです。
重要: この手順を実行してもハードウェア障害や MTA の不具合を完全に防げるわけではありません。必ず定期的なバックアップと監視ポリシーを維持してください。
前提条件
- mdadm がインストールされていること
- サーバが外部にメールを送信できる(postfix/sendmail/ssmtp など MTA が設定済み)
- root 権限で設定変更を行えること
手順(最小セット)
- mdadm の設定ファイルを開く(Debian の例):
vi /etc/mdadm/mdadm.conf
- 設定ファイルに通知先のメールアドレスを追加する(例):
DEVICES /dev/sda* /dev/sdb*
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=c8a78e3a:e335c0f0:997be224:f02c088a
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=fd9f3b6b:4fc9cf4f:09db592d:480d34fe
MAILADDR [email protected]
- mdadm を再起動する(SysVinit の例):
/etc/init.d/mdadm restart
systemd の環境ではサービス名が異なる場合があります。例えば:
systemctl restart mdadm
# または mdadm-monitor のようなサービス名の場合があります。
- 動作確認: /proc/mdstat を監視し、故障やリビルド発生時にメールが届くか確認します。
受信例(mdadm が送る自動メールの例)
以下は mdadm が実際に生成する代表的なメール例です(英語出力は mdadm の実装によるものです)。
From: mdadm monitoring <[email protected]>
To: [email protected]
Subject: DegradedArray event on /dev/md1:server1.example.com
This is an automatically generated mail message from mdadm
running on server1.example.com
A DegradedArray event had been detected on md device /dev/md1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid0] [raid1]
md1 : active raid1 sda2[2] sdb2[1]
487853760 blocks [2/1] [_U]
[>....................] recovery = 4.3% (21448384/487853760) finish=114.3min speed=67983K/sec
md0 : active raid1 sda1[0] sdb1[1]
530048 blocks [2/2] [UU]
unused devices:
From: mdadm monitoring <[email protected]>
To: [email protected]
Subject: FailSpare event on /dev/md1:server1.example.com
This is an automatically generated mail message from mdadm
running on server1.example.com
A FailSpare event had been detected on md device /dev/md1.
It could be related to component device /dev/sda2.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid0] [raid1]
md1 : active raid1 sda2[2](F) sdb2[1]
487853760 blocks [2/1] [_U]
[===================>.] recovery = 99.9% (487851840/487853760) finish=0.0min speed=61037K/sec
md0 : active raid1 sda1[0] sdb1[1]
530048 blocks [2/2] [UU]
unused devices:
注: 上記のメール本文は mdadm が生成する英語のフォーマット例です。実際の文面は mdadm のバージョンやロケールによって変わることがあります。
テスト方法と検証
- MTA の動作確認: 単純に自分にメールを送って届くか確認します。
echo "mdadm test" | mail -s "mdadm test" [email protected]
- mdadm の通知動作だけを検証したい場合は、テスト目的で mdadm の監視プロセスを手動で起動してログを確認できます(環境による)。
- 実際の障害シミュレーションは運用リスクがあるため、保守時間帯に行い、事前にバックアップと周知を行ってください。
トラブルシューティング
- メールが届かない場合:
- MTA(postfix/sendmail)がインストールされ、外向きにメールを送れるか確認する。
- /var/log/mail.log や /var/log/syslog を確認して mdadm からの送信エラーを探す。
- mdadm の設定ファイルの MAILADDR が正しいか確認する。
- mdadm が通知を送信しているが内容が無い/不十分な場合:
- /proc/mdstat をチェックして RAID の状態を確認する。
- mdadm のバージョンやロケールにより出力が異なるので、ログを総合的に見る。
障害発生時の簡易対応手順(運用者向けランブック)
- 受信メールを確認し、問題の種類(DegradedArray / FailSpare 等)と対象デバイスを特定する。
- サーバにログインして /proc/mdstat と mdadm –detail /dev/mdX を確認する:
cat /proc/mdstat
mdadm --detail /dev/md1
- 故障と推定されるコンポーネント(例: /dev/sda2)を取り外し/交換する。交換前にパーツの互換性を確認する。
- 交換ディスクを追加する:
mdadm --manage /dev/md1 --remove /dev/sda2
mdadm --manage /dev/md1 --add /dev/sda2
- リビルドを監視し、完了後に /etc/mdadm/mdadm.conf を必要に応じて更新しておく。
- 事後報告と必要なインシデント記録を残す。
Important: 実際のデバイス削除や追加コマンドはデータ損失のリスクがあります。手順に不安がある場合はハードウェアベンダーや経験あるエンジニアに相談してください。
代替アプローチと拡張
- 外部監視ツールを併用する: Nagios/Icinga/Prometheus+Alertmanager 等で RAID 状態を監視し、メールやSlackへ通知する。より高度な通知ルールや冗長な通知経路を確保できます。
- ログ監視: mdadm のログを syslog/rsyslog に集約し、ログ監視ツールで異常を検出する。
- エスカレーション: 重要なシステムでは単一のメール通知に依存せず、SMS やチャット通知も組み込む。
管理者向けチェックリスト
- /etc/mdadm/mdadm.conf に MAILADDR が設定されている
- MTA(postfix 等)がインストールされ、外部へメール送信できる
- /proc/mdstat の監視方法とログ収集が構築されている
- 障害時のランブック(交換手順・連絡先)が用意されている
- 定期テストと監視確認をスケジュールに組み込んでいる
1行用語集
- mdadm: Linux のソフトウェアRAID 管理ツール。RAID の作成・管理・監視を行う。
要点のまとめ
- mdadm の設定ファイルに MAILADDR を追加し mdadm を再起動するだけで、RAID 障害時に自動メール通知を受け取れるようになります。
- メールを確実に受け取るためにサーバに MTA を用意し、テストを行ってください。
- 運用ではメール通知だけでなく外部監視や手順書を併用して冗長な障害対応体制を作ることが重要です。
著者
編集