什么是 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……),只看其中一块容易漏掉正在劣化的那块,也会让排查对象选错。