Opened 8 years ago

Last modified 8 years ago

#657 closed task

Add NVMe support to the smartmontools — at Version 14

Reported by: Alex Samorukov Owned by:
Priority: major Milestone: Release 6.5
Component: all Version:
Keywords: nvme Cc:

Description (last modified by Alex Samorukov)

About

It would be great to add NVMe support to the smartctl. This task is not very trivial - because smart in NVMe is implemented differently then in SCSI/SAS or SATA. This ticket will be used to track changes in smartmontools and to collect important related links.

NVMe standard and vendor specific log pages

Hardware and emulation

  • QEMU fork which can emulates NVMe device with most of the features supported, including SMART log pages, namespaces, etc. Tested with Linux and FreeBSD, full list of the options could be found in the source code.

Linux NVMe support

FreeBSD NVMe support

Windows NVMe support

OS X NVMe support

  • Kind of official support added from 10.10.3, closes source, not documented, only apple-branded NVMe devices are supported. Implements NVMeSMARTClient library, however API is not documented.
  • MacVidCards NVMe driver - third party closed-source driver, coming with closed-source nvme-cli management utility, which is based on open-source one.

Solaris NVMe support

  • nvmeadm - NVM Express controller command line interface

Change History (14)

comment:1 by Alex Samorukov, 8 years ago

https://github.com/linux-nvme/nvme-cli - open source tool to get NVME information on Linux (including SMART data).
https://github.com/xnox/nvme-user - another NVMe Linux utility
http://nvmexpress.org/specifications/ - specifications, including SCSI translation interface
http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/ssd-dc-p3608-spec.pdf - Intel specification with some Intel-only pages documented

Last edited 8 years ago by Alex Samorukov (previous) (diff)

comment:2 by Christian Franke, 8 years ago

Milestone: undecidedunscheduled

Adding NVMe support makes sense.

Logical structure of NVMe commands and returned SMART related information is different both to ATA and SCSI. A new (-d nvme) pass_through interface and related printing routines are required. Unlike SAT, the NVMe SCSI translation interface is not very useful as it does not (yet?) provide a NVMe pass-through command.

comment:3 by Christian Franke, 8 years ago

https://svn.openfabrics.org/svnrepo/nvmewin/ - OpenFabrics NVMe driver for Windows.
It provides a NVME_PASS_THROUGH I/O-control which is reportedly also supported by the NVMe Windows drivers from Intel and OCZ.

comment:4 by Alex Samorukov, 8 years ago

In the FreeBSD NVMe SMART data could be obtained using nvmecontrol utility.

comment:5 by Alex Samorukov, 8 years ago

Windows opensource NVMe tool set: http://naraeon.net/en/latest-naraeon-ssd-tools/

comment:6 by Alex Samorukov, 8 years ago

QEMU with nvme support: https://github.com/OpenChannelSSD/qemu-nvme/. It could be used for the development purpose.

Last edited 8 years ago by Alex Samorukov (previous) (diff)

comment:7 by Christian Franke, 8 years ago

IOCTL_STORAGE_PROTOCOL_COMMAND - NVMe pass-through I/O-control supported by the generic NVMe driver for Windows (Stornvme.sys). Requires Windows 10.

comment:8 by Alex Samorukov, 8 years ago

Recent (10.10.3+) OSX/Darwin also supports NVME and there is undocumented NVMeSMARTClient library. No userland client [yet] found. Also only apple-branded devices are supported by official driver.

Non-apple NVMe devices are supported by 3rd party driver, see http://www.macvidcards.com/nvme-faq.html. This driver has some management tool, but no API description found.

Last edited 8 years ago by Alex Samorukov (previous) (diff)

comment:9 by Alex Samorukov, 8 years ago

Description: modified (diff)

comment:10 by Alex Samorukov, 8 years ago

Description: modified (diff)

comment:11 by Alex Samorukov, 8 years ago

Description: modified (diff)

comment:12 by Alex Samorukov, 8 years ago

Description: modified (diff)

comment:13 by Alex Samorukov, 8 years ago

Description: modified (diff)

comment:14 by Alex Samorukov, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.