linux中用mdadm --monitor实现raid故障邮件告警,只需配置mailaddr收件地址并启用mdmonitor服务,补全阵列信息到mdadm.conf、更新initramfs,再通过模拟降级测试告警有效性,还可添加program和delay提升可靠性。

在Linux中用mdadm --monitor实现RAID故障邮件告警,核心是让系统自动检测阵列异常(如降级、设备失效、重建失败等),并在第一时间发邮件通知管理员。这不需要额外脚本,mdadm本身已内置完整监控与告警能力,只需正确配置即可生效。
配置MAILADDR接收地址并启用监控服务
邮件告警依赖两个基础:一是指定收件人,二是让mdadm以守护进程方式持续运行监控。操作如下:
- 编辑
/etc/mdadm/mdadm.conf,在文件末尾添加一行:MAILADDR admin@example.com(替换成你的真实邮箱) - 确保
mdadm监控服务已启用并开机自启:
Debian/Ubuntu:sudo systemctl enable --now mdmonitor
RHEL/CentOS/Fedora:sudo systemctl enable --now mdmonitor@mdadm - 验证服务状态:
systemctl status mdmonitor,应显示active (running)
确认监控能识别阵列并写入配置
如果mdmonitor启动后无反应,大概率是阵列未被mdadm识别或配置未加载。需补全以下步骤:
- 运行
sudo mdadm --detail --scan,确认输出包含类似ARRAY /dev/md0 level=raid5 num-devices=4 metadata=1.2 name=... UUID=...的行 - 将该输出追加到
/etc/mdadm/mdadm.conf中(避免手动写错UUID):sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf - 更新initramfs(尤其对根目录不在RAID的系统):
Debian/Ubuntu:sudo update-initramfs -u
RHEL系:sudo dracut -f
测试告警是否真正有效
别等真出故障才验证——主动模拟一次降级,看邮件能否发出:
- 选一块非关键盘(如
/dev/sdb1),执行:sudo mdadm --manage /dev/md0 --fail /dev/sdb1 - 等待几秒,检查
/var/log/syslog或journalctl -u mdmonitor,应有类似mdadm[xxxx]: DegradedArray event on /dev/md0的日志 - 同时检查邮箱(含垃圾邮件箱),正常应在1–2分钟内收到标题含
mdadm和DEGRADED的告警邮件 - 测试完立即恢复:
sudo mdadm --manage /dev/md0 --remove /dev/sdb1(若已物理拔出则跳过)
增强可靠性:添加延迟与日志过滤
生产环境建议微调,避免瞬时误报或告警风暴:
- 在
/etc/mdadm/mdadm.conf中增加:PROGRAM /usr/share/mdadm/checkarray
该脚本会自动检查阵列健康,并配合MAILADDR触发更精准的告警 - 设置告警延迟(例如5分钟内同一事件只发一次):
DELAY 300(单位为秒,加在MAILADDR下方) - 如使用Postfix/Sendmail,确保本地MTA已配置且能外发邮件;若用外部SMTP(如Gmail),需配置
sSMTP或msmtp并测试echo "test" | mail -s "test" admin@example.com











