smartctl 是什么
smartctl 读取磁盘内置的 SMART(自我监测、分析与报告技术)数据。硬盘与 SSD 会持续记录通电小时数、重映射扇区数、待映射扇区数、读写错误、SSD 磨损与剩余寿命等指标,这些数字是发现磁盘劣化最早的信号。它属于 smartmontools 软件包,需要 root 权限,并且在磁盘阵列卡后面还需要指定设备类型才能读到数据。
基本信息
| 用途 | 读取磁盘的健康状态、属性表与自检历史 |
|---|---|
| 语法 | smartctl [选项] 设备;-H 摘要、-a 全部、-A 属性表、-t 触发自检、-l selftest 看历史 |
| 所属软件包 | smartmontools |
| 权限与设备类型 | 通常需要 root;RAID 卡后用 -d megaraid,N,USB 转接用 -d sat |
典型使用场景
- 例行巡检:定期采集所有物理盘的属性表,观察关键计数是否增长
- 故障预警:读到重映射或待映射扇区增长,提前安排更换而不是等宕机
- SSD 寿命评估:查看剩余寿命与写入量,规划扩容或替换节奏
- 更换后核对:新盘上架前确认没有历史错误计数
- 故障复盘:结合自检历史判断磁盘是突然失效还是早已劣化
常用示例
常用示例
smartctl -H /dev/sda # 总体健康状态 PASSED / FAILED
smartctl -A /dev/sda # 属性表,关键计数都在这里
smartctl -a /dev/nvme0 # NVMe 盘的完整信息
smartctl -t short /dev/sda # 触发一次短自检
smartctl -l selftest /dev/sda # 查看自检历史结果
smartctl -d megaraid,4 -A /dev/sda # RAID 卡后面的第 5 块盘(编号从 0 起)关键字段快速核对
关键字段快速核对
smartctl -A /dev/sda | grep -Ei 'Reallocated|Pending|Uncorrect|CRC|Power_On|Start_Stop'
smartctl -A /dev/nvme0 | grep -Ei 'Available_Spare|Percentage_Used|Media_Errors|Unsafe_Shutdowns|Power_On'
# 批量采集留底,便于对比趋势
for d in /dev/sd?; do echo "== $d"; smartctl -H "$d" | tail -n 3; done关键指标读法
| 指标 | 含义 | 风险信号 |
|---|---|---|
| Reallocated_Sector_Ct | 已重映射扇区数 | 大于 0 且持续增长,考虑尽快更换 |
| Current_Pending_Sector | 等待重映射的扇区 | 增长说明读取困难,风险高于已重映射 |
| Offline_Uncorrectable | 离线扫描无法纠正的扇区 | 非零即视为严重信号 |
| UDMA_CRC_Error_Count | 接口传输校验错误 | 增长多指向线缆、背板或供电问题 |
| Power_On_Hours | 通电小时数 | 用于判断盘龄与保修状态 |
| Available_Spare | NVMe 可用备用块比例 | 接近阈值说明写入放大已消耗备用块 |
| Percentage_Used | NVMe 寿命消耗百分比 | 接近 100 时应规划替换 |
读不到 SMART 不一定是盘不支持:虚拟磁盘、部分云盘、某些 RAID 卡后面的盘需要正确的设备类型参数才能透传。先确认设备路径与 -d 类型,再下结论。
一次 PASSED 只代表此刻没有触发阈值告警,增长趋势才是关键。把关键计数定期采集下来做曲线,比临时看一眼要有价值得多。