Smartmontools 硬盘健康监控教程

Smartmontools 是 Linux 下最常用的硬盘健康监控工具套件,它通过读取硬盘内置的 SMART(Self-Monitoring, Analysis and Reporting Technology)数据来评估硬盘的健康状态。该套件包含 smartctl(命令行查询工具)和 smartd(后台监控守护进程)两个核心组件。通过定期监控 SMART 数据,你可以在硬盘彻底故障前提前发现问题并采取措施。本文适用于物理服务器管理场景,搬瓦工 VPS 使用虚拟磁盘,SMART 数据由宿主机管理。

一、安装 Smartmontools

1.1 在 Ubuntu/Debian 上安装

apt update
apt install smartmontools -y

1.2 在 CentOS/RHEL 上安装

yum install smartmontools -y

1.3 启动 smartd 服务

systemctl enable smartd
systemctl start smartd
systemctl status smartd

二、使用 smartctl 查看硬盘信息

2.1 查看硬盘基本信息

# 查看硬盘型号、固件版本、序列号等
smartctl -i /dev/sda

2.2 查看 SMART 健康状态

# 快速健康检查
smartctl -H /dev/sda

# 输出示例:
# SMART overall-health self-assessment test result: PASSED

如果输出为 PASSED 表示硬盘整体健康,如果为 FAILED 则表示硬盘即将故障,应立即备份数据。

2.3 查看所有 SMART 属性

# 查看完整 SMART 信息
smartctl -a /dev/sda

# 只查看 SMART 属性
smartctl -A /dev/sda

三、关键 SMART 属性解读

SMART 属性众多,以下是需要重点关注的几个指标:

  • Reallocated_Sector_Ct(ID 5):重新分配的扇区数。数值增长说明磁盘出现坏道,且坏道已被备用扇区替代。该值持续增长预示磁盘寿命接近终点。
  • Spin_Retry_Count(ID 10):电机启动重试次数。数值增大可能预示机械故障。
  • Current_Pending_Sector(ID 197):当前等待重新分配的扇区数。这些扇区读取困难,可能即将成为坏道。
  • Offline_Uncorrectable(ID 198):离线无法修正的扇区数。表示存在无法通过重新分配修复的坏道。
  • UDMA_CRC_Error_Count(ID 199):数据传输 CRC 错误数。数值大通常说明数据线或接口有问题。
  • Temperature_Celsius(ID 194):硬盘温度。长期高温会加速硬盘老化。
  • Power_On_Hours(ID 9):通电时间(小时)。了解硬盘的使用年限。

3.1 快速检查关键指标

# 只显示关键属性
smartctl -A /dev/sda | grep -E "Reallocated|Current_Pending|Offline_Uncorrectable|Temperature|Power_On"

四、执行 SMART 自检

4.1 短时自检

# 启动短时自检(约 2 分钟)
smartctl -t short /dev/sda

# 查看自检结果
smartctl -l selftest /dev/sda

4.2 长时自检

# 启动长时自检(可能需要几个小时)
smartctl -t long /dev/sda

# 查看预计完成时间
smartctl -c /dev/sda

4.3 离线自检

# 启动离线自检
smartctl -t offline /dev/sda

五、配置 smartd 自动监控

smartd 是 Smartmontools 的守护进程,可以在后台自动监控所有硬盘并在发现问题时发送告警。

5.1 编辑 smartd 配置文件

# 编辑配置文件
nano /etc/smartd.conf

配置示例:

# 监控所有磁盘,每天执行短时自检,每周日执行长时自检
# 发现属性变化或自检失败时发送邮件告警
/dev/sda -a -o on -S on -s (S/../.././02|L/../../7/03) -m admin@example.com -M exec /usr/share/smartmontools/smartd-runner

# 参数说明:
# -a         监控所有 SMART 属性
# -o on      开启离线自动收集
# -S on      开启属性自动保存
# -s (...)   自检调度
# S/../.././02  每天凌晨 2 点执行短时自检
# L/../../7/03  每周日凌晨 3 点执行长时自检
# -m         告警邮件接收地址
# -M exec    指定告警执行脚本

5.2 监控所有磁盘

# 自动扫描并监控所有磁盘
DEVICESCAN -a -o on -S on -s (S/../.././02|L/../../7/03) -m admin@example.com

5.3 重启 smartd 服务

systemctl restart smartd
systemctl status smartd

六、监控 SSD 硬盘

SSD 的 SMART 属性与 HDD 不同,需要关注以下指标:

  • Wear_Leveling_Count:磨损均衡计数,反映 SSD 的磨损程度。
  • Media_Wearout_Indicator:介质磨损指示器,从 100 降到 0 表示寿命耗尽。
  • Total_LBAs_Written:总写入量,用于计算 SSD 的 TBW(Total Bytes Written)。
  • Reallocated_Sector_Ct:对 SSD 同样适用,表示坏块数量。

6.1 查看 NVMe SSD 信息

# NVMe SSD 需要指定设备类型
smartctl -a /dev/nvme0 -d nvme

# 查看 NVMe 健康日志
smartctl -l error /dev/nvme0 -d nvme

七、批量监控脚本

#!/bin/bash
# 批量检查所有硬盘 SMART 状态
echo "===== 硬盘健康状态报告 ====="
echo "检查时间: $(date)"
echo ""

for disk in /dev/sd[a-z]; do
    if [ -b "$disk" ]; then
        echo "--- $disk ---"
        # 获取健康状态
        health=$(smartctl -H $disk | grep "SMART overall" | awk -F: '{print $2}')
        echo "健康状态: $health"

        # 获取温度
        temp=$(smartctl -A $disk | grep Temperature_Celsius | awk '{print $10}')
        echo "温度: ${temp}°C"

        # 获取通电时间
        hours=$(smartctl -A $disk | grep Power_On_Hours | awk '{print $10}')
        echo "通电时间: ${hours} 小时"

        # 获取重分配扇区数
        reallocated=$(smartctl -A $disk | grep Reallocated_Sector | awk '{print $10}')
        echo "重分配扇区: $reallocated"

        # 获取待重分配扇区数
        pending=$(smartctl -A $disk | grep Current_Pending | awk '{print $10}')
        echo "待重分配扇区: $pending"
        echo ""
    fi
done

八、常见问题

8.1 VPS 上无法读取 SMART 数据

搬瓦工等 VPS 使用虚拟磁盘,不支持直接读取 SMART 数据。这是正常现象,SMART 监控主要用于物理服务器。VPS 的磁盘健康由宿主机负责管理。

8.2 RAID 控制器下的磁盘

# 通过 RAID 控制器访问单块磁盘
# MegaRAID 控制器
smartctl -a -d megaraid,0 /dev/sda

# 3ware 控制器
smartctl -a -d 3ware,0 /dev/twa0

# HP Smart Array
smartctl -a -d cciss,0 /dev/cciss/c0d0

8.3 smartd 告警邮件配置

# 安装邮件发送工具
apt install mailutils -y

# 测试邮件发送
echo "Test" | mail -s "SMART Alert Test" admin@example.com

总结

Smartmontools 是服务器运维中不可或缺的硬盘监控工具。通过定期检查 SMART 属性和配置自动告警,你可以在硬盘故障发生前采取预防措施,避免数据丢失。如果不幸遇到磁盘故障,可以参考 ddrescue 磁盘抢救教程TestDisk 数据恢复教程 进行数据挽回。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。