Linux中开机启动项怎么实现开机自动检测磁盘坏道告警

胖敏酱_4027

胖敏酱_4027

2026-09-23

927人浏览

原创

linux开机自动检测磁盘坏道并告警的正确做法是启用smartd守护进程监控smart状态,通过配置/etc/smartd.conf和自定义告警脚本实现轻量、实时、生产可用的异常预警,而非低效高损的全盘扫描。

linux中开机启动项怎么实现开机自动检测磁盘坏道告警

Linux 中开机自动检测磁盘坏道并告警,不能也不应依赖每次开机都全盘扫描(如 badblocks)——那会严重拖慢启动、损耗硬盘寿命,且无必要。真正可行、安全、生产环境推荐的做法是:开机时自动检查 SMART 状态,并对异常指标触发告警。这既轻量又及时,符合“事前预警”原则。


✅ 开机自动运行 SMART 健康检查与告警

核心思路:利用 smartd 守护进程(随系统启动)持续监控,配合自定义脚本实现异常时通知(邮件/日志/弹窗等)。

1. 确保 smartmontools 已安装并启用 SMART

# Debian/Ubuntu
sudo apt install smartmontools

# RHEL/CentOS/Fedora
sudo dnf install smartmontools

# 启用并启动服务(开机自启)
sudo systemctl enable smartd
sudo systemctl start smartd

⚠️ 注意:smartd 默认已配置为开机启动,但需确认 /etc/default/smartmontools(Debian系)或 /etc/sysconfig/smartd(RHEL系)中 start_smartd=yes

2. 配置 smartd 主动监控与告警规则

编辑 /etc/smartd.conf,添加或修改对应硬盘行(以 /dev/sdb 为例):

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
/dev/sdb -a -o on -S on -n standby,q -m root -M exec /usr/local/bin/smart-alert.sh

说明:

  • -a:启用所有 SMART 检测项(包括重映射扇区、待处理扇区等)
  • -o on:开启自动离线测试(offline testing)
  • -S on:启用自动保存属性(用于趋势分析)
  • -n standby,q:硬盘处于 standby 状态时也静默跳过,不唤醒;q 表示 quiet mode,避免日志刷屏
  • -m root:异常时发邮件给 root(需本地 MTA 如 mailutils 或 postfix)
  • -M exec /usr/local/bin/smart-alert.sh关键!用自定义脚本替代默认邮件,实现灵活告警

3. 编写告警脚本 /usr/local/bin/smart-alert.sh

#!/bin/bash
# 参数说明:$1=设备名(如 /dev/sdb),$2=类型(如 "DISK FAILURE"),$3=详情
DEVICE="$1"
ALERT_TYPE="$2"
DETAIL="$3"

# 写入系统日志(确保可查)
logger -t "SMART-ALERT" "CRITICAL: $DEVICE - $ALERT_TYPE: $DETAIL"

# 可选:发邮件(需已配置本地 sendmail/postfix)
echo "Subject: [SMART ALERT] $DEVICE failure detected" | \
  cat - > /var/log/smart-alerts.log

# 可选:触发桌面通知(仅限有 GUI 的终端用户,非服务器场景)
if [ -n "$DISPLAY" ] && command -v notify-send >/dev/null; then
  notify-send -u critical "⚠️ SMART Alert on $DEVICE" "$ALERT_TYPE"
fi

赋予执行权限:

sudo chmod +x /usr/local/bin/smart-alert.sh

4. 验证配置并重启服务

# 检查语法是否正确
sudo smartd -d -c /etc/smartd.conf --config-file-test

# 重载配置并重启
sudo systemctl restart smartd

# 查看运行状态和最近日志
sudo systemctl status smartd
sudo journalctl -u smartd -n 20 --no-pager

✅ 正常情况下,smartd 每30分钟轮询一次(可调),一旦发现 Reallocated_Sector_Ct > 0Current_Pending_Sector > 0 等硬故障信号,立即触发脚本。


❌ 不推荐的“开机扫描”方式(为什么避开?)

  • badblocks -nsv 全盘扫描:耗时数小时(TB级盘),阻塞启动,且必须卸载分区 → 无法用于根盘或挂载中业务盘
  • 开机 rc.local 或 systemd 服务调用 badblocks:易因设备未就绪失败,无重试机制,不可靠
  • 每次启动都跑 SMART long test:影响 I/O,非必要(日常用 short test + continuous monitoring 即可)

? 补充建议:让告警更实用

  • 在脚本中加入 smartctl -A /dev/sdb | awk '/Reallocated_Sector_Ct|Current_Pending_Sector/ {print}' 提取具体数值,让告警带原始数据
  • /var/log/smart-alerts.log 加入 logrotate,避免膨胀
  • 对于多盘服务器,用 for dev in /dev/sd[a-z]; do ... 批量生成配置,或使用 smartd 的通配符(如 DEVICESCAN -d removable -n standby,q -m root

不复杂但容易忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2392

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

816

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

709

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

374

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2156

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3952

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

647

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习