3.6 磁盘健康测试

1. 简介

smartctl是Linux系统中常用的磁盘健康检查工具,基于SMART(Self-Monitoring, Analysis and Reporting Technology)技术。SMART是一种现代硬盘普遍支持的自我监测、分析和报告技术,能够提前预警磁盘可能发生的故障。

smartmontools软件包包含两个主要工具:

  • smartctl:命令行工具,用于控制和监控存储设备
  • smartd:守护进程,用于自动监控和报告磁盘状态

2. 安装

Ubuntu/Debian系统

$ sudo apt-get install smartmontools

CentOS/RHEL系统

$ yum install smartmontools
# 或对于较新版本
$ dnf install smartmontools

启动服务

# Ubuntu/Debian
$ sudo systemctl start smartmontools
$ sudo systemctl enable smartmontools

# CentOS/RHEL
$ sudo systemctl start smartd
$ sudo systemctl enable smartd

3. 基本使用

3.1 检查磁盘是否支持SMART

$ sudo smartctl -i /dev/sda

关键查看最后两行输出:

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

3.2 启用SMART支持(如未开启)

$ sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda

参数说明:

  • –smart=on:启用SMART功能
  • –offlineauto=on:启用自动离线测试
  • –saveauto=on:启用属性自动保存

3.3 检查磁盘健康状况

$ sudo smartctl -H /dev/sda

健康状态显示为”PASSED”表示正常,”FAILED”表示磁盘可能出现问题。

3.4 查看详细SMART信息

$ sudo smartctl -a /dev/sda
# 或仅显示属性表
$ sudo smartctl -A /dev/sda

4. SMART属性详解

SMART属性表包含以下重要列:

列名 说明
ID 属性ID,1-255之间的数字
ATTRIBUTE_NAME 制造商定义的属性名称
VALUE 标准化值(1-253),值越高越好
WORST 历史最低值
THRESH 故障阈值
TYPE 属性类型(Pre-fail关键属性/Old_age非关键属性)
WHEN_FAILED 故障状态指示
RAW_VALUE 原始数值

重点关注属性:

  • 5 Reallocated_Sector_Ct:重映射扇区计数
  • 197 Current_Pending_Sector:当前待处理扇区数
  • 198 Offline_Uncorrectable:离线无法校正扇区数

5. 磁盘测试

5.1 短期测试(约2分钟)

$ sudo smartctl -t short /dev/sda

5.2 长期测试(全面扫描,时间较长)

$ sudo smartctl -t long /dev/sda

5.3 查看测试进度和结果

$ sudo smartctl -l selftest /dev/sda

5.4 中止测试

$ sudo smartctl -X /dev/sda

6 高级功能

6.1 查看错误日志

$ sudo smartctl -l error /dev/sda

6.2 查看测试时间估算

$ sudo smartctl -c /dev/sda

6.3 自动监控配置

编辑/etc/smartd.conf配置文件:

DEVICESCAN -a -o on -S on -s (S/../.././02|L/../../6/03) -m admin@example.com

参数说明:

  • -a:监控所有属性
  • -o on:开启自动离线测试
  • -S on:开启属性自动保存
  • -s:定期测试计划
  • -m:发送邮件通知

    7 实际应用建议

    7.1 定期检查计划

    建议将以下命令加入crontab定期执行: ```

    每周执行一次短期测试

    0 2 0 /usr/sbin/smartctl -t short /dev/sda

每月执行一次长期测试

0 3 1 /usr/sbin/smartctl -t long /dev/sda ```

7.2 故障预警指标

当出现以下情况时应立即备份数据:

  • 健康检查结果为”FAILED”
  • 任何Pre-fail属性显示”FAILING_NOW”
  • Reallocated_Sector_Ct值持续增加
  • 出现大量待处理扇区

7.3 注意事项

  • RAID阵列中的磁盘可能需要特殊参数(如-d megaraid,N)
  • USB外接磁盘的SMART支持可能有限
  • 虚拟机中的磁盘可能无法使用SMART功能

    8. 总结

    smartctl是Linux系统管理员必备的磁盘健康监测工具,通过定期监控可以提前发现磁盘潜在问题,避免数据丢失。结合smartd守护进程,可以实现自动化监控和报警,为系统稳定性提供重要保障。

results matching ""

    No results matching ""