C:\Techblog\SMART-Daten unter Linux auslesen\
25203275 Bytes in 293 Dateien.

Es gibt unter Linux mehrere Methoden, um die S.M.A.R.T.-Werte auszulesen. Während es z.B. unter Ubuntu, bei SATA-SSDs, recht einfach über das Laufwerke-Programm oder Terminal via smartctl machbar ist, gestaltet es sich bei NVMe SSDs wieder etwas schwieriger. Leider unterstützt u.a. Ubuntu 22.04 LTS die Möglichkeit zum Auslesen von NVMe SSDs mit Boardmitteln noch nicht - bzw. udisks2 zumindest nicht.


Inhaltsverzeichnis:


Auslesen mit Boardmitteln

Ubuntu bringt schon ein nettes Laufwerksverwaltungstool mit, das sich »udisks« nennt. Dies lässt sich einfach im Menü unter »Hilfsprogramme« finden und nennt sich dort »Laufwerke«.

Auf der rechten Seite kannst Du die auflistung der Laufwerke sehen. Bei mir wäre die 1TB SSD vom Typ NVMe und die anderen drei SATA. Ich wende mich hier erst mal den SATA-SSDs zu. Wenn Du jetzt Deine SSD anklickst, sieht Du auf der rechten Seite ein paar Daten zu ihr und wie die SSD partitioniert ist.

Ich habe hier u.a. eine SWAP- bzw. Auslagerungspartition angelegt, was bei dekadenten 32GB RAM eigentlich gar nicht mehr nötig ist - zumindest nicht in meinem Fall. Sicher ist jedoch sicher. Die andere Parition ist für Spiele gedacht. Bei »Einschätzung« gibt es schon so eine grobe Einschätzung, wie Deine SSD beschaffen ist. Wenn Du jetzt rechts oben auf »die drei Punkte« und dann »SMART-Werte & Selbsttest« klickst, gelangst Du zu einer detailierteren Ansicht.

Uns interessiert hier besonders das Attribut »wearing-level-count« in der Spalte »Normalisiert«. Eine Erläterung dazu findest Du weiter unten.

^ Inhaltsverzeichnis

Auslesen mit smartctl (SATA SSDs)

Etwas umständlicher und nerdiger geht das auslesen mittels smartctl. Hierfür musst Du ein Terminalfenster öffnen und folgendes eingeben:

Ubuntu/Debian basierte Systeme

sudo apt install smartmontools -y

Arch basierte Systeme

pacman -S smartmontools

Sollten die SMART-Tools installiert sein, kannst Du Dir das Kommando smartctl zunutze machen. Um eine Liste der vorhandenen Geräte zu bekommen, die mit smartctl auszulesen sind, gibst Du einfach mal smartctl --scan ein. Dann solltest Du - je nach Anzahl der Laufwerke - solch eine Auflistung bekommen.

johannes@johannes:~$ smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/nvme0 -d nvme # /dev/nvme0, NVMe device

Nicht verwirren lassen: SCSI ist hier gleichbedeutend mit SATA. Wir nehmen hier als Beispielobjekt /dev/sda, da dies in den meisten Fällen, in denen es keine NVMe SSD als Systemlaufwerk gibt, das Systemlaufwerk ist.

Um hier nun die SMART-Werte auszulesen, gibst Du einfach sudo smartctl -a /dev/sda ein. Nun erhälst Du beispielsweise folgenden Rattenschwanz:

johannes@johannes:~$ sudo smartctl -a /dev/sda
[sudo] Passwort für johannes: 
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-67-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     Samsung SSD 850 EVO 250GB
Serial Number:    (ZENSIERT)
LU WWN Device Id: (ZENSIERT)
Firmware Version: EMT02B6Q
User Capacity:    250.059.350.016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
TRIM Command:     Available
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Mar 10 12:54:34 2023 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(    0) seconds.
Offline data collection
capabilities: 			 (0x53) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					No Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 133) minutes.
SCT capabilities: 	       (0x003d)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   096   096   000    Old_age   Always       -       18595
 12 Power_Cycle_Count       0x0032   096   096   000    Old_age   Always       -       3613
177 Wear_Leveling_Count     0x0013   096   096   000    Pre-fail  Always       -       77
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   079   048   000    Old_age   Always       -       21
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       94
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       13712703096

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 0
Warning: ATA Specification requires self-test log structure revision number = 1

Warning! SMART Selective Self-Test Log Structure error: invalid SMART checksum.
SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
  255        0    65535  Read_scanning was never started
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 1 minute delay.

Auf den ersten Blick sieht man jede Menge interessante Daten, die der Laie aber nicht unbedingt alle auf Anhieb versteht. Was uns jedoch in erster Linie interessiert, ist bei der Auflistung der SMART-Werte, die Zeile mit »Wear_Leveling_Count« und die Spalte »Value«.

^ Inhaltsverzeichnis

Erläuterungen zum »Wear_Leveling_Count«-Wert

Dieser legt fest, wie gut die SSD noch konstituiert ist. In meinem Fall ist diese SSD noch zu 96% gut. Je weiter der Wert sinkt, desto mehr sind die maximalen Schreibzyklen der SSD erreicht. Ist die SSD hier bei 0%, schaltet sie in den »Nur-Lesen-Modus«. Daten können weiterhin ausgelesen, jedoch nicht mehr geschrieben werden.

Allerdings brauchst Du Dir hier keine großen Sorgen machen. Bis dieser Wert erreicht ist, kann es durchaus 25 oder noch mehr Jahre dauern (je nach Nutzungsgrad).

Hier ein Auszug aus der Wiki von ubuntuusers.de:

"Ein Nutzer des EEE-User-Forums stellte die Rechnung auf, dass es bei einer realitätsnahen Nutzung der SSD von sechs Stunden täglich und zehn prozentiger Schreibrate (gerundete 36 Minuten reines Schreiben pro Tag) runde 25 Jahre dauert, bis die SSD am Ende wäre.

Ein Nutzer aus dem englischsprachigen Ubuntu-Forums gab an, dass er seit einem Jahr eine Intel SSD nutzt. Währenddessen hat er dutzende Betriebssysteme mit dem Dateisystem ext4 installiert. Er kompilierte Code und betreibt Virtuelle Maschinen. Über "System > Systemverwaltung > Laufwerksverwaltung" konnte er die "Verbleibende Haltbarkeit" auslesen, die angibt, wie nah die SSD an dem "Nicht-mehr-beschreibbar-Punkt" ist. Nach diesem Jahr des exzessiven Gebrauchs sank die angegebene Haltbarkeit um gerade 1% (Quelle: ubuntuforums.org: Ubuntu 10.10 & SSD's).

Dies alles deckt sich mit den Forschungen des Herstellers Intel. Intel selbst gibt für seine SSDs eine "Mindest"haltbarkeit von fünf Jahren an - allerdings ist der eingesetzte Parameter mit 20 Gigabyte an zu schreibenden Daten pro Tag äußerst hoch und wird in der Regel von keinem "normalen" Anwender erreicht (siehe auch Exkurs – Journaling auf SSD)."

Demnach hast Du als Gamer oder Office-Nutzer nichts zu befürchten. Ich habe z.B. eine weitere SSD eingebaut, die bereits ein wearing-level-count von 89% hat. Diese hatte ich 2015 gekauft und wurde als System-SSD für Windoof und Linux sowie Spiele genutzt. Ich habe u.a. auch eine SSD hier im Haushalt, die ich 2011 gekauft habe (eine SAMSUNG SSD 470 128GB), die ein wearing-level-count von 95% aufweist. Die ist auch schon durch mehrere Windoof-Versionen und Computer gegangen. Dennoch sollte man den Wert ab und zu im Auge behalten. Besonders wenn man dauernd Daten hin- und herschaufelt oder Videobearbeitung betreibt.

Aber es gibt auch noch weitere interessante Attribute. Am besten Du schaust Dich ein wenig um. Hier findest Du u.a. eine Liste, wie man die Daten auswertet.

^ Inhaltsverzeichnis

Und jetzt?

Jetzt kannst Du mit dem neu erworbenen Wissen machen was Du willst. :) Du musst jetzt nicht unbedingt regelmäßig Dir die SMART-Werte anschauen. Wenn Du jedoch die Gesundheit Deiner SSD(s) im Auge behalten möchtest, kannst Du das gerne weiterhin tun.

Ein Tool wie z.B. CrystalDiskInfo, dass Dir nun sagt, wenn sich die SSD dem Ende zuneigt. An dieser Stelle muss man sich selber ein Script klöppeln. Auf Server geht das relativ einfach. Hier kann man sich dann mittels smartd eine Mail schicken lassen, doch auf Desktops muss man bissl tricksen.

Ich habe hier mal ein recht laienhaftes Script geklöppelt, das jedoch einwandfrei funktionieren solle. Bitte beachte die Kommentare im Script und passe die entsprechenden Stellen Deinen Bedürfnissen bzw. Gegebenheiten an.

Das war jetzt die Methode, um die S.M.A.R.T.-Werte von SATA SSDs auszulesen. Bei NVMe SSDs gestaltet sich das wieder anders, da nicht jeder Hersteller - oder vielleicht auch keiner - die S.M.A.R.T.-Werte so wie bei SATA SSDs anzeigt. Zwar unterstützt smartmontools auch NVMe, dennoch ist die Ausgabe bzw. das Management nicht so umfangreich. Wie man das Script nun in einen Cronjob packt, werde ich noch zum Schluss erläutern.

^ Inhaltsverzeichnis

Auslesen von NVMe SSDs

Der erste Schritt ist es, mittels sudo apt install nvme-cli -y (Ubuntu/Debian) oder pacman -S nvme-cli (Arch) das entsprechende Tool im Terminal zu installieren. Ist die Installation abgeschlossen, kann man sich anschließend schon mal eine Auflistung seiner NVMe SSDs geben lassen. Dies kann man mit sudo nvme list bewerkstelligen.

johannes@johannes:~$ sudo nvme list
Node                  SN                   Model                                    Namespace Usage                      Format           FW Rev  
--------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1          XXXXXXXXXXXXXXX      Samsung SSD 980 PRO 1TB                  1         251,82  GB /   1,00  TB    512   B +  0 B   5B2QGXA7

So, nun wissen wir, dass /dev/nvme0n1 unsere erste NVMe SSD ist. Nun können wir den S.M.A.R.T.-Log mittels des Kommandos sudo nvme smart-log /dev/nvme0n1 auslesen und erhalten dann folgende Ausgabe:

johannes@johannes:~$ sudo nvme smart-log /dev/nvme0n1
Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning			: 0
temperature				: 35 C (308 Kelvin)
available_spare				: 100%
available_spare_threshold		: 10%
percentage_used				: 0%
endurance group critical warning summary: 0
data_units_read				: 636.190
data_units_written			: 1.744.897
host_read_commands			: 26.170.931
host_write_commands			: 27.597.173
controller_busy_time			: 159
power_cycles				: 23
power_on_hours				: 15
unsafe_shutdowns			: 2
media_errors				: 0
num_err_log_entries			: 0
Warning Temperature Time		: 0
Critical Composite Temperature Time	: 0
Temperature Sensor 1           : 35 C (308 Kelvin)
Temperature Sensor 2           : 35 C (308 Kelvin)
Thermal Management T1 Trans Count	: 0
Thermal Management T2 Trans Count	: 0
Thermal Management T1 Total Time	: 0
Thermal Management T2 Total Time	: 0

Welche Werte uns hier in erster Linie interessieren, sind »available_spare« und »available_spare_threshold«. Der erste Wert gibt an, in wie weit wir die SSD schon abgenutzt haben. Je weniger der Wert wird, desto mehr ist die SSD abgenutzt. Der zweite Wert gibt den Schwellwert an, bei dem man sich längstens um Ersatz kümmern sollte.

Das »nvme-cli« ist ein mächtiges Werkzeug, mit dem man sich allerhand interessante Sachen anzeigen lassen kann. Wer das Tool etwas studieren will, kann sich gerne auf dieser Englisch sprachigen Homepage umsehen.

Auch hier können wir uns wieder ein kleines Script basteln, das uns ab bestimmten Gesundheitswerten drauf hinweist, dass wir uns eine neue SSD kaufen sollten.

^ Inhaltsverzeichnis

In regelmäßigen Abständen prüfen lassen

Nun haben wir die Möglichkeit, beide oder nur eines der beiden Scripten (falls man nur einen Typus SSD hat), in eine Crontab zu schreiben. Ich persönlich empfehle eine Testperiode von 1 Monat. Die einfachste Variante ist es, die Scripte einfach unter /etc/cron.monthly abzulegen. Somit führt Linux jeden Monat automatisch die Scripte aus.

Hierzu öffnest Du einfach ein Terminal und navigierst mittels cd /etc/cron.monthly in dieses Verzeichnis. Nun erstellst Du mit sudo nano ssd-health-check-(sata/nvme) (wobei Du die Datei auch gerne nennen kannst, wie Du willst) und fügst hier den Scriptcode ein. Beachte, dass das »(sata/nvme)« eine Wahlmöglichkeit ist. Letztendlich schreibst Du dann sata oder nvme nackt ohne Klammern hin. Um das Script zu speichern, drückst Du nun enfach erst STRG + O und dann STRG + X zum Schließen der Datei. Wenn Du nur einen SSD-Typ hast, machst Du nur eine Datei, ansonsten noch eien weitere genauso, für den entsprechenden Typen.

Zum Schluss verpasst Du dem Script noch ein Ausführrecht für den root mittels sudo chmod ugo+x [SCRIPTDATEI] ([SCRIPTDATEI] entsprechend des Dateinamens ersetzen).

Sollten die oben genannten Ordner bei Dir unter /etc nicht vorhanden sein, dann musst Du womöglich »anacron« für Deine Linux Distribution installieren.

Veröffentlicht: 16.03.2023 | Letztes Update: -

^ Seitenanfang