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 persmartctl -t offline <Festplatte>manuell starten.
Wenn Fehler auftreten werden diese in das SMART-Logbuch der Festplatte geschrieben welches sich persmartctl -l error <Festplatte>anzeigen lässt. Der Fortschritt der Überprüfung lässt sich entweder mitsmartctl -c <Festplatte>oder mitsmartctl -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 Befehlsmartctl -t select,570684206+20 /dev/sdabeispielsweise würde die Blöcke 570684206 bis einschließlich 570684225 der Festplatte/dev/sdaauf 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
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:
- Oft gestellte Fragen zu den smartmontools (Englisch)
- Ein Skript welches fehlerhafte Festplattensektoren neu zuweist
- Wikipedia-Artikel zu S.M.A.R.T.
- Die offizielle Webseite von smartmontools (Englisch)
- Die offizielle Webseite von GSmartControl
- Handbücher zu smartctl, smartd und der smartd.conf (Englisch)
- Google-Studie: Failure Trends in a Large Disk Drive Population (Englisch)


Kommentare
Keine Kommentare bis jetzt.