Introduction
NVMe (Non-Volatile Memory Express) is a specification for accessing drives via PCI Express; it is specifically tailored to the needs of non-volatile memory. The connection via PCIe Gen3 x4 (32 GBit/s) offers, for example, up to five times faster access speeds and lower latencies than conventional SATA 3 (6GBit/s) interfaces. Thanks to a high degree of parallelism and low energy consumption, they let users meet current and future memory requirements.
Characteristics
NVMe SSDs are addressed differently than SATA drives. In a UNIX system (Linux/BSD), the first NVMe-SSD is called /dev/nvme0n1 instead of /dev/sda. The n after nvme0 stands for "Namespace". The first partition on this SSD is /dev/nvme0n1p1 instead of /dev/sda1.
The scheme is:
/dev/nvme<CONTROLLER_NUMBER>n<NAMESPACE>p<PARTITION>NVMe-CLI
To manage NVMe SSDs, you can use the nvme-cli tool on UNIX systems.
In the Hetzner Rescue System, this tool is already pre-installed.
Show list of all detected NVMe SSDs
nvme listNode             SN                   Model                                    Version  Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- -------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     S1XXNYAGAXXXXX       SAMSUNG MZVPV512HDGL-00000               1.1      1         102.40  GB / 512.11  GB    512   B +  0 B   BXW7300Q
/dev/nvme1n1     S1XXNYAGAYYYYY       SAMSUNG MZVPV512HDGL-00000               1.1      1         102.40  GB / 512.11  GB    512   B +  0 B   BXW7300QShow serial number of a specific NVMe SSD
nvme id-ctrl /dev/nvme0n1|egrep "sn |mn "sn      : S1XXNYAGAXXXXX
mn      : SAMSUNG MZVPV512HDGL-00000Show the SMART log
SMART stands for Self-Monitoring, Analysis and Reporting Technology. Some NVMe SSD models support the SMART log read out using the tool smartctl. It is also used for SATA drives and might provide more details for you than if you used the nvme tool.
Using Smartctl
smartctl -a /dev/nvme0n1smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.101] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
[...]
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02, NSID 0x1)
Critical Warning:                   0x00
Temperature:                        29 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    113,446 [58.0 GB]
Data Units Written:                 48,760 [24.9 GB]
Host Read Commands:                 111,504,973
Host Write Commands:                41,507,430
Controller Busy Time:               1,395
Power Cycles:                       7
Power On Hours:                     395
Unsafe Shutdowns:                   0
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               29 Celsius
Temperature Sensor 2:               30 Celsius
Error Information (NVMe Log 0x01, max 64 entries)
No Errors LoggedUsing NVMe-CLI
nvme smart-log /dev/nvme0n1Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 29 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 113,446
data_units_written                  : 48,760
host_read_commands                  : 111,504,973
host_write_commands                 : 41,507,430
controller_busy_time                : 1,395
power_cycles                        : 7
power_on_hours                      : 395
unsafe_shutdowns                    : 0
media_errors                        : 0
num_err_log_entries                 : 0
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 29 C
Temperature Sensor 2                : 30 CShow the error log
nvme error-log /dev/nvme0n1Error Log Entries for device:nvme0n1 entries:1
.................
 Entry[ 0]
.................
error_count  : 0
sqid         : 0
cmdid        : 0
status_field : 0(SUCCESS: The command completed successfully)
parm_err_loc : 0
lba          : 0
nsid         : 0
vs           : 0
cs           : 0
.................Perform a self test
You can start a short self test (duration: up to 1h) for checking the NVMe SSDs health using the following command:
nvme device-self-test /dev/nvme0n1 -s 1Once the self test has been started, you can use this command to check the current state:
nvme self-test-log /dev/nvme0n1- 
Output, while the test is running:
Test is 21% complete and is still in progress. - 
If the output of the named command states
0%, the test is either not running, or not supported by the installed NVMe SSD:Test is 0% complete and is still in progress. - 
Once the test has been finished, please re-check the SMART health data (see the regarding section in this article).