硬盘故障与更换68 条

nvme smart-log 解读

NVMe 盘用 nvme-cli 读取健康信息:critical_warning、可用备用块、寿命与介质错误是四项核心指标,掉盘前通常先出现备用块下降或介质错误。

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 接管,需先确认平台配置
  • 备用块下降能否恢复:一般不能恢复,只能监控下降速度并规划更换
  • 能否在业务运行中读取:读取健康日志为只读操作,可以随时执行

易错点

  • 只跑 nvme list 不读 smart-log:列表看不到寿命消耗与介质错误
  • 忽略 AER 日志:链路降速与复位问题需要内核日志佐证,只换盘未必解决
  • 把 ATA 的 SMART 判断经验套到 NVMe 上:字段体系不同,阈值口径也不一样

数据来源与参考

  • nvme-cli 文档
  • NVMe 规范(SMART/Health Log)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌