Raspberry Pi – Festplatten-Gesundheitszustand mit S.M.A.R.T.-Tool “smartmontools” überwachen

Das kleine Tool smartmontools bringt die S.M.A.R.T.-Funktion auf den Raspberry Pi und ermöglicht es euch den Gesundheitszustand der Festplatte regelmäßig und automatisiert abzufragen. Damit habt ihr die Möglichkeit frühzeitig einen Komplettausfall der Festplatte festzustellen und für Ersatz zu sorgen, um einen Datenverlust vorzubeugen.

Zu beachten ist, dass S.M.A.R.T. keine 100% Sicherheit bietet. Es ist jedoch ein guter Indikator aus dem ihr ableiten könnt, wann die verwendete Festplatte ersetzt werden kann bzw. soll.

S.M.A.R.T. steht für Self-Monitoring, Analysis and Reporting Technology. Im Normalfall verbaut bereits der Festplattenhersteller bestimmte Sensoren in der Festplatte, die mit Hilfe von S.M.A.R.T.-Tools abgefragt und ausgelesen werden können.

Zudem gibt der Hersteller selbst auch die sogenannten "Thresholds", also die Schwellwerte, mit, ab wann eine Fehler ein Fehler ist. Dazu greift der Festplattenhersteller auf Erfahrungswerte zurück, die er selbst aus eigenen Tests oder anderen Datenquellen erhalten hat. Diese Informationen werden dann für einen Benchmark zusammengestellt und landen dann als Schwellwert auf der Festplatte, die ihr gekauft habt.

Unterschreitet eure Festplatte in einem Attribut den Schwellwert, dann ist das als Fehler zu betrachten und die Festplatte ggf. zu ersetzen. Also ist ein schlechter Wert (= Worst Value) niedriger als der Schwllwert (= Threshold) könnte das zu einem Ausfall der Platte führen.

Da es sich hier um Erfahrungswerte handelt, muss ein Ausfall der Festplatte nicht genau zu diesem Zeitpunkt stattfinden. Die Platte kann nach wie vor noch viele weitere Stunden ohne Probleme laufen. Der Hersteller hat jedoch festgestellt, dass ein erhöhtes Risiko bei den Festplatten auf Grund seiner erfassten Daten nach Überschreiten der Thresholds besteht.

Ein S.M.A.R.T.-Tool gibt das aus und ihr als Benutzer könnt dann selbst entscheiden, was ihr machen möchtet, Ersatz beschaffen oder warten bis die Festplatte ganz den Geist aufgibt. Bei letzterem habt ihr dann hoffentlich ein Backup. 🙂

S.M.A.R.T.-Werkzeug "smartmontools" installieren

Auf dem Raspberry Pi ist noch kein S.M.A.R.T.-Tool installiert. Jedoch ist ein solches in den Repositories vorhanden und kann ganz schnell installiert werden.

sudo apt install smartmontools

smartmontools konfigurieren

Bevor es losgeht, lasst euch alle angeschlossenen Festplatten auflisten.

df

Sucht euch die Festplatte heraus, die ihr analysieren möchtet.

Die Festplatteninformationen könnt ihr dann für die Festplatte /dev/sdb einfach über die Konsole abfragen.

In diesem Beitrag verwende ich /dev/sdb, ändert den Wert entsprechend ab und nutzt gleich die UUID der Platte für eine genaue Zuordnung, wie weiter unten erklärt.

sudo smartctl -i /dev/sdb

Möchtet ihr die Ausgabe für eine bessere Darstellung und Auswertung in eine Text-Datei umleiten, so lautet der Befehl:

sudo smartctl -i /dev/sdb > smart-sdb.txt

Ausgabe

~ sudo smartctl -i /dev/sdb
smartctl 6.6 2017-11-05 r4594 [armv7l-linux-5.10.17-v7l+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Blue Mobile
Device Model:     WDC WD10JPCX-24UE4T0
Serial Number:    WD-WXS1A378NZHF
LU WWN Device Id: 5 0014ee 65cdd63bd
Firmware Version: 01.01A01
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Mar 15 19:53:10 2021 CET
SMART support is: Available - device has SMART capability.

Ganz hilfreich ist auch die Information, wie lange ein Test für die Festplatte dauert. Dazu wird der Parameter -c eingesetzt.

sudo smartctl -c /dev/sdb

In der Ausgabe sind dann die drei Werte interessant:

Short self-test routine recommended polling time:        (   2) minutes.
Extended self-test routine recommended polling time:        ( 200) minutes.
Conveyance self-test routine recommended polling time:        (   5) minutes.

Mit den angegebenen Werten könnt ihr dann entscheiden, wann ihr welchen Test starten möchtet.

Den kurzen Test, Short self-test, wir mit gestartet.

sudo smartctl -t short /dev/sdb

Nach Eingabe des Befehls erhaltet ihr gleich eine Rückmeldung, bis wann der Test fertig sein wird und ihr die Ergebnisse anschauen könnt.

smartctl 6.6 2017-11-05 r4594 [armv7l-linux-5.10.17-v7l+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Mon Mar 15 19:37:33 2021

Die anderen beiden Test lassen sich nach dem gleichen Muster starten:

sudo smartctl -t long /dev/sdb
sudo smartctl -t conveyance /dev/sdb

Die Testergebnisse könnt ihr euch dann ausgeben lassen.

sudo smartctl -a /dev/sdb

Ganz nützlich ist auch die Abfrage des Gesundheitszustands der Festplatte. Nach der Eingabe des Befehls erscheint dieser ganz kurz, knapp und verständlich.

sudo smartctl -H /dev/sdb

Danach erhaltet ihr so eine Ausgabe, die für die Festplatte einen guten Gesundheitszustand bestätigt.

smartctl 6.6 2017-11-05 r4594 [armv7l-linux-5.10.17-v7l+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

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

Alle Parameter von smartmontoolkönnt ihr über die Konsole abfragen

smartctl --help

Scan mit smartmontools automatisch starten

Da das Ganze nun funktioniert, automatisieren wir den Prüfprozess nun. Dafür gibt es smartd, das über die Datei /etc/smartd.conf eingestellt wird.

Damit der Serviceaber auch automatisch gestartet wird, ist noch eine kleine Anpassung in der /etc/default/smartools notwendig.

sudo nano /etc/default/smartmontools

In der Datei findet ihr den Absatz

# uncomment to start smartd on system startup
#start_smartd=yes

Entfernt das # am Anfang der Zeile, damit smartd bei jedem Systemstart automatisch geladen wird.

# uncomment to start smartd on system startup
start_smartd=yes

Nach der Anpassung der Config-Datei könnt ihr den smartmontools Dienst starten.

sudo service smartmontools start

Den Status des Dienst prüft ihr mit:

sudo service smartmontools status
Anzeige/Werbung

Ergebnisse von smartmontools automatisch per E-Mail versenden

Mit einem Eintrag in der /etc/smartd.conf lässt sich für alle Festplatten oder für jede angeschlossene Festplatte einzeln festlegen, wie und wann der Scan aussehen soll.

ACHTUNG!
Der Versand per E-Mail funktioniert nur mit einem bereits auf dem Raspberry Pi installierten und funktionierenden MTA (= Mail Transfer Agent) wie z.B. Postfix. Eine Anleitung für die Installation und Konfiguration findet hier natürlich hier im Blog
E-Mail-Versand für den Raspberry Pi konfigurieren

Mit dem Eintrag /etc/smartd.conf in der werden alle Festplatten in regelmäßigen Abständen geprüft.

sudo nano /etc/smartd.conf

Tragt am Anfang einfach einen einfachen Befehl ein, es geht mal nur darum, den E-Mail-Versand zu prüfen.

DEVICESCAN -a -m <username or email> -M test

Startet und den Dienst neu und schaut in eure Inbox, ob eine Nachricht dort eingeht.

sudo service smartmontools restart

Erhaltet ihr keine Nachricht, dann schaut mal in den Log Files nach, wo die Nachricht hängen geblieben ist.

sudo cat /var/log/mail.log

Wenn sich bereits Einträge in der Datei für den Scan von Festplatten befinden, dann könnt ihr die Zeile getrost aus kommentieren und durch eure eigene ersetzten.

DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,35,40 -m <username or email>

Soll nur eine angeschlossene Platte geprüft werden, ist die UUID der Festplatte herauszusuchen und dann der Befehl anzupassen.

UUID herausfinden:

ls -lah /dev/disk/by-uuid/

Dann den Befehl wie hier anpassen:

/dev/disk/by-uuid/820cdefgs3456c -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,35,40 -m 

Nun startet ihr den Service neu und eure Festplatte(n) werden ab sofort von smartmontools überwacht.

sudo service smartmontools restart

Hat alles funktioniert, dann entfernt das -M testam Ende der Zeile und startet den Service erneut.

sudo service smartmontools restart

Was genau wird geprüft?

Ich habe dazu den Befehl aus dem wiki.archlinux.org verwendet. (https://wiki.archlinux.org/index.php/S.M.A.R.T.#Email_potential_problems)

  • -a = überwacht alle Attribute
  • -o on = aktiviert die Offline-Datenerfassung
  • -S on = aktiviert die automatische Speicherung von Attributen
  • -n standby,q = Prüfung nicht starten, wenn sich die Festplatte im Standby-Modus befindet, eine entsprechende Protokollmeldung wird nicht ausgegeben, damit wird kein Schreiben auf der Festplatte durchgeführt
  • -s = plant kurze und lange Selbsttests (short test jeden Tag zw. 2 – und 3 Uhr, extended self-test jeden Samstag zw. 3 und 4 Uhr.)
  • -w = prüft die Temperatur, wenn die zu schnell ansteigt, erhaltet ihr eine Nachricht
  • -m = sendet eine E-Mail

Habt ihr wie ich an einem Raspberry Pi für eure ➡ Nextcloud eine oder mehrere externe Festplatten hängen, könnt ihr smartmontool für die Überwachung verwenden.

Photo by Ousa Chea on Unsplash

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.