关键在于打通“监控→判断→通知”链路:用storcli读取中兴R5300G4等Broadcom RAID卡状态,Shell脚本定期检测State字段是否为Degraded,触发mail命令发警报,并通过flag防重复、cron每5分钟执行、配置SMTP确保邮件可达。

硬件RAID降级时自动发邮件,关键不是“配RAID”,而是打通“监控→判断→通知”这条链路。中兴R5300G4、Dell R430这类带LSI/Broadcom RAID卡的服务器,用MegaCLI或storcli读取状态,配合Shell脚本和系统邮件服务就能实现闭环。
确认RAID卡类型并安装对应管理工具
先识别控制器型号,再装匹配工具:
- 执行
lspci | grep -i raid或lspci | grep -i lsi,看是否含LSI Logic / Broadcom或Avago - 是Broadcom/LSI卡(如MegaRAID 9361-8i):下载
storcli(推荐)或MegaCli64;官网或厂商支持页获取.rpm包 - 是中兴R5300G4:默认搭载Broadcom卡,
storcli兼容性更好,命令更清晰,例如storcli /c0 show可直接看到控制器健康状态 - 安装后验证:
storcli /c0/u0 show应返回逻辑盘信息,State字段为Optimal或Degraded
编写检测脚本判断RAID是否降级
核心逻辑是定期抓取State和Firmware state字段,不依赖人工肉眼查看:
- 对逻辑盘检查:
storcli /c0/u0 show | grep "State" | awk '{print $3}',输出Degraded即告警 - 对物理盘检查:
storcli /c0/e252/s0 show | grep "Firmware state" | awk '{print $4}',输出Failed或Offline也要触发 - 脚本中加入防重复发送机制,例如用
/tmp/raid_degraded.flag标记已告警,恢复后再清除 - 示例判断片段:
if [ "$(storcli /c0/u0 show | grep "State" | awk '{print $3}')" = "Degraded" ]; then
echo "$(date): RAID degraded on /c0/u0" | mail -s "ALERT: RAID Degraded" admin@example.com
touch /tmp/raid_degraded.flag
fi
配置系统邮件服务确保能外发
Linux自带mail命令依赖本地MTA(如sendmail/postfix),必须确保它能真正发出去:
- CentOS/RHEL默认可能没装
mailx:运行yum install -y mailx - 测试基础发送:
echo "test" | mail -s "test" your@email.com,若收不到,检查/var/log/maillog - 生产环境建议配简单SMTP中继(如使用
ssmtp或msmtp),避免被当成垃圾邮件拦截;例如用腾讯企业邮箱SMTP,配好账号密码后,mail命令就走该通道 - 别跳过DNS配置:确保
/etc/resolv.conf有可用DNS,否则SMTP连接会超时
加入定时任务实现持续监控
每5分钟跑一次检测,延迟低、开销小:
- 编辑crontab:
crontab -e - 添加行:
*/5 * * * * /opt/scripts/check_raid.sh >> /var/log/raid-monitor.log 2>&1 - 脚本路径用绝对路径,日志记录便于排错;权限设为
chmod +x /opt/scripts/check_raid.sh - 首次运行前手动执行一次脚本,确认邮件能收到、日志有输出、flag文件生成逻辑正常

















