Festplatten überwachen mit SMART

Wenn eine Festplatte ausfällt ist das immer sehr ärgerlich, auch wenn man regelmäßig Sicherheitskopien anfertigt. Denn diese sind meist nicht mehr ganz aktuell und selbst wenn, die Festplatte muss ausgewechselt, das Betriebssystem neu eingespielt und Sicherungskopien müssen wieder zurück kopiert werden. Solche Ausfälle haben meist die Angewohnheit in unpassenden Momenten zu passieren, z.B. wenn die letzte Sicherung schon einige Wochen alt ist oder man wichtige Arbeiten erledigen muss.

Dieses Problem haben auch die Festplattenhersteller erkannt, und das schon vor etlichen Jahren. Und aus diesem Grund wurde S.M.A.R.T ins Leben gerufen, ein System das die mechanischen und elektrischen Eigenschaften von Festplatten überwacht und den Benutzer vor einem bevorstehenden Defekt warnen kann. Auch wenn SMART nicht alle Ausfälle vorhersehen kann, lohnt es sich die SMART-Werte der Festplatten im Auge zu behalten.

In diesem Artikel erkläre ich wie man mit den smartmontools bzw. dem Programm smartctl die SMART-Werte von Festplatten auslesen und auswerten kann.

SMART

SMART überwacht ungefähr 30 verschiedene Eigenschaften der Festplatte wie zum Beispiel die Temperatur, die Anzahl fehlerhafter Blöcke, oder die Anzahl von Lese-, bzw. Schreibfehlern. Welche Eigenschaften letztendlich überwacht werden hängt vom Hersteller und dem Modell der Festplatten ab. Informationen über die Bedeutung der einzelnen Parameter finden sich in der Wikipedia.

Zu jedem Parameter gibt es einen Ausgangswert wie beispielweise 20°C für die Temperatur. Dieser Wert wird zusätzlich noch auf einer Skala von 0-100 bzw. 200 oder 255 dargestellt. Wenn der Ausgangswert schlechter wird weil z.B. die Temperatur der Festplatte steigt oder weil Fehler auftreten dann sinkt der Wert auf der Skala. Wenn sich die Eigenschaften der Festplatte wieder verbessern z.B. weil die Temperatur wieder sinkt, dann steigt der Wert auf der Skala auch wieder, zusätzlich zum aktuellen Wert wird allerdings auch der schlechteste jemals gemessene Wert gespeichert. Die Parameter werden in zwei Kategorien eingeteilt, solche die auf ein hohes Alter der Festplatte und solche die auf einen bevorstehenden Defekt hinweisen. Jeder Parameter hat einen bestimmten Grenzwert, wird dieser unterschritten ist der Zustand der Festplatte problematisch bzw. sie ist defekt.

Die meisten dieser Parameter werden im laufenden Betrieb aktualisiert (online test), einige können jedoch nur durch sogenannte Offline-Tests bestimmt werden, da dabei kurzfristig die Lese-/Schreibgeschwindigkeit beeinträchtigt wird.

Außerdem ist es möglich diverse Selbsttests auszuführen mit denen sich noch weitere Fehler/Probleme feststellen lassen können.

Wie gut SMART vor dem Ausfall von Festplatten warnen kann hat Google in einer Studie mit über 100 000 Festplatten untersucht. Das Ergebnis: 64% aller ausgefallenen Festplatten hatten vor dem Ausfall auffällige SMART-Werte. 4 SMART-Parameter stellten sich als ganz besonders wichtig heraus: Scan Errors, Reallocation Counts, Offline Reallocation und Probational Count. Hier gibt es die Google-Studie: Failure Trends in a Large Disk Drive Population.

Installation von smartctl

Die meisten Distributionen bieten ein Paket für smartmontools an, ist das nicht der Fall kann man es wie üblich per ./configure && make && make install aus dem Quelltext kompilieren (das Quelltextpaket sowie eine englische Installationsanleitung finden sich auf der offiziellen Webseite von smartmontools).

Gentoo: emerge -av sys-apps/smartmontools
Fedora: yum install smartmontools
openSUSE: zypper in smartmontools
Ubuntu und Derivate: sudo apt-get install smartmontools
Debian: apt-get install smartmontools

Benutzung

In den smartmontools sind zwei Programme enthalten. Das eine Programm heißt smartctl, damit kann man die SMART-Parameter und Informationen von Festplatten auslesen sowie Einstellungen vornehmen und Selbsttests durchführen. Das andere Programm ist der Daemon (Hintergrundprozess/Dienst) smartd mit dem man Festplatten automatisch überwachen und sich im Falle eines Fehlers z.B. eine E-Mail schicken lassen kann. In dieser Anleitung erkläre ich allerdings nur die Bedienung von smartctl, mehr Informationen über smartd und dessen Einrichtung und Bedienung finden sich in der offiziellen Dokumentation (Englisch).

Generelle Informationen über die Festplatte anzeigen

Zuerst einmal kann man sich mit dem Befehl smartctl -i <Festplatte> ein paar Informationen wie den verfügbaren Speicherplatz, die verwendete Firmware, Seriennummer und Modell der Festplatte anzeigen lassen.

# smartctl -i /dev/sda
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF INFORMATION SECTION ===
Device Model:     SAMSUNG HD642JJ
Serial Number:    S1AFJ1BQ613828
Firmware Version: 1AA01112
User Capacity:    640.133.946.880 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 3b
Local Time is:    Mon Feb  2 13:18:30 2009 CET
 
==>; 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.

/dev/sda steht für die erste über SCSI/SATA angeschlossene Festplatte, evtl. muss man diese Angabe anpassen je nachdem was für Festplatten man hat und welche man überprüfen möchte. /dev/hd[a-z] sind Festplatten die über IDE/PATA angeschlossen sind, /dev/sd[a-z] sind die Festplatten die über SATA/SCSI  angeschlossen sind.

Wenn anstatt der obigen Ausgabe nur die Meldung Device does not support SMART angezeigt wird kann es sein das smartctl die Festplattenart falsch erkannt hat. Festplatten die kein SMART unterstützen gibt es heutzutage eigentlich gar nicht mehr. Wenn dieser Fehler auftritt kann man mit der Option -d <Typ> nachhelfen, wobei Typ eins von folgenden sein kann: “ata”, “scsi”, “marvell”, “cciss,N”, “3ware,N”. Bei Desktop-Rechnern dürfte ata in den meisten Fällen richtig sein.

Für externe Festplatten gibt es noch “sat” und “usbcypress”. Es gibt eine Liste von externen Festplatten von denen bekannt ist das smartctl darauf zugreifen kann.

SMART aktivieren

Der obige Befehl zeigt auch an ob die Festplatte SMART überhaupt unterstützt und ob es aktiv/eingeschaltet (SMART support is: Disabled) ist. Ist SMART deaktiviert kann es mit folgendem Befehl aktiviert werden:

# smartctl -s on /dev/sda
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

SMART-Informationen auslesen

Um die SMART-Parameter der Festplatte anzuzeigen benutzt man den Befehl smartctl -A <Festplatte>

# smartctl -A /dev/sda
smartctl version 5.38 [x86_64-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   100   100   051    Pre-fail  Always       -       61
  3 Spin_Up_Time            0x0007   087   087   011    Pre-fail  Always       -       4860
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       100
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   100   100   015    Pre-fail  Offline      -       9967
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       2411
 10 Spin_Retry_Count        0x0033   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       100
 13 Read_Soft_Error_Rate    0x000e   100   100   000    Old_age   Always       -       61
183 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
184 Unknown_Attribute       0x0033   100   100   099    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       61
188 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   076   074   000    Old_age   Always       -       24 (Lifetime Min/Max 16/24)
194 Temperature_Celsius     0x0022   079   073   000    Old_age   Always       -       21 (Lifetime Min/Max 15/26)
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       24789223
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   100   100   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000a   100   100   000    Old_age   Always       -       0
201 Soft_Read_Error_Rate    0x000a   100   100   000    Old_age   Always       -       0

ATTRIBUTE_NAME ist der Name des angezeigten Parameters, z.B. Temperature_Celsius für die Temperatur des Datenträgers in °C. Der Ausgangswert wird in der Spalte RAW_VALUE angezeigt (bei der Temperatur: 24°C). VALUE zeigt den Skalenwert, TRESH den Grenzwert und WORST den schlechtesten je gemessenen Wert auf der Skala an. TYPE gibt an ob der Parameter einen bevorstehenden Ausfall anzeigt (Pre-fail) oder nur auf Abnutzung bzw. ein hohes Alter hinweist (Old-age). UPDATED gibt an ob der Parameter im laufenden Betrieb (Always) oder nur im Offline-Test aktualisiert wird. Mehr Informationen zum Offline-Test stehen unten bei Selbsttests.

WHEN_FAILED zeigt FAILING_NOW an wenn einer der Werte unter dem Grenzwert liegt, ist das nicht der Fall wird ein – angezeigt. Wenn einer der Werte in der Vergangenheit unter dem Grenzwert lag aber im Moment nicht wird In_the_Past angezeigt.

Selbsteinschätzung der Festplatte

smartctl -H <Festplatte> befragt die Festplatte nach ihrem Zustand. Anhand der SMART-Parameter entscheidet die Festplatte dann ob alles in Ordnung ist oder nicht. Wenn alles in Ordnung ist wird PASSED ausgegeben, ansonsten wird FAILED angezeigt. Wenn FAILED angezeigt wird ist Festplatte bereits defekt oder wird wahrscheinlich innerhalb der nächsten 24 Stunden ausfallen. Ist das der Fall sollte man schnellstmöglich die darauf befindlichen Daten sichern und die Festplatte auswechseln.

# smartctl -H /dev/sda
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART-Fähigkeiten der Festplatte

Welche SMART-Befehle und Eigenschaften die Festplatte unterstützt kann man sich mit dem Befehl smartctl -c <Gerät> anzeigen lassen. Auch die Dauer der Selbsttests und ob die Festplatte Fehler mitloggt wird angezeigt.

# smartctl -c /dev/sda
 
=== START OF READ SMART DATA SECTION ===
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:                 (8164) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        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:        ( 137) minutes.
Conveyance self-test routine
recommended polling time:        (  15) minutes.
SCT capabilities:              (0x003f) SCT Status supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

Die Selbsttests

Mittels smartctl -t <Test> <Festplatte> lassen sich einige Tests durchführen. Standardmäßig werden die Tests im Hintergrundmodus gestartet, dadurch beeinträchtigen sie den normalen Betrieb nicht. Mit dem Parameter -C lassen sich die Tests auch im Vordergrund starten, für die Dauer des Tests kann dann allerdings nicht auf die Festplatte zugegriffen werden. (Achtung: -C sollte nur bei Festplatten verwendet werden auf denen sich keine eingebundenen (gemounteten) Partitionen befinden!)

  • Der Offline-Test. Eigentlich ist das gar kein Selbsttest sondern nur ein Prozess bei dem Daten gesammelt werden. Einige SMART-Parameter lassen sich nicht im laufenden Betrieb aktualisieren (siehe UPDATED-Spalte in der Übersicht), da bei der Überprüfung kurzfristig die Lese-/Schreibgeschwindigkeit beeinträchtigt wird. Einige Festplatten können Überprüfung automatisch alle 4 Stunden durchführen, mittels smartctl -o on <Festplatte> bzw. smartctl -o off <Festplatte> lässt sich das ein/ausschalten. Man kann den Offline-Test allerdings auch per smartctl -t offline <Festplatte> manuell starten.
    Wenn Fehler auftreten werden diese in das SMART-Logbuch der Festplatte geschrieben welches sich per smartctl -l error <Festplatte> anzeigen lässt. Der Fortschritt der Überprüfung lässt sich entweder mit smartctl -c <Festplatte> oder mit smartctl -l selftest <Festplatte> anzeigen, welcher der beiden Befehle den Fortschritt anzeigt variiert von Festplatte zu Festplatte.
    Hinweis: Nicht jede Festplatte kann den Fortschritt anzeigen, steht unter Offline data collection capabilities in den SMART-Fähigkeiten Abort Offline collection upon new command ist die Anzeige nicht möglich, da dabei der Offline-Test abgebrochen werden würde. Steht dort Suspend anstatt Abort ist es möglich den Fortschritt anzuzeigen.Die Fortschrittsanzeige sieht z.B. so aus:

    Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
    # 1  Offline             Self-test routine in progress 90%      2556         -

    Test_Description gibt dabei an welcher Test durchgeführt wird, Remaining gibt an wie viel Prozent des Tests noch nicht abgeschlossen sind, LifeTime gibt die Lebenszeit der Festplatte in Stunden an, LBA_of_first_error gibt im Falle eines Fehlers die Adresse von selbigem an.

  • Der kurze Selbsttest überprüft sowohl die mechanischen und elektrischen Fähigkeiten als auch die Lese-Eigenschaften der Festplatte. Er wird mit dem Befehl smartctl -t short <Festplatte> gestartet. Dieser Test dauert nur ein paar Minuten, der Fortschritt des Tests kann wie auch beim Offline-Test überwacht werden.
  • Während beim kurzen Selbsttest nur stichprobenweise die Platter der Festplatte auf ihre Lesbarkeit hin überprüft werden, führt der lange Selbsttest eine Komplettüberprüfung durch. Dieser Test dauert daher auch viel länger (meist einige Stunden.) Der Test wird per smartctl -t long <Festplatte> gestartet.
  • Nach einem Transport der Festplatte sollte der Conveyance-Test durchgeführt werden der die Festplatte auf Schäden untersucht die üblicherweise durch einen Transport hervorgerufen werden können. Er dauert wie der kurze Selbsttest nur einige Minuten und wird mittels smartctl -t conveyance <Festplatte> gestartet.
  • Außerdem ist es mit dem Selective-Test möglich nur einen bestimmten Bereich der Festplatte auf Fehler zu überprüfen. Dabei gibt man einen Bereich oder eine Startadresse und die Anzahl an darauffolgenden Blöcken die untersucht werden sollen an. Der Test wird per smartctl -t select,<Start>-<Ende> <Festplatte> bzw. select,<Start>+<Bereich> <Festplatte> gestartet.
    Der Befehl smartctl -t select,570684206+20 /dev/sda beispielsweise würde die Blöcke 570684206 bis einschließlich 570684225 der Festplatte /dev/sda auf Fehler überprüfen.Die Fortschrittsanzeige zeigt folgendes an:

    # smartctl -l selftest /dev/sda
    === START OF READ SMART DATA SECTION ===
    SMART Self-test log structure revision number 0
    Warning: ATA Specification requires self-test log structure revision number = 1
    Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
    # 1  Selective offline   Completed: read failure       90%      2610         570684206

    Der Test wurde abgebrochen da der Block 570684206 fehlerhaft ist bzw. nicht gelesen werden konnte.

Der Selbsttest bricht mit einer Fehlermeldung ab, die Festplatte schätzt sich selbst aber noch als intakt ein.

Wenn die Festplatte einen Block nicht lesen kann oder das Fehlererkennungssystem (ECC) der Festplatte erkennt das ein Block beschädigt wurde, wird zu erst versucht die Daten an der Stelle mittels einer Prüfsumme wiederherzustellen, ist das nicht möglich wird der Block als fehlerhaft bzw. uncorrectable (UNC) markiert. Die Ursache für einen solchen fehlerhaften Block können zum Beispiel ein Stromausfall während des Schreibvorgangs oder eine Beschädigung der Plattenoberfläche an dieser Stelle sein.

Um das Problem eines unkorrigierbaren Blocks zu beheben benutzt man entweder ein entsprechendes Diagnose/Reparatur-Programm des Herstellers  oder man überschreibt den Block einfach noch einmal mit neuen Daten, die Daten die vorher in diesem Block gespeichert waren (512 Bytes) sind dann allerdings verloren. Wenn der Block dann immer noch nicht funktioniert ersetzt die Festplatte ihn automatisch durch einen Reserveblock.

Die Festplatte schätzt sich trotz des fehlerhaften Blocks noch als funktionsfähig ein, da abgesehen von dem fehlerhaften Block noch alle Parameter in Ordnung sind.

Temperaturinformationen auslesen

Mittels smartctl -l scttemp <Festplatte> ist es möglich noch mehr Informationen über die Temperatur der Festplatte anzuzeigen. Der Befehl zeigt z.B. die aktuelle Temperatur (im Beispiel 23°C), die maximal gemessene Temperatur seit dem Einschalten des Rechners (26°C) und die höchste jemals gemessene Temperatur (28°C) an. Außerdem werden die höchsten und niedrigsten vom Hersteller empfohlenen Betriebstemperaturen  (-4°C und 72°C) sowie die minimal/maximal zulässigen Betriebstemperaturen (-9°C und 77°C) angezeigt. Zusätzlich wird noch eine Tabelle ausgegeben welche darstellt wie sich die Temperatur in letzter Zeit verändert hat.

 # smartctl -l scttemp /dev/sda
=== START OF READ SMART DATA SECTION ===
SCT Status Version:                  2
SCT Version (vendor specific):       256 (0x0100)
SCT Support Level:                   1
Device State:                        Active (0)
Current Temperature:                 23 Celsius
Power Cycle Max Temperature:         26 Celsius
Lifetime    Max Temperature:         28 Celsius
SCT Temperature History Version:     2
Temperature Sampling Period:         1 minute
Temperature Logging Interval:        1 minute
Min/Max recommended Temperature:     -4/72 Celsius
Min/Max Temperature Limit:           -9/77 Celsius
Temperature History Size (Index):    128 (43)
 
Index    Estimated Time   Temperature Celsius
  44    2009-02-10 22:29    24  *****
 ...    ..( 70 skipped).    ..  *****
 115    2009-02-10 23:40    24  *****
 116    2009-02-10 23:41    23  ****
 ...    ..( 24 skipped).    ..  ****
[...]

Grafische Oberfläche: GSmartControl

Das Hauptfenster von GSmartControl

Die Parameter von einer meiner Festplatten

GSmartControl ist eine grafische Benutzeroberfläche für smartctl. Die meisten Distributionen bieten das Programm über die Paketverwaltung an, ansonsten kann man es hier herunterladen und wie üblich per ./configure && make && make install selbst aus den Quellen kompilieren. Anschließend kann das Programm mit dem Befehl gsmartcontrol gestartet werden. Damit das Programm funktioniert werden aber in der Regel root-Rechte benötigt, entweder man startet gsmartcontrol in einer root-Konsole oder man benutzt kdesu/gnomesu/etc. oder das Skript gsmartcontrol-root um es mit Administratorrechten zu starten.

Die Bedienung von GSmartControl ist eigentlich relativ einfach. Im Hauptfenster werden alle Festplatten des Rechners angezeigt, um mehr Informationen über die SMART-Daten einer Festplatte anzeigen zu lassen doppelklickt man auf das entsprechende Symbol. Es öffnet sich ein Fenster mit mehreren Tabs in denen alle SMART-Informationen enthalten sind. Dort kann man auch die Ergebnisse von Selbsttests ansehen und selbige durchführen.

Abschließendes

Mit SMART lassen sich in vielen Fällen Defekte vorhersehen und somit Datenverluste und Ausfälle vermeiden. Dieser Artikel erklärt die wichtigsten Befehle von smartctl, das Programm kann aber noch ein bisschen mehr. Weitere Informationen über SMART und die smartmontools finden sich unter folgenden Adressen:

Informationen

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (1 Bewertungen, Durchschnitt: 5,00 von 5)
Loading ... Loading ...
Kategorie: Anleitungen, Linux
Ansichten: 3.722

Kommentare

Keine Kommentare bis jetzt.

Kommentar schreiben

XHTML: Folgende Elemente sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Angetrieben durch Wordpress Thema erstellt von Antu