NVME SSD als Volume nutzen - Erfahrungen

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.301
Punkte für Reaktionen
1.133
Punkte
234
Smartwerte und NVME

Im alten NAS überwache ich automatisiert per Script die wichtigen Smart-Werte. Bei Änderungen bekomme ich dann sofort eine Meldung.

Das wollte ich gerade für die NVME-SSD im neuen NAS auch umsetzen. Obwohl smartctl ab v6.5 auch NVME-Laufwerke unterstützt, funktioniert es da nicht.

Es gibt aber auf der Konsole ein Tool namens "nvme", welches einem die Smartwerte liefert, etwas anders aufgebaut, aber brauchbar:
Code:
root@dsa:~# nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 34 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 27,887
data_units_written                  : 146,370
host_read_commands                  : 51,436
host_write_commands                 : 73,423
controller_busy_time                : 4
power_cycles                        : 2
power_on_hours                      : 4
unsafe_shutdowns                    : 0
media_errors                        : 0
num_err_log_entries                 : 5
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 34 C
Temperature Sensor 2                : 37 C
Temperature Sensor 3                : 0 C
Temperature Sensor 4                : 0 C
Temperature Sensor 5                : 0 C
Temperature Sensor 6                : 0 C
Temperature Sensor 7                : 0 C
Temperature Sensor 8                : 0 C



Und hier noch die:
Code:
root@dsa:~# nvme --help
nvme-0.9
usage: nvme <command> [<device>] [<args>]

The '<device>' may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

The following are all implemented sub-commands:
  list            List all NVMe devices and namespaces on machine
  id-ctrl         Send NVMe Identify Controller
  id-ns           Send NVMe Identify Namespace, display structure
  list-ns         Send NVMe Identify List, display structure
  create-ns       Creates a namespace with the provided parameters
  delete-ns       Deletes a namespace from the controller
  attach-ns       Attaches a namespace to requested controller(s)
  detach-ns       Detaches a namespace from requested controller(s)
  list-ctrl       Send NVMe Identify Controller List, display structure
  get-ns-id       Retrieve the namespace ID of opened block device
  get-log         Generic NVMe get log, returns log in raw format
  fw-log          Retrieve FW Log, show it
  smart-log       Retrieve SMART Log, show it
  smart-log-add   Retrieve additional SMART Log, show it
  error-log       Retrieve Error Log, show it
  get-feature     Get feature and show the resulting value
  device-self-test Perform the necessary tests to observe the performance
  self-test-log   Retrieve the SELF-TEST Log, show it
  set-feature     Set a feature and show the resulting value
  format          Format namespace with new block format
  fw-activate     Activate new firmware slot
  fw-download     Download new firmware
  admin-passthru  Submit arbitrary admin command, return results
  io-passthru     Submit an arbitrary IO command, return results
  security-send   Submit a Security Send command, return results
  security-recv   Submit a Security Receive command, return results
  resv-acquire    Submit a Reservation Acquire, return results
  resv-register   Submit a Reservation Register, return results
  resv-release    Submit a Reservation Release, return results
  resv-report     Submit a Reservation Report, return results
  dsm             Submit a Data Set Management command, return results
  flush           Submit a Flush command, return results
  compare         Submit a Compare command, return results
  read            Submit a read command, return results
  write           Submit a write command, return results
  write-zeroes    Submit a write zeroes command, return results
  write-uncor     Submit a write uncorrectable command, return results
  reset           Resets the controller
  subsystem-reset Resets the controller
  show-regs       Shows the controller registers. Requires admin character device
  discover        Discover NVMeoF subsystems
  connect-all     Discover and Connect to NVMeoF subsystems
  connect         Connect to NVMeoF subsystem
  disconnect      Disconnect from NVMeoF subsystem
  version         Shows the program version
  help            Display this help

See 'nvme help <command>' for more information on a specific command

The following are all installed plugin extensions:
  intel           Intel vendor specific extensions
  lnvm            LightNVM specific extensions
  memblaze        Memblaze vendor specific extensions

See 'nvme <plugin> help' for more information on a plugin
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
@peterhoffmann Kannst du dein Script posten, sowohl für die HDDs als auch NVMEs?
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.301
Punkte für Reaktionen
1.133
Punkte
234
Mein Script ist kein Einzelscript, sondern verbaut in einen größeren "Ablauf", über die Jahre stückweise gewachsen und ein Scriptverbrechen, wie es im Buche steht. Das kann ich nicht posten. ;-)

Mit dem letzten Umzug (DS716+ zu DS720+) habe ich mir vorgenommen alle Scripte neu zu schreiben. Mit dem Sicherungs- und Backupscript bin ich schon durch, aber die Kleinigkeiten wie dies hier mit dem Checken der Smartwerte noch nicht.

Aber im Grunde ist es ganz einfach:
Man legt mit smartctl (Sata-LW) oder nvme (NVME-LW) die Daten in einer Variablen ab (um mehrfache Abfragen nacheinander zu vermeiden), mit grep (oder sed) die passende Zeile, sowie mit awk den Wert und zuletzt ein Vergleich des Wertes mit if.

Codeschnipsel:

Bezug und Ablegen der Smartwerte (Sata):

LW1_SMART=$(smartctl -a -d ata /dev/sata1)
Je nach DSM kann es sata1 oder sda für das erste Laufwerk sein.
Die Laufwerkszahl (sata1) bzw. Buchstabe (sda) muss für weitere Laufwerke (sata2 bzw. sdb, usw.) angepasst werden.

Bezug und Ablegen der Werte für NVME:
LW3_SMART=$(nvme --smart-log /dev/nvme0)
Je nach NVME-LW muss nvme0 oder nvme1 angepasst werden.

SATA HDD => Wert für ID200 (Multi_Zone_Error_Rate) ziehen (Beispiel HDD von WD):
LW1_ID200=$(echo "${LW1_SMART}" | grep "Multi_Zone_Error_Rate" | awk '{print $10}')
Weitere IDs wie z.B. ID1, ID5 oder ID197 sind zu empfehlen.

NVME SSD => Wert für "percentage used" ziehen:
LW3_ID4=$(echo "${LW3_SMART}" | grep "percentage_used" | awk '{print $3}' | sed s/%//g)
Die Werte von nvme sind nicht so strikt und klar aufgebaut wie bei smartctl. Hier im Beispiel muss z.B. das Prozentzeichen mit sed entfernt werden.

Nun nur noch eine IF-Anweisung, wo der Wert abgeglichen wird und fertig ist die (grobe) Laube. Denkbar sind dann noch das Ablegen in einer Datenbank oder Datei um den Verlauf über die Zeit zu sehen, sowie eine Benachrichtigung, z.B. E-Mail oder Messenger (z.B. telegram).
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
5.301
Punkte für Reaktionen
1.133
Punkte
234
Nachtrag:
Wer ein Script bastelt, muss darf es gerne posten. ;)
 

spike01

Benutzer
Mitglied seit
22. Mrz 2020
Beiträge
66
Punkte für Reaktionen
26
Punkte
18
Fu..
Habe heute ganz mutig auf meiner 918+ das Update auf 7.2.1 Update 1 gemacht (von 7.2 xxx Update 3 kommend).

Jetzt geht mein NVME Volume nicht mehr... da nützt auch kein Neustart mit dem Script.... hat da jemand ähnliche Erfahrungen mit dem NAS und dem DSN Stand ?

Kann ich einfach einen Downgrade machen ?

danke
spike
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
Starte nochmal mit dem Script und läuft das auch?
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
War bei mir auch weg, bei mir läuft das Script beim hoch und runterfahren.
 

spike01

Benutzer
Mitglied seit
22. Mrz 2020
Beiträge
66
Punkte für Reaktionen
26
Punkte
18
Nutzt nichts... das script habe ich sogar im Aufgabenplaner bei einem Neustart drin....
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
Neueste Version des Scripts?
 

spike01

Benutzer
Mitglied seit
22. Mrz 2020
Beiträge
66
Punkte für Reaktionen
26
Punkte
18
3.056..
ich hab eben noch im Aufgabenplaner beim runterfahren ergänzt..... teste gerade.... oh mei.... ;-)
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
Was steht denn im Speichermanager.
 

spike01

Benutzer
Mitglied seit
22. Mrz 2020
Beiträge
66
Punkte für Reaktionen
26
Punkte
18
ok.. ich sehe grade.. wir sind bei 3.1.64..
also nichts das neueste... dann mache ich mich mal ans Werk.... berichte....

Edit:
Läuft wieder.. aber ich muss gestehen... selber schuld...
a) nicht das aktuellste Script verwendet
b) ich weiss nicht warum, aber im Task-Planer hatte ich einen Fehler im Script.. da waren zwei * davor.. dann ging's natürlich nicht.....

Danke für den Hinweis.
 
Zuletzt bearbeitet:

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
Perfekt
 
  • Like
Reaktionen: spike01

starpvtpaula

Benutzer
Mitglied seit
08. Jun 2016
Beiträge
128
Punkte für Reaktionen
11
Punkte
18
So nach kurzer Zeit ist nun eine meiner SSDs gestorben und ich hab meinen Docker Ordner wieder auf Volumen1 schieben wollen. ich hab irgendwas falsch gemacht.... ich kann weder den Container Manager wieder installieren noch sind meine ganzen Container weg....

Ich habe das Volumen via GUI gelöscht aber via SSh ist es noch da scheinbar und der Docker Ordner ist noch darin mit diversen Config Files... Ich bin leider dezent überfordert wie ich das wieder gerade biegen kann. Wenn ich den Container Manager wieder installieren will passiert erst einmal überhaupt nichts...
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
10.474
Punkte für Reaktionen
3.137
Punkte
414
Mach dazu bitte einen neuen Thread auf, da das hier an und für sich nix verloren hat. In dem neuen Thread wäre es hilfreich, wenn du ein paar mehr Daten preisgibst
 

starpvtpaula

Benutzer
Mitglied seit
08. Jun 2016
Beiträge
128
Punkte für Reaktionen
11
Punkte
18
Es bezieht sich aber genau auf diesen Thread da ich die ganze Sache hier gestartet habe und nur hier in diesem Thread. Was für Daten werden denn dafür noch benötigt? Ich bin dezent genervt grade, ja alles gefrickel auf eigene Gefahr ist mir schon klar aber warum auch immer er mich dieses verdammte Package aus dem Center nicht mehr installieren lassen will
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
10.474
Punkte für Reaktionen
3.137
Punkte
414
Ein gelöschtes Volumen, was aber irgendwie doch nicht gelöscht ist, hat mit dem Thema hier tatsächlich nix zu tun. -> Deshalb: Neuer Thread.

aber via SSh ist es noch da scheinbar und der Docker Ordner ist noch darin mit diversen Config Files.
Das könntest du weiter ausführen.
Dazu noch mal schauen, ob was im Protokoll-Center steht und das mit angeben.
 

starpvtpaula

Benutzer
Mitglied seit
08. Jun 2016
Beiträge
128
Punkte für Reaktionen
11
Punkte
18
Das Problem ist dass das Volumen zwar gelöscht ist aber wie erwähnt gibt es noch was auf der Shell und ich meine mich zu erinnern das ich damals was umgebogen habe laut anleitung aus diesem Thread, nen Symlink oder sonstiges und genau das sucher ich und finde es nicht damit ich es rückgängig machen kann.....
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
7.512
Punkte für Reaktionen
2.285
Punkte
299
Mach bitte einen neuen Thread auf.
Und gib Infos uns Screenshots vom Speichermanager.
Und beantworte dort wieso du den Speicherpool löschst, wenn nur eine SSD defekt ist.
 
Zuletzt bearbeitet:

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
168
Punkte für Reaktionen
34
Punkte
34
Wenn ein Volumen gelöscht wird, bleibt die Volumenbezeichnung erhalten und kann nicht wieder neu erstellt werden. Wenn dein Volumen also „volume2“ hieß, musst Du ein neues „volume3“ erstellen.
 


Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat