在 CentOS 7 上支持 NVMe 的 Smartmontools

Ben*_*rel 3 centos smart smartctl nvme

我刚刚在带有 NVMe 驱动器的服务器上设置了 CentOS 7,但很惊讶无法smartctl在它们上运行:

# smartctl -a /dev/nvme0
/dev/nvme0: Unable to detect device type
Please specify device type with the -d option.

# smartctl -a /dev/nvme0 -d nvme
/dev/nvme0: Unknown device type 'nvme'
Run Code Online (Sandbox Code Playgroud)

然后我注意到 CentOS 附带 Smartmontools 版本 6.2,而Smartmontools 从版本 6.5 开始支持 NVMe

如何在 CentOS 7 上将 Smartmontools 升级到 6.5 版?

他们的下载页面仅提供适用于 CentOS 7 的 Smartmontools 6.2。

理想情况下,我不想从源代码编译,我更喜欢 RPM,或者更好的第三方存储库,其中包含最新的 Smartmontools,以获得定期更新。

选择

如果您知道另一个工具(最好包含在 CentOS 7 中),我也愿意接受建议,它可以让我从 NVMe 驱动器获取 SMART 信息。

Ben*_*rel 6

好的,我找到了 2 个替代方案。

获取适用于 CentOS 7 的预编译二进制文件

尽管他们的软件包页面仅提供适用于 CentOS 7 的 Smartmontools 6.2,但他们的SVN 构建页面提供了可在 CentOS 上运行的二进制文件。

正确的存档有一个.linux后缀,例如我选择了:

smartmontools-6.6-0-20170503-r4430.linux-x86_64.tar.gz

这个档案包含一个smartctl像魅力一样工作的二进制文件。

使用 nvme 命令行工具

CentOS 7 附带一个nvme命令(yum 包名为nvme-cli)。

它可以列出 NVMe 驱动器:

# nvme list
Run Code Online (Sandbox Code Playgroud)

并且可以读取 SMART 信息:

# nvme smart-log /dev/nvme0
Run Code Online (Sandbox Code Playgroud)

以及其他SMART 信息(不知道为什么要拆分):

# nvme smart-log-add /dev/nvme0
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,我的系统需要将 `intel` 添加到最后一个命令:`nvme intel smart-log-add /dev/nvme0`。 (2认同)