Opened 9 years ago
Last modified 9 years ago
#657 closed task
Add NVMe support to the smartmontools — at Version 11
Reported by: | Alex Samorukov | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Release 6.5 |
Component: | all | Version: | |
Keywords: | nvme | Cc: |
Description (last modified by )
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
- Official specifications: http://nvmexpress.org/specifications/
- Intel NVMe documentation with Intel-specific log pages (CAh, C5h, DDh, C1h/C2h).
- OCZ Z-Drive specification, with vendor-specific smart log page (E0h)
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
- NVMe kernel header linux/nvme.h
- nvme-cli - NVM-Express user space tooling for Linux
- nvme-user - another opensource userspace utility
FreeBSD NVMe support
- NVMe kernel header dev/nvme/nvme.h
- nvmecontrol utility, opensource.
Windows NVMe support
- 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.
- IOCTL_STORAGE_PROTOCOL_COMMAND - NVMe pass-through I/O-control supported by the generic NVMe driver for Windows (Stornvme.sys). Requires Windows 10.
- Naraeon SSD tools windows opensource NVMe tool set
- Intel® Solid-State Drive Data Center Tool
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 (11)
comment:2 by , 9 years ago
Milestone: | undecided → unscheduled |
---|
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 , 9 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 , 9 years ago
In the FreeBSD NVMe SMART data could be obtained using nvmecontrol utility.
comment:5 by , 9 years ago
Windows opensource NVMe tool set: http://naraeon.net/en/latest-naraeon-ssd-tools/
comment:6 by , 9 years ago
QEMU with nvme support: https://github.com/OpenChannelSSD/qemu-nvme/. It could be used for the development purpose.
comment:7 by , 9 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 , 9 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.
comment:9 by , 9 years ago
Description: | modified (diff) |
---|
comment:10 by , 9 years ago
Description: | modified (diff) |
---|
comment:11 by , 9 years ago
Description: | modified (diff) |
---|
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