Smartmontools

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Das Paket Smartmontools nutzt die in vielen Festplatten eingebauten Funktionen zur Selbstanalyse (SMART), um bereits im voraus vor zu erwartenden Festplattenausfällen zu warnen. Es gibt eine Reihe messbaren Anzeichen, die schon früh einen Ausfall ankündigen, etwa sich häufende Lesefehler. Allerdings lassen sich so nur nur rund zwei Drittel aller Fehler im voraus erkennen.

Das Paket beinhaltet die folgenden beiden Programme:

Programm Beschreibung
smartctl Aktiviert und steuert die SMART-Funktionen der Geräte. Das Paket Gsmartcontrol bietet eine grafische Oberfläche dazu.
smartd Daemon zur Beobachtung die Geräte.

Funktionsweise

Die Smartmontools dienen als Frontend für SMART, eine in der Firmware nahezu aller aktuellen ATA-, SATA- und SCSI-Festplatten eingebaute Analysesoftware. Unterstützt werden die ATA / ATAPI-Standards ab Version 3 bis aktuell 7. Dabei werden die internen Festplatten mit Gesundheitschecks und verschiedenen Selbsttests untersucht und die Ergebnisse lesbar aufbereitet. Mit Hilfe des zugehörigen Daemon-Prozesses smartd kann das auch automatisch erfolgen. Externe USB-Festplatten verstehen jedoch nur SCSI-Befehle, obwohl es sich dabei intern fast immer um ATA- oder SATA-Platten handelt - hier funktionieren die Smartmontools leider nicht. ESATA-Laufwerke können hingegen problemlos untersucht werden.

Frühere ATA-Standards definierten noch mehrere Attribute, die Eigenschaften des Geräts beschrieben. Zum Einschätzen des Gesamtstatus der Festplatte mussten alle Attribute analysiert werden. ATA/ATAPI 5 führte einen eigenen Health-Status ein, der mit "smartctl -H" abgefragt werden kann. Viele PCs erlauben per BIOS-Setup, SMART bereits beim Booten zu prüfen. Die Bedeutung und Belegung der Attribute bleibt in modernen Standards den Herstellern überlassen - sie wissen am besten, wann ein Wert als kritisch einzustufen ist. Die Smartmontools führen eine Datenbank mit diesen Informationen. Die SMART-Firmware kennt für jedes Attribut Norm- und Schwellenwerte - fällt der normierte Wert auf oder unter die Schwelle, so gilt das Attribut als schadhaft. Bei der Beurteilung des gemeldeten Problems hilft die unter "TYPE" angegebene Bezeichnung: während "Old_age"-Attribute normale Alterungsprozesse charakterisieren gelten Fehler bei den "Pre-fail"_Atrributen (in Kombination mit "FAILING_NOW" in der Spalte "WHEN_FAILED") als kritisch, da hier ein Versagen innerhalb der nächsten Stunden droht. Hier ist ein sofortiger Geräteaustausch zu empfehlen.

Durch Integration des Aufrufs "smartctl -s on <Gerät>" in die Startskripte werden die SMART-Onlinetests auf dem Gerät aktiviert. Die Option "-o on" bewirkt ein periodisches Ausführen der Auto-Offlinetests (üblicherweise alle vier Stunden), sofern der Hersteller sie eingebaut hat (sie "smartctl -c <Gerät>"). Aktivierte Online- und Offlinetests stellen sicher, dass alle Attribute den aktuellen Stand wiedergeben. Zwar könnte der Health-Status per Cronjob überwacht werden, besser ist allerdings der mit den Smartmontools gelieferte "smartd". Viele Distributionen bringen für diesen Daemon passende Startskripte mit. Findet der startende "smartd" keine Konfigurationsdatei "/etc/smartd.conf" oder eine mit dem Schlüsselwort "DEVICESCAN", so sucht er selbst nach Geräten, aktiviert SMART und startet die Überwachung; "smartctl -s on" ist also nicht nötig.

Einträge in der Konfigurationsdatei "/etc/smartd.conf" regeln die Testmethoden und deren Zeitplan für jedes einzelne Speichermedium. "smartd" protokolliert seine Status- und Fehlermeldungen im Syslog und verschickt auf Wunsch E-Mails, wenn Schäden entdeckt werden, Fehler neu geloggt werden oder ein Befehl scheitert. Dazu wird der "smartd"-Konfiguration die Option "-m <E-Mail-Adresse 1>,<E-Mail-Adresse 2>" mitgegeben.

Bei Bedarf kann ein gängiger Logfile-Agent damit beauftragt werden, das Syslog auch hinsichtlich Smartmontools auszuwerten. Als weitere Möglichkeite können mit dem Werkzeug Munin Fehler- oder Warnstufen definiert werden, bei deren Erreichen ein sogenannter Passive Alert an Nagios versandt wird. Voraussetzungen dafür sind ein entsprechender NSCA-Server (Nagios Service Check Acceptor) sowie das Smartmontools-Plugin für Nagios. Mit einem solchen Setup können auch Grafiken mit dem zeitlichen Ablauf der Attributwerte ausgegeben werden.

Funktionen

Folgende Testfunktionen sind verfügbar:

  • der für den Benutzer unbemerkt laufende Onlinetest erhebt Daten zur Funktionsfähigkeit des Geräts und speichert sie in einer internen Attributtabelle, echte Fehlermeldungen kommen ins interne Errorlog.
  • Der Offlinetest sammelt Daten, die dem Onlinetest aus technischen Gründen versagt bleiben. Diese Attribute werden in der Spalte "UPDATE" mit "Offline" gekennzeichnet. Steht dort "Always", so erfolgt die Aktualisierung sowohl im Online- wie im Offlinetest. Auch der Offlinetest beeinträchtigt die Performance nicht, da reguläre Zugriffe auf das Medium Vorrang haben.
  • Die Selbsttests prüfen die Hardware tatsächlich. Im Gegensatz zu den beiden anderen Verfahren, die bei Aktivierung automatisch in regelmässigen Abständen ablaufen, startet der Selbsttest nur auf Anforderung. Die benötigte Zeit für den Selbsttest hängt von der Anzahl der gleichzeitigen regulären Zugriffe ab. Im "Captive Mode" gestartet nimmt der Test das Gerät hingegen voll in Beschlag.

Optionen

Grundsätzlich sind alle Befehle als Benutzer "root" auszuführen, weil der Zugriff auf die Gerätedateien für weniger privilgegierte Benutzer nicht erlaubt ist.

Syntax.

smartctl [Option] [Gerät]
Option Beschreibung
Allgemeine Informationen
-A Anzeige der verfügbaren ATA-Attribute. Wichtig sind vor allem folgende Spalten.
Spalte Beschreibung
ATTRIBUTE_NAMES Zeigt den Namen der Eigenschaft.
VALUE Aktueller Wert der jeweiligen Eigenschaft.
WORST Schlechtester bisher gemessener Wert.
THRESH Vom Hersteller angegebener Grenzwert - er zeigt, ab wann SMART den Zustand einer Eigenschaft als bedenklich einstuft.
TYPE Typ des Attributs. "Old_age"-Attribute bezeichnen normale Alterungsprozesse. Kritisch sind mit "Pre_fail" bezeichnete Attribute, da hier ein Versagen innerhalb der nächsten Stunden droht!
UPDATES Bei von SMART dauernd protokollierten Werten steht hier "Always". Diese werden von SMART "online" (also ohne Leistungsinbusse) gemessen, während die Festplatte arbeitet. Mit "Offline" bezeichnete Werte werden nur gemessen, wenn die Festplatte gerade nicht in Betrieb ist.
-c Anzeige der verfügbaren SMART-Methoden und wieviel Zeit die einzelnen Tests benötigen.
-H Anzeige des Gesundheitszustands. Ist alles in Ordnung, so lautet das Resultat "PASSED".
-i Anzeige von Informationen.
-s on Aktivierung von SMART. Ab sofort werden ohne Einbussen der Systemleistung für alle ATA-Attribute, die in der Spalte UPDATED mit "Always" gekennzeichnet sind, Messdaten über die Funktionsfähigkeit des Geräts geschrieben. Dies wird in der manpage Online-Test genannt.
Tests
-t offline Durchführung des Offline-Tests. Dabei ist eine Einbusse der Systemleistung möglich.
-t long Langer Selbsttest (bis zu mehreren Stunden).
-t short Kurzer Selbsttest (einige Minuten).
-l selftest Anzeige der Ergebnisse des Selbsttests.
-l error Anzeige der letzten fünf aufgetretenen Fehler.
-X Abbruch des Selbsttests.

Verwendung

Anzeige von Informationen zum Gerät "/dev/sda".

# smartctl -i /dev/sda

Anzeige von Informationen zum Gerät "/dev/sda"; bei einer SATA-Festplatte wird noch "-d ata" an den Befehl angehängt. Die Beispielausgabe zeigt, ob die Festplatte in der Smartmontools-Datenbank steht, welchen ATA-Standard sie nutzt (hier "7") und ob SMART aktiv ist.

# smartctl -i /dev/sda -d ata
smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

--- START OF INFORMATION SECTION ---
Device Model:     SAMSUNG HD502IJ
Serial Number:    S13TJDWQ611306
Firmware Version: 1AA01112
User Capacity:    500'107'862'016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Not recognized. Minor revision code: 0x52
Local Time is:    Fri Sep 19 14:30:21 2008 CEST

--> WARNING: May need -F samsung or -F samsung2 enabled; see manual for details.

SMART support is: Available - device has SMART capability.
SMART support is: Disabled

SMART Disabled. Use option -s with argument 'on' to enable it.

Ansehen der Voreinstellungen des Geräts "/dev/sda", falls sich dieses in der Smartmontools-Datenbank findet.

# smartctl -P show /dev/sda
smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Drive found in smartmontools Database.  Drive identity strings:
MODEL:              SAMSUNG HD502IJ
FIRMWARE:           1AA01112
match smartmontools Drive Database entry:
MODEL REGEXP:       ^SAMSUNG.*
FIRMWARE REGEXP:    .*
MODEL FAMILY:       
ATTRIBUTE OPTIONS:  None preset; no -v options are required.
WARNINGS:           May need -F samsung or -F samsung2 enabled; see manual for details.

Aktivierung von SMART für das Gerät "/dev/sda".

# smartctl -s on /dev/sda

Durchführung eines kurzen Gesundheitschecks für das Gerät "/dev/sda". Im Abschnitt "General SMART Values" werden die Fähigkeiten der Festplatte angezeigt. Auf der Grundlage der zuletzt vorgenommenen Tests gibt das Werkzeug als Status ganz oben "PASSED" oder "FAILED" zurück - in letzterem Fall ist die Platte bereits sehr gefährdet und wird in allernächster Zukunft ausfallen. Diese beiden Werte lassen sich auch gut per Skript auswerten - so könnte bei jedem Systemstart ein Gesundheitscheck durchgeführt werden und im Fall einer "FAILED"-Meldung Alarm schlagen.

# smartctl -Hc /dev/sda
smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Warning! SMART Attribute Data Structure error: invalid SMART checksum.
Warning! SMART Attribute Thresholds Structure error: invalid SMART checksum.
--- START OF READ SMART DATA SECTION ---
SMART overall-health self-assessment test result: PASSED
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  4 Start_Stop_Count        0x005e   002   000   094    Old_age   Always   FAILING_NOW 69278536062464
 81 Unknown_Attribute       0x3157   054   051   087    Pre-fail  Always   FAILING_NOW 35322351072817
 32 Unknown_Attribute       0x0320   000   000   032    Old_age   Offline  FAILING_NOW 52988102050944
 32 Unknown_Attribute       0x2020   032   032   032    Old_age   Offline  FAILING_NOW 35322350018592
 32 Unknown_Attribute       0x2020   032   032   032    Old_age   Offline  FAILING_NOW 550026354720
255 Unknown_Attribute       0x000f   000   007   015    Pre-fail  Always   FAILING_NOW 131943408599808
120 Unknown_Attribute       0x7800   000   000   000    Old_age   Offline  FAILING_NOW 0
104 Unknown_Attribute       0x4174   188   035   116    Old_age   Offline  In_the_past 62673123344193

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity was never started.
                                        Auto Offline Data Collection: Disabled.
Total time to complete Offline 
data collection:                 (   0) seconds.
Offline data collection
capabilities:                    (0x00) Offline data collection not supported.
SMART capabilities:            (0x0000) Automatic saving of SMART data is not implemented.
Error logging capability:        (0x00) Error logging supported.
                                        General Purpose Logging supported.

Anzeige der identifizierbaren und ausfallrelevanten SMART-Eigenschaften des Geräts "/dev/sda".

# smartctl -A /dev/sda
smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

--- START OF READ SMART DATA SECTION ---
SMART Attributes Data Structure revision number: 64
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
255 Unknown_Attribute       0x373f   200   016   063    Pre-fail  Always   In_the_past 69278536062464
 81 Unknown_Attribute       0x3157   054   051   087    Pre-fail  Always   FAILING_NOW 35322351072817
 32 Unknown_Attribute       0x0320   000   000   032    Old_age   Offline  FAILING_NOW 52988102050944
 49 Unknown_Attribute       0x3231   049   065   049    Pre-fail  Offline  FAILING_NOW 35550757999443
 68 Unknown_Attribute       0x3048   053   073   072    Old_age   Offline  FAILING_NOW 35322352771122
 32 Unknown_Attribute       0x2020   032   032   032    Old_age   Offline  FAILING_NOW 35322350018592
 32 Unknown_Attribute       0x2020   032   032   032    Old_age   Offline  FAILING_NOW 550026354720
 16 Unknown_Attribute       0xff00   000   016   000    Old_age   Offline  FAILING_NOW 280380028550140
255 Unknown_Attribute       0x000f   000   007   015    Pre-fail  Always   FAILING_NOW 131943408599808
120 Unknown_Attribute       0x7800   000   000   000    Old_age   Offline  FAILING_NOW 0
 64 Unknown_Attribute       0xf800   000   082   000    Old_age   Offline  FAILING_NOW 56622323100416
104 Unknown_Attribute       0x4174   188   035   116    Old_age   Offline  In_the_past 62673123344193
 93 Unknown_Attribute       0xa000   134   001   000    Old_age   Offline      -       250053931008

FAQ

Automatisierte Überwachung mit smartd

Der Daemon smartd fragt nach Vorgaben des Benutzers SMART-Attribute automatisiert ab und startet Selbsttests. smartd protokolliert seine Status- und Fehlermeldungen im Syslog. So kann man sich auch per E-mail über Fehler benachrichtigen lassen.

Einbinden von Start und Stop von smartd in den shutdown-Prozess des Rechners über das Skript "/etc/init.d/smartd".

# chkconfig --add smartd

Im Skript "/etc/init.d/smartd" können verschiedene Optionen angegeben werden, mit denen smartd gestartet werden soll. Mit "smartd --help" werden die verfügbaren Optionen angezeigt.

Die weitere Konfiguration von smartd erfolgt in der Datei "/etc/smartd.conf". Sollte sie nicht vorhanden sein, so versucht "smartd" beim Start auf alle möglichen ATA- und SCSI-Geräte zuzugreifen, SMART zu aktivieren und die Überwachung zu starten.

Zur Benachrichtigung im Fehlerfall kann die Anweisung "-m email@domain" angegeben werden.

Weblinks