smartctl -a 是什么
smartctl 是 smartmontools 套件中的命令行工具,-a(--all)一次输出该盘的设备识别、健康自评、属性表与错误日志,等价于把 -i、-H、-A、-l error、-l selftest 合并执行。Linux、FreeBSD、Windows(smartctl.exe)都可用,读取多数盘信息需要 root 或管理员权限;盘挂在硬件 RAID 卡后面时还必须用 -d 指定透传方式,否则命令操作的是逻辑盘而不是物理盘。
基本信息
| 适用系统 | Linux / FreeBSD / Windows,读盘信息需 root 或管理员权限 |
|---|---|
| 基本语法 | smartctl -a /dev/sdX(等价于 -i -H -A -l error -l selftest) |
| 硬件 RAID | 加 -d megaraid,N 透传到指定物理盘,N 为卡上的 Device ID |
| 不适用 | 部分虚拟机磁盘与 USB 桥接盒不支持 SMART 透传,会返回不支持提示 |
典型使用场景
- 上架验收:新盘先读一次全量信息,把型号、序列号、固件版本录进资产台账
- 告警复核:监控报 SMART 异常时,判断是属性越阈值还是历史错误累积
- 换盘取证:拔盘前保存 -a 输出,作为盘体健康状况的留档证据
- 兼容排查:核对固件版本与转速是否符合设计,避免混用不同批次与规格的盘
- 批量巡检:对阵列中每块盘循环执行并归档,按周采样做趋势对比
分段落抓取
分段落抓取
smartctl -i /dev/sdb # 只取设备识别段
smartctl -H /dev/sdb # 只取健康总评
smartctl -A /dev/sdb # 只取属性表
smartctl -l error /dev/sdb # 只取设备错误日志
smartctl -l selftest /dev/sdb # 查看自测历史
smartctl -a -d megaraid,4 /dev/sda # 硬件 RAID 下透传到 4 号物理盘
smartctl -x /dev/sdb # 扩展输出,含传输协商速率等信息输出逐段读法
| 段 | 关键行 | 怎么读 |
|---|---|---|
| 设备段 | Device Model / Serial Number / Firmware Version | 核对资产与固件基线,序列号用于换盘定位 |
| 健康段 | SMART overall-health self-assessment test result | PASSED 只表示阈值未越界,FAILED 需要立即处理 |
| 属性段 | ID# / ATTRIBUTE_NAME / VALUE / WORST / THRESH / RAW_VALUE | VALUE 低于 THRESH 判为失败,RAW_VALUE 是原始计数 |
| 错误段 | Error Log / Self-test Log | 错误的时间分布能说明问题是偶发还是近期加剧 |
PASSED 不等于健康:盘可以在 PASSED 状态下存在持续增长的待定扇区,属性趋势与业务侧报错才是决策依据。
smartmontools 7.x 起 ATA 属性表列名统一为 VALUE / WORST / THRESH / RAW_VALUE,老版本没有 -x 扩展段。写解析脚本时按列名取字段而不是按固定列号取值,跨版本更稳。