磁盘阵列日常维护脚本保障站点数据安全

为什么要写磁盘阵列日常维护脚本

服务器上的磁盘阵列(RAID)虽然能提供冗余或性能提升,但如果某个磁盘出现故障而未及时发现,可能逐步演变为数据丢失。
手动每天登录服务器检查状态既不现实也容易遗漏。
编写一个磁盘阵列日常维护脚本,让它自动扫描RAID状态、磁盘SMART信息以及磁盘空间,一旦异常立即发出通知,可以大幅降低因磁盘问题导致站点数据安全风险的概率。

准备工作:确认环境与工具

在开始写脚本前,请先确认你的服务器已安装以下基础工具:

  • mdadm:管理Linux软件RAID。大多数系统已自带,若未安装可用 sudo apt install mdadm 或 yum install mdadm。
  • smartmontools:读取磁盘SMART健康数据。安装命令 sudo apt install smartmontools 或 yum install smartmontools。
  • mailutils 或 curl:用于发送报警通知。这里以简单的邮件发送为例(需要配置本地邮件服务),或使用curl调用企业微信/钉钉机器人。

确认命令是否可用:

mdadm --version
smartctl --version

编写核心检测脚本

创建一个脚本文件,例如 /root/raid_check.sh,内容如下(请根据实际RAID设备编号和磁盘名称修改):

#!/bin/bash
# 磁盘阵列日常维护脚本 - 检查RAID状态、磁盘SMART及空间

# 配置变量
RAID_DEVICE="/dev/md0"
DISKS="/dev/sda /dev/sdb /dev/sdc"
THRESHOLD_SPACE=90   # 磁盘使用率告警阈值(百分比)
ADMIN_EMAIL="admin@example.com"

# 1. 检查RAID阵列状态
RAID_STATUS=$(mdadm --detail $RAID_DEVICE | grep "State :" | awk '{print $3}')
if [ "$RAID_STATUS" != "clean" ]; then
    echo "RAID状态异常:$RAID_STATUS"
    mail -s "RAID告警:服务器磁盘阵列故障" $ADMIN_EMAIL <<< "当前RAID $RAID_DEVICE 状态:$RAID_STATUS,请立即检查。"
fi

# 2. 检查每块磁盘的SMART健康状态
for disk in $DISKS; do
    SMART_HEALTH=$(smartctl -H $disk | grep "SMART overall-health" | awk '{print $6}')
    if [ "$SMART_HEALTH" != "PASSED" ]; then
        echo "磁盘 $disk SMART状态:$SMART_HEALTH"
        mail -s "磁盘告警:$disk 健康状态异常" $ADMIN_EMAIL <<< "磁盘 $disk 健康状态为 $SMART_HEALTH,可能存在物理故障风险。"
    fi
done

# 3. 检查磁盘挂载分区的使用率
df -h | grep -vE 'tmpfs|overlay' | while read line; do
    USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
    MOUNT=$(echo $line | awk '{print $6}')
    if [ "$USAGE" -ge "$THRESHOLD_SPACE" ]; then
        mail -s "磁盘空间告警:$MOUNT 使用率超过${THRESHOLD_SPACE}%" $ADMIN_EMAIL <<< "$MOUNT 当前使用率:$USAGE%,请及时清理。"
    fi
done

保存后赋予执行权限:

chmod +x /root/raid_check.sh

部署定时任务实现每日自动运行

使用 crontab 设定每日凌晨执行一次脚本:

crontab -e

加入以下行:

0 2 * * * /root/raid_check.sh >/dev/null 2>&1

这样每天凌晨2点会自动运行脚本,若有异常会发送报警邮件到你指定的邮箱。
若要测试邮件发送功能,可以先手动执行脚本观察输出:

bash /root/raid_check.sh

避坑指南与常见问题

  • SMART 命令无权限:部分磁盘需要root权限才能读取SMART信息,脚本使用root运行无需担心。若使用普通用户,请使用sudo。
  • RAID名称不一致:不同服务器的软RAID设备可能是 /dev/md127 或 /dev/md1,先用 cat /proc/mdstat 查看实际名称。
  • 邮件发送失败:检查本地 MTA(如postfix)是否正常。也可改用 curl 调用 webhook 发送到企业微信或钉钉。
  • 脚本没有输出:默认正常时不发送任何通知,只有异常时才发邮件。如果想观察正常状态日志,可以在脚本末尾追加记录到文件的功能。

验证脚本是否正常工作

  1. 手动模拟一个错误场景(注意切勿在生产环境真正破坏数据):你可以临时停掉一块磁盘的SMART检测(不推荐)或者直接拔线测试(谨慎)。
  2. 更安全的做法:先修改脚本中的告警阈值(如将空间阈值设为1%),观察是否能收到触发邮件。
  3. 查看 crontab 执行日志:grep raid_check /var/log/syslog 或 journalctl -u cron | grep raid_check,确认定时任务执行成功。

完成以上步骤后,你的磁盘阵列日常维护脚本就已经开始自动守护服务器数据安全了。
之后只需留意邮箱报警,并定期查看 RAID 和磁盘真实状态(例如每月手动执行一次 mdadm --detail /dev/md0 确认一致性)。

分享到:
上一篇
TLS协议升级仅保留TLS1.2/1.3兼容浏览器
下一篇
NewAPI副业Token售卖完整落地运营流程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意