NVMe 设备健康与清单

nvme list 列出命名空间,nvme smart-log 读取温度、已用寿命百分比与介质错误计数,是 NVMe 设备健康数据的直接来源。

什么是 nvme-cli

nvme-cli 是 Linux 下管理 NVMe 设备的标准命令行工具,直接走 NVMe 协议读设备日志:smart-log 给出温度、已用寿命百分比、介质错误与掉电保护状态,id-ctrl 看控制器信息,list 列出命名空间与容量。它比通用 SCSI/SMART 路径更贴近设备本身的指标口径,是 NVMe 健康与容量核对的首选工具。

基本信息

软件包nvme-cli(部分发行版为 nvme)
设备清单nvme list / nvme list-subsys
健康日志nvme smart-log /dev/nvme0
控制器信息nvme id-ctrl /dev/nvme0
命名空间nvme id-ns /dev/nvme0n1

典型使用场景

  • NVMe 盘健康巡检:批量取温度、寿命与介质错误计数
  • 容量与命名空间核对:确认 OS 看到的 ns 与规划一致
  • 排查掉盘与超时:读取错误日志与控制器状态信息
  • 固件与型号盘点:id-ctrl 里的型号、序列号、固件版本用于资产登记
  • 性能异常定位:结合日志确认是否触发温度降频

常用命令

常用命令
sudo nvme list                                  # 命名空间、型号、容量
sudo nvme smart-log /dev/nvme0 | grep -iE 'temperature|percentage_used|media_errors|unsafe'
sudo nvme id-ctrl /dev/nvme0 | head -20         # 控制器信息与固件版本
sudo nvme error-log /dev/nvme0 | head -20       # 最近的错误记录
sudo nvme smart-log-add /dev/nvme0              # 扩展温度与寿命信息
sudo nvme id-ns /dev/nvme0n1 | grep -i 'nsze\|ncap'   # 命名空间容量

smart-log 关键字段

字段含义异常信号
temperature综合温度(开尔文或摄氏度)持续偏高会触发降频
percentage_used寿命消耗百分比接近 100 表示擦写寿命将尽
media_errors介质错误计数非 0 需结合增长趋势判断
unsafe_shutdowns异常掉电次数骤增常见于电源或掉电保护问题
smart-log 的温度字段部分版本输出为开尔文,换算摄氏度需要减 273;读数字前先确认版本行为,避免把 300 当成 300 摄氏度。
除了查询类命令,nvme-cli 还包含格式化、固件升级等破坏性操作,生产环境执行前必须确认设备节点与命令语义。
监控采集时建议记录温度的峰值与 percentage_used 的日增量:绝对值偏高未必立刻出事,增长速率才是预警依据,也便于安排更换批次。
一台机器上有多块 NVMe 时,巡检脚本要遍历所有控制器(nvme0、nvme1……),只看其中一块容易漏掉正在劣化的那块,也会让排查对象选错。

易错点

  • 命名空间(nvme0n1)与控制器(nvme0)不是一回事,smart-log 通常在控制器上读取,命令对象弄混会报错或读错设备
  • percentage_used 是寿命消耗提示,不等于立即故障,要结合增长速率与业务重要性安排更换
  • 把 smart-log 的温度当摄氏度直接读,若版本按开尔文输出会得出荒谬结论
  • 把 nvme-cli 的格式化类命令用在生产盘上不可逆,执行前用 nvme list 核对序列号与挂载关系

数据来源与参考

  • nvme-cli 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌