nvme smart-log 是什么
nvme-cli 是 Linux 上管理 NVMe 设备的工具,nvme smart-log 读取设备自维护的健康日志:critical_warning 是综合告警位,available_spare 反映可用备用块,percentage_used 表示寿命消耗,media_errors 累计介质错误。NVMe 与 SATA/SAS 的 SMART 字段体系完全不同,ATA 属性号的经验不能照搬到 NVMe 上。实际运维中,掉盘前往往先看到备用块下降或介质错误增长。
基本信息
| 适用平台 | Linux + NVMe 设备,工具为 nvme-cli |
|---|---|
| 设备命名 | 控制器为 /dev/nvme0,命名空间为 /dev/nvme0n1,查询健康用控制器节点 |
| 常用命令 | nvme smart-log、nvme error-log、nvme id-ctrl、nvme list |
| 权限 | 读取健康日志通常需要 root 权限 |
关键字段
| 字段 | 含义 | 异常信号 |
|---|---|---|
| critical_warning | 综合告警位 | 非 0 即需处理 |
| available_spare | 可用备用块比例 | 下降或接近阈值 |
| percentage_used | 寿命消耗估计 | 接近 100% |
| media_errors | 介质错误计数 | 出现增长 |
| num_err_log_entries | 错误日志条数 | 持续增长 |
| unsafe_shutdowns | 非正常掉电次数 | 增长说明供电或强制断电 |
| temperature | 当前温度 | 接近或超过告警阈值 |
常用查询
常用查询
nvme list # 列出所有 NVMe 设备与命名空间
nvme smart-log /dev/nvme0 # 健康日志全量字段
nvme smart-log /dev/nvme0 | grep -i -E "critical|spare|percentage_used|media_errors"
nvme error-log /dev/nvme0 | head -40 # 错误日志条目
nvme id-ctrl /dev/nvme0 | grep -i -E "sn|mn|fr" # 序列号、型号、固件版本典型使用场景
- 巡检建线:把关键字段按周采集入库,看寿命与错误计数的趋势
- 容量与寿命规划:按 percentage_used 的增长速率预估更换时间
- 故障取证:掉盘后先读 smart-log 与 error-log,再动硬件
- 上架验收:读 id-ctrl 核对型号、序列号与固件版本是否与订单一致
- 分层存储:对高频写入的缓存盘单独设置更短的巡检周期
PCIe 链路错误(AER)不在 smart-log 里:结合内核日志中的 AER 报错一起看,才能区分是盘体问题还是链路问题。
percentage_used 是厂商按自身耐久模型给出的估计值,不同型号之间不可直接横比;趋势与绝对值结合看更有参考意义。
常见疑问
- 为什么 nvme list 看不到某块盘:可能被 RAID 模式或 VMD 接管,需先确认平台配置
- 备用块下降能否恢复:一般不能恢复,只能监控下降速度并规划更换
- 能否在业务运行中读取:读取健康日志为只读操作,可以随时执行