NVMe

Last change on 2020-09-28 • Created on 2020-03-20 • ID: RO-C1DC0

Einführung

NVMe (Non-Volatile Memory Express) ist eine speziell auf die Bedürfnisse nichtflüchtiger Speicher zugeschnittene Spezifikation zum Zugriff auf Datenträger über PCI-Express. Die Anbindung über PCIe Gen3 x4 (32 GBit/s) bietet beispielsweise eine bis zu fünfmal schnellere Zugriffsgeschwindigkeit und geringere Latenzen als herkömmliche SATA 3 (6Gbit/s) Schnittstellen. Durch einen hohen Grad an Parallelität und niedrigen Energieverbrauch werden aktuelle und zukünftige Speicheransprüche erfüllt.

Besonderheiten

NVMe-SSDs werden anders als SATA Laufwerke angesprochen. Die erste NVMe-SSD heißt unter UNIX-Systemen (Linux/BSD) /dev/nvme0n1 statt /dev/sda. Das n nach nvme0 steht hierbei für "Namespace". Die erste Partition auf dieser SSD ist /dev/nvme0n1p1 statt /dev/sda1.

Das Schema ist hierbei:

/dev/nvme<CONTROLLER_NUMMER>n<NAMESPACE>p<PARTITION>

NVMe-CLI

Für die Verwaltung von NVMe-SSDs kann unter UNIX-Systemen das Tool nvme-cli genutzt werden.

Im Hetzner Rescue-System ist dies bereits vorinstalliert.

Liste aller erkannten NVMe SSDs anzeigen

nvme list
Node             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   BXW7300Q

Seriennummer einer bestimmten NVMe SSD auslesen

nvme id-ctrl /dev/nvme0n1|egrep "sn |mn "
sn      : S1XXNYAGAXXXXX
mn      : SAMSUNG MZVPV512HDGL-00000

Smart-Log abfragen

Einige NVMe-SSD-Modelle unterstützen das Auslesen der SMART-Werte (Self-Monitoring, Analysis and Reporting Technology) mit dem Tool smartctl, welches auch für SATA-Laufwerke verwendet wird und je nach Controller teils mehr Details liefert als das nvme-Tool.

Mit Smartctl

smartctl -a /dev/nvme0n1
smartctl 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 Logged

Mit NVMe-CLI

nvme smart-log /dev/nvme0n1
Smart 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 C

Fehler-Speicher abfragen

nvme error-log /dev/nvme0n1
Error 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
.................

Selbst-Test durchführen

Ein kurzer Selbsttest (maximal 1h) zur Überprüfung des NVMe-SSD-Gesundheitsstatus kann mit folgendem Befehl gestartet werden:

nvme device-self-test /dev/nvme0n1 -s 1

Sobald der Selbsttest gestartet wurde, lässt sich der aktuelle Status wie folgt abfragen:

nvme self-test-log /dev/nvme0n1
  • Ausgabe während der Test läuft:

    Test is 21% complete and is still in progress.
  • Wenn die Ausgabe auf 0% steht, läuft der Selbsttest entweder nicht, oder wird von der NVMe SSD nicht unterstützt:

    Test is 0% complete and is still in progress.
  • Bitte fragen Sie die SMART-Daten erneut ab (siehe entsprechenden Abschnitt in diesem Artikel), sobald der Test abgeschlossen ist.

Table of Contents