Linux Kurztipp: SMART

Viele haben schon mal das ungute Gefühl erlebt, wenn sich ihr High-Tech-Stück "Festplatte" mit grobmechanischen Kratzgeräuschen bemerkbar macht. Der schwere Klumpen im Bauch, der einen daran erinnert, dass das letzte Backup schon viel zu lange her ist, wird nur von der keimenden Gewissheit getopt, dass die Platte das nächste Einschalten vielleicht nicht überlebt.

Informationen vorab

So weit muss es aber garnicht erst kommen. Moderne Festplatten mit ATA, SATA oder SCSI3-Schnittstelle kennen eine Technik namens S.M.A.R.T. Diese erlaubt es Programmen unter Linux (und auch Windows) den Gesundheitszustand der Festplatte zu erfragen und sogar zu testen.

Hinweis: wird die Platte über einen USB-Adapter angeschlossen, ist SMART leider nicht möglich. Die notwendigen Befehle an die Festplatte passieren leider nicht diesen Adapter. Schlimmer noch. Es kann bei gekauften USB-Platten sogar vorkommen, dass das SMART-Monitoring der Platten nicht aktiviert ist, sodass man auch im Nachhinein nichts über die Platte erfahren kann.

Wie startet man nun?

Unter Linux werden hier die smartmon tools verwendet. Unter Debian oder Ubuntu reicht es, wenn man das Paket smartmontools installiert. Nach der Installation kann man als root das Programm smartctl benutzen. Hierzu muss man den Device Namen seiner Festplatte kennen. Dieser läßt sich am einfachsten durch folgendes beherztes Kommando auf der Shell ermitteln:

mount | grep ^/dev/

Die Antwort könnte so aussehen:

/dev/hda1     on / type ext3 (rw,errors=remount-ro)`

In diesem Fall ist /dev/hda der Device Name der Platte. Die Nummer gibt eine Partition auf der Platte an und ist in diesem Fall unwichtig. Weitere Platten bekommen einen fortlaufenden Buchstaben nach dem "hd". Auf neueren Systemen mit SATA werden die Festplatten nicht mehr mit hd sondern mit sd angekürzt. Mit diesem Wissen gewappnet, können wir mit dem ersten Test beginnen.

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

Mit dem Parameter -H wird das aktuelle "Befinden" der Festplatte erfragt. Wenn keine gravierenden Fehler vorliegen, ist diese Aussage schon mal beruhigend.

Man kann natürlich auch aktiv einen Selbsttest anstoßen. Dazu ruft man zuerst smartctrl mit dem Parameter -t auf. Nach einigen Minuten (ca. 2) ist der Test dann beendet. Danach fragt man das Resultat des Tests mit -l wie folgt ab:

# smartctl -t short /dev/hda
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
...
# smartctl -l selftest /dev/hda
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 14942 -
...

In diesem Beispiel sind die Ausgaben zusammengestrichen. Dieses Laufwerk ist aber in Ordnung.

Die Festplatten sammeln bei aktivem SMART aber permatent Daten. Die gesammelten Werte des Monitoring zur Laufzeit kann man mit -a erhalten.

# smartctl -a
=== START OF INFORMATION SECTION ===
Model Family: IBM/Hitachi Travelstar 60GH and 40GN family
Device Model: IC25N020ATCS04-0
Serial Number: CSH204DMDJH18F
Firmware Version: CA2OA71A
...
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
...
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 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 119 119 033 Pre-fail Always - 1
4 Start_Stop_Count 0x0012 096 096 000 Old_age Always - 6426
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 089 089 000 Old_age Always - 4998
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 796
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 1
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 40
193 Load_Cycle_Count 0x0012 095 095 000 Old_age Always - 51619
194 Temperature_Celsius 0x0002 127 127 000 Old_age Always - 43 (Lifetime Min/Max 9/54)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
....

Wie man sieht, werden hier viele Informationen ausgegeben. Ich habe mal das unwichtigere weggestrichen. Neben den ersten Übersichten ist die Tabelle das eigentlich Interessante. Hier sind neben reinen Fehlerangaben wie Offline_Uncorrectable oder UDMA_CRC_Error_Count auch Betriebinformationen wir die gesamte Laufzeit Power_On_Hours (in Stunden oder manchmal in Minuten) oder die Anzahl der Anschaltzyklen Power_Cycle_Count zu finden. Diese Infos können beim Kauf gebrauchter Geräte interessant sein.

Tipp: ständig wachsende Werte von UDMA_CRC_Error_Count deuten auf ein defektes Kabel hin. Werden Wechselrahmen verwendet, können auch diese an den Übertragungsproblemen Schuld sein.

Eine automatische Überwachung muss her!

Mit der bisher beschriebenen Vorgehensweise bekommt man zu jeder Zeit die Information, wie es der Festplatte gerade geht. Nur wer denkt schon immer daran das regelmäßig zu kontrollieren? Und was ist mit dem Server unten im Keller?

Auch hier beinhalten die smartmon tools eine Lösung. Den SMART Disk Monitoring Daemon smartd. Bei diesem Daemon handelt es sich um einen Dienst, der im Hintergrund alle 30 Minuten per SMART die Festplatte kontrolliert. Gefundene Auffälligkeiten werden dann in der Logdatei /var/log/messages protokolliert. Bei Debian und Ubuntu kann man diesen Server durch die Konfiguration der Datei /etc/default/smartmontools automatisch starten lassen. Einfacher geht es eigentlich nicht mehr. Verändert man diese Datei, braucht man nicht wie unter üblich Windows neu booten. Es reicht völlig, wenn man wie folgt den Dienst neu startet: /etc/init.d/smartmontools restart

Linux kennt sowohl für Desktopsysteme als auch für Server eine Vielzahl von Programmen, die Logdateien analysieren und Auffälligkeiten sofort melden.

Für den Server gibt es Schwergewichte wie Nagios oder Munit, und für den Desktop z.B. smart-notifier.

Auf den Geschack gekommen? Dann ab und gleich mal ein bisschen experiementieren. Aber Achtung: ein echtes Backup ist mit den smartmon tools nicht zu ersetzen.

Ach ja, wem das Ganze zu Shell-lastig ist, der kann sich auch an GSmartControl versuchen. Das stülpt den smartmon tools eine GTK basierende GUI über. Leider gibt es dafür in Debian / Ubuntu kein fertiges Paket.

Creative Commons License Dieses Werk oder Inhalt ist unter einer Creative Commons-Lizenz lizenziert.

Joerg Desch / 9.12.2008

Comments