Festplattendiagnostik- und Überwachung

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Andere Hardware ‹ Festplattendiagnostik- und Überwachung


Getestet.png Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.




Im digitalen Zeitalter werden alle Informationen digital gespeichert. Nicht nur in Rechenzentren, sondern auch im privaten Bereich ist es heute mit erschwinglichen PCs üblich, Informationen zu erfassen, zu bearbeiten und abzuspeichern. Seit weit über 30 Jahren dienen Festplattenlaufwerke dabei als Speicher für sowie Daten als auch der nötigen Betriebssysteme und Programme. Die Festplatten unterliegen bis heute einer ständigen Weiterentwicklung. Immer mehr Daten auf engerem Raum mit schnelleren Zugriffszeiten, erhöhten Transferraten und verringertem Energiebedarf.

Doch wie sieht es mit der Beständigkeit und Sicherheit der darauf liegenden Daten aus? Kein Gerät läuft ewig und bis zum Ende fehlerfrei. Deshalb haben sich Techniken etabliert, die das fehlerfreie weiterarbeiten durch Redundanz ermöglichen, also trotz Ausfall einer Festplatte. Parallel dazu führt nichts an einem Backup, also dem regelmäßigen Kopieren eines Datenbestandes an andere Orte mit anderen Datenträgern, vorbei.

Trotz dieser Methoden bieten vielerlei moderne Geräte und damit auch Festplatten Möglichkeiten, ihren momentanen Gesundheitszustand preis zu geben und durch ständige Überwachung sogar Prognosen über einen zeitlich nahen Ausfall zu erlauben. Unter dem Druck der wirtschaftlichen Vermarktbarkeit ist die Tendenz zu frühzeitig ausfallenden Festplatten keine Seltenheit. Auch durch die technologische Komplexität ist eine fehlerfreie Funktionsgarantie für eine bestimmte Zeit unmöglich.

In diesem Artikel wird beschrieben, wie man als Ursache bestimmter Symptome auf fehlerhafte Festplatten schließen kann, wie der Zustand einer Festplatte zu bestimmen und zu beurteilen ist und wie man durch die Einrichtung einer stetigen Überwachung vor einem womöglich bevorstehenden Ausfall gewarnt werden kann.



S.M.A.R.T.

Wenn es um Festplattendiagnose geht, wird man um das „Self-Monitoring, Analysis and Reporting Technology“ (kurz SMART) nicht herum kommen. Es wurde 1996, also mit ATA-3 und SCSI-3, als Teil des Standards eingeführt und mit einigen Änderungen bis heute beibehalten. Es wird also von allen Festplatten/SSDs und Flashlaufwerken unterstützt, die ATA, SCSI oder SAS verstehen.

SMART arbeitet unabhängig vom Betriebssystem in der Festplatte und hat einzig die Aufgabe der Protokollierung, greift also nicht in die Funktion und damit Leistungsbeeinflussend ein. Die gewonnenen Informationen können über externe Software ausgelesen und analysiert werden. Das BIOS ist dazu nicht in der Lage. Dort untergebrachte Optionen beziehen sich nur auf das Überprüfen der SMART Selbsteinschätzung der Festplatte.

Da aufgeführte Attribute und deren Grenzwerte ungenormt vom jeweiligen Hersteller definiert werden, ist die Aussagekraft nicht immer übertragbar und besonders hoch einzuschätzen. Jedoch sind Fehlerlog und die durch SMART durchführbaren Selbsttests ein hilfreiches Mittel.

Um den vollen Umfang der durch SMART bereitgestellten Diagnosemöglichkeiten zu nutzen, wird hier hauptsächlich der Umgang mit einem der leistungsfähigsten Werkzeuge beschrieben, die es dafür gibt. Es handelt sich dabei um die für viele Systeme verfügbaren Smartmontools.

Installation

über das Paket

Die Debianpackage.png smartmontools gibt es seit Langem fertig in den Debian Paketarchiven. Die Installation ist also einfach über APT zu erledigen. Beispielsweise mit aptitude:

root@debian:~# aptitude install smartmontools

Im Paket enthalten sind:

smartctl
Das Kommandozeilenwerkzeug.
smartd
Der Überwachungsdienst mit vielseitigen Warn- und Informationssammelmöglichkeiten.
Sowie Konfigurationsdateien, Init-Skripte und Manualdateien.


In Debian verfügbare Versionen:

Debian Standard Repo Backports
Sarge 5.32-3 5.36-8
Etch 5.36-8 5.38-2
Lenny 5.38-2 5.39.1+svn3124-2
Squeeze 5.39.1+svn3124-2 5.41+svn3365-1
Wheezy 5.41+svn3365-1

über die Quellen

Durch neue Funktionalitäten ist es manchmal nötig, dass die letzte Entwicklerversion benötigt wird, die noch nicht in den Debian Archiven gelandet ist.

Es werden die folgende Pakete benötigt:

Zum Code holen und Kompilieren:

svn co https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk/smartmontools smartmontools
cd smartmontools
./autogen.sh
./configure
make

Smartctl ist dann problemlos von dort ausführbar:

root@debian:~# ./smartctl

Gesundheitszustand ermitteln

Hinweis.png Hinweis: Smartctl muss mit Rootrechten ausgeführt werden, zudem braucht es kein Leerzeichen zwischen Option und dem folgenden Parameter: „smartctl -lerror“ funktioniert ebenso wie „smartctl -l error“.


Verfügbare Geräte auflisten

Wenn man sich einen Überblick über alle direkt zugreifbaren Festplatten machen möchte, ist smartctl mit der scan Option aufzurufen.

--scan
Hiermit lassen sich alle gefundenen Festplatten auflisten.

Beispielsweise gibt es solch eine Ausgabe:

root@debian:~# smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/sdd -d scsi # /dev/sdd, SCSI device
/dev/sde -d scsi # /dev/sde, SCSI device

Anmerkung: Bei EIDE, SATA, SCSI und SAS Festplatten ist die vorgeschlagene Vorgabe des Busses nicht notwendig.

Festplatten an USB oder hinter Hardware-RAID Controller

Normalerweise sind Festplatten direkt an einer EIDE, SATA oder SCSI und SAS Schnittstelle unproblematisch und es wird automatisch der richtige Zugriffstyp gewählt. Ist sie aber über eine USB-ATA-Bridge an den USB angeschlossen oder liegt mit anderen hinter einem RAID Controller, sind spezielle Zugriffstypen nötig, um sie erreichbar zu machen. Besonders für USB liegt die Chance auf gut unterstützte USB-ATA Bridges erst bei Geräten nach dem Baujahr 2008 höher.Ob und mit welchem der aufgeführten Zugriffstypen die SMART Werte einer externen Festplatte ausgelesen werden können, ist auf der Projektseite hier aufgelistet.

-d TYP, --device=TYP
TYP ist ein Kürzel für verschiedene zur Auswahl stehenden Zugriffsmethoden. Hier sollen nur die gebräuchlichsten aufgeführt werden, andere sind der Manpage zu entnehmen.
auto – ist die oben beschriebene Standardeinstellung und bedarf keiner expliziten Angabe.
ata – ist für jegliche ATA Geräte gedacht; weist smartctl an, keine SCSI Kommandos auszugeben.
scsi – für alle Geräte am SCSI Bus, verhindert die Ausgabe von ATA Kommandos
sat – steht für SCSI to ATA Translation (SAT). Es ist quasi ein ATA-Tunnel durch SCSI und von Bedeutung bei SATA Festplatten an einem SAS Bus oder für die meisten der USB/ATA Bridges. Es gibt zwei Varianten dieses „ATA pass through SCSI commands“: Standardmäßig ist die 16 Byte lange gewählt, optional die 12 Byte lange ´-d sat,16´ oder ´-d sat,12´
usbcypress – Nutzt die spezielle, proprietäre ATA pass through Variante, ATACB, des Herstellers Cypress für dessen USB Bridges.
3ware,N – Ein Beispiel für die vielen verschiedenen RAID Controller ist für den Hersteller 3Ware. Für einen 3ware Serie 9000 Controller ist die erste Festplatte so zu erreichen:
smartctl -a -d 3ware,0 /dev/twa0
Demzufolge für die zweite:
smartctl -a -d 3ware,1 /dev/twa1

Festplatteninformationen

-i; --info
Zeigt Modell,- Seriennummer, Firmwareversion den ATA Standard/Revision, die nutzbare Kapazität (nur bei LBA-Fähigen Festplatten; wenn HPA aktiv, wird nur die sichtbare Kapazität gezeigt). Seit Version 5.41 (Wheezy) wird die Sektorgröße und der WWN (world wide name) angezeigt, wenn vorhanden.
Ob die Festplatte SMART unterstützt und es aktiviert ist oder nicht. Wenn das Festplattenmodell in der Datenbank vorhanden ist, wird auch die Modellserie gezeigt.

Ein Beispiel mit der Squeeze Version:

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Blue Serial ATA
Device Model:     WDC WD1600AABS-55PRA0
Serial Number:    WD-WMAP92144xxx
LU WWN Device Id: 5 0014ee 0556b2f77
Firmware Version: 05.06H05
User Capacity:    160.041.885.696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Tue Nov 22 03:11:08 2011 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
-q noserial
Gibt man dies in Kombination mit dem Info (oder -a/--all) Kommando ein, dann wird die Seriennummer nicht mit angezeigt. Nützlich für Ausgaben, die man öffentlich zugänglich machen möchte, jedoch ohne die eindeutige Seriennummer.
-i -q noserial <device>

Anmerkung: Da hier alleine Informationen des ATA identify Kommandos angezeigt werden (wie beispielsweise mit hdparm), ist dies der einzige smartctl Befehl, der auch ohne SMART-Fähigkeit des Laufwerks Informationen bringt.

SMART aktivieren

Oft ist SMART auf manchen Festplatten noch nicht aktiviert. Solang dies nicht geschehen ist, lassen sich die Daten nicht auslesen.

-s WERT
Mit on/off schaltet man SMART ein oder aus. Normalerweise bleibt diese Einstellung nach dem nächsten Einschalten erhalten.
-o WERT
On/off schaltet den automatischen offline Test ein oder aus. Diese Funktion veranlasst aller vier Stunden einen „offline scan“.
-S WERT
On/off aktiviert oder deaktiviert das automatische Speichern der SMART Hersteller-Attribute.

Hat man eine Festplatte zum ersten mal vor sich oder SMART lässt sich nicht auslesen, dann kann es nicht schaden, alle drei Funktionen zu aktivieren:

root@debian:~# smartctl -son -Son -oon /dev/device

SMART Gesundheitsindikator

-H
Zeigt den Health-Indikator an. Hierbei handelt es sich um eine Selbsteinschätzung der Festplatte anhand aller online- und offline Tests und aller SMART Attribute. Wenn hier ein FAILED gezeigt wird, bedeutet dies entweder einen bereits bestehenden Defekt oder eine Vorhersage dessen für die nächsten 24 Stunden. Im Normalfall wird ein PASSED gezeigt.
Dies ist der Indikator, den z.B. das BIOS zu Rate zieht, um die Festplatte über SMART zu beurteilen.

Ein FAILED-Beispiel:

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Failed Attributes:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  3 Spin_Up_Time            0x0007   001   001   025    Pre-fail  Always   FAILING_NOW 42816
Hinweis.png Hinweis: Dieser Indikator ist zunehmend nicht sehr aussagefähig. Es kann sein, dass trotz fehlschlagender Selbsttests und anderer schwerwiegender Fehler hier ein PASSED gemeldet wird. Die Gründe könnten darin liegen, dass der Hersteller bei frühzeitigem Auslösen zu hohe Rücklaufzahlen bewältigen müsste, was Image- und wirtschaftlich schädigend wäre.


SMART Fähigkeiten

-c
Zeigt die generischen SMART Fähigkeiten und wie sie implementiert sind.
Offline data collection:
Ob sie aktiviert ist und wie der letzte Status lautet.
Self-test execution status:
Ist eine wichtige Anzeige dafür, ob gerade ein Selbsttest läuft, wie viel bisher gescannt wurde (in 10 Prozent Schritten) und wie der Status des letzten Tests war.
Total time to complete Offline data collection:
Die benötigte Zeit für einen „offline-Test“ in Sekunden.
Capabilities:
Welche SMART Funktionen verfügbar sind. Zum Beispiel ob Selbsttest unterstützt werden und wenn ja, welche.
SMART capabilities:
Zeigt, ob SMART Daten (Attribute) vor dem Eintreten in einen Stromsparmodus gespeichert werden.
Error logging capability:
Die Fähigkeiten des internen Fehlerlogs.
Die festen benötigten Zeiten für alle möglichen Selbsttest.
SCT capabilities:
Ob und wie SCT (SMART command transfer) unterstützt wird.

Eine Beispielausgabe:

=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
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:                ( 3960) 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:        (  54) minutes.
Conveyance self-test routine
recommended polling time:        (   6) minutes.
SCT capabilities:              (0x103f) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Hersteller-Attribute

Im ATA-3 Entwurf wurden SMART-Parameter spezifiziert, jedoch vor der Standardverabschiedung wieder entfernt. Allerdings halten die Festplattenhersteller, auch SSDs betrifft das, an diesen Parametern fest. Dieser Umstand bringt mit sich, dass diese, wie oben schon angedeutet, offiziell nicht standardisiert sind und nicht bei allen Herstellern gleiches bedeuten. Die Zuordnung eines Attributes zu einer ID ist nur quasi Standard und variiert teilweise. Besonders bei SSDs wurden systembedingt viele Festplattenattribute durch neue ersetzt. Attribute bieten jedoch einige nützliche Informationen über den momentanen Zustand und die Betriebsbedingungen wie zum Beispiel die Festplattentemperatur, die Zahl der Einschaltvorgänge oder die gesamte Betriebszeit. Attribute sind von 1 bis 253 durchnummeriert, haben ein ID und einen Namen. Diese Zuordnung ist wie gesagt verbreitet, aber nicht zwingend immer identisch.

-A; --attributes
Gibt eine Tabelle aller vorhandenen Attribute aus. Geführt von ID# und ATTRIBUTE_NAME. Jedes Attribute wird als ein „raw“ (unverarbeitet) Wert unter RAW_VALUE und als normalisierter unter VALUE geführt. Normalisiert wird ein raw Wert von der Festplattenfirmware selbst. Dabei wird der raw Wert auf einer Skala von 0 bis 100, 200 oder 255 umgerechnet. Ab dem voreingestellten Maximum verringert sich der normalisierte Wert je nach Zustand. Erreicht oder unterschreitet er eine festgelegte Grenze unter THRESH, dann wird das entsprechende Attribut unter WHEN_FAILED als „FAILING_NOW“ gemeldet. Ist es unter TYPE als „Pre-fail“ gelistet, ist ein bevorstehenden Festplattenausfall anzunehmen oder schon eingetreten. Verbesserte sich der Wert wieder, wird sein schlechtester Ausschlag unter WORST festgehalten und unter WHEN_FAILED mit „In_the_past“ gekennzeichnet. Ein einfaches „-“ bescheinigt dem Attribut, weder in der Vergangenheit noch aktuell, fehlgeschlagen zu sein. „Old_age“ in der TYPE Spalte kennzeichnet das Attribut als rein Alterungs- oder Verschleißbestimmend/-abhängig. Die Spalte UPDATE gibt Auskunft darüber, ob ein Attribut ständig automatisch „Always“ oder nur während eines offline Tests „Offline“ aktualisiert wird. Letztendlich ist der raw-Wert der, welcher direkte Interpretationen zulässt. Denn bei manchen Modellen ändert sich der Grenzwert THRESH dynamisch und einige normalisierte VALUE-Werte sind unveränderlich in der Firmware einprogrammiert.

Zusammenfassend eine Übersicht.

Spalte Beschreibung
ID# Die Identifikationsnummer des Attributes.
ATTRIBUTE_NAME Der zur ID geordnete Name des Attributes.
VALUE Aktueller, normalisierter Wert des raw Parameters. Je geringer, desto schlechter.
WORST Der über die gesamte Laufzeit schlechteste Wert.
THRESH Der Grenzwert, welcher nicht erreicht oder unterschritten werden soll.
TYPE Wenn VALUE unter den Grenzwert fällt, deutet ein hier als „Pre-fail“ geführtes Attribut auf baldigen Festplattenausfall hin. Ein „Old_age“ gekennzeichnetes, indiziert vom Charakter Alterung und Verschleiß.
UPDATE Zeigt das Aktualisierungsverhalten. Ein „Always“-Attribut wird ständig aktualisiert, sobald SMART aktiv ist, ein „Offline“ nur während eines Offline-Tests.
WHEN_FAILED „FAILING_NOW“ bekundet ein aktuelles Unterschreiten des Grenzwertes, „In_the_past“ in der Vergangenheit. Mit dem Bindestrich „-“ ist alles ok.
RAW_VALUE Der „raw“-Wert, ohne Normalisierung und Bewertung.

Kommt man im Zweifel mit sehr groß erscheinenden raw-Werten unbekannter Attribute nicht klar, gilt besonders die Orientierung an den normalisierten Werten. Sind diese weit vom Grenzwert entfernt, ist alles in Ordnung.

Beispiel:

=== 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   046    Pre-fail  Always       -       19494
  2 Throughput_Performance  0x0005   100   100   030    Pre-fail  Offline      -       23855104
  3 Spin_Up_Time            0x0003   100   100   025    Pre-fail  Always       -       1
  4 Start_Stop_Count        0x0032   099   099   000    Old_age   Always       -       4236
  5 Reallocated_Sector_Ct   0x0033   100   100   024    Pre-fail  Always       -       0 (2000, 0)
  7 Seek_Error_Rate         0x000f   100   100   047    Pre-fail  Always       -       1908
  8 Seek_Time_Performance   0x0005   100   100   019    Pre-fail  Offline      -       0
  9 Power_On_Seconds        0x0032   087   087   000    Old_age   Always       -       6764h+14m+18s
 10 Spin_Retry_Count        0x0013   100   100   020    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1870
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       16
193 Load_Cycle_Count        0x0032   088   088   000    Old_age   Always       -       123321
194 Temperature_Celsius     0x0022   100   075   000    Old_age   Always       -       55 (Lifetime Min/Max 13/65)
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       14
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0 (0, 4357)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000f   100   100   060    Pre-fail  Always       -       6074
203 Run_Out_Cancel          0x0002   100   099   000    Old_age   Always       -       3728112155426

Die Ausgabe zeigt eine 80 GB große FUJITSU MHT2080AH Festplatte. Da kein einziger Sektor ausgelagert Reallocated_Sector_Ct, darauf wartet Current_Pending_Sector, als schlecht erkannt Offline_Uncorrectable wurde und sonst alle anderen Attribute im grünen Bereich sind, ist diese Festplatte scheinbar kerngesund. Die genaue Bedeutung und Einschätzung der geläufigsten Attribute ist hier verständlich erklärt. Weitere Quellen findet man am Ende dieses Artikels.

-v ID,FORMAT[.BYTEORDER][,NAME], --vendorattribute=ID,FORMAT[.BYTEORDER][,NAME]
Gibt das Attribut unter der gegebenen ID in anderem Format (FORMAT) und optional anderer Bytereihenfolge (BYTEORDER) bzw. mit anderem Namen (NAME) aus. ID ist die Nummer des Attributes, ein „N“ gälte für alle Attribute. Mit dem Format lassen sich in Sekunden formatierte Betriebsstunden z.B. in Stunden ausgeben. Eine Liste der Möglichkeiten erhält man mit „-v help“ und aus der Manpage.

Selbsttest initiieren

Tests werden von der Festplatte selbst, also vom SMART-Firmwaremodul, durchgeführt. Sie sind hilfreich dafür, Attribute zu aktualisieren oder die Plattenoberfläche auf Fehler zu prüfen. SMART stellt Tests unter drei Kategorien bereit.

Online
Die Testkategorie beeinflusst die Leistung nicht und wird mit der schon genannten Option „-s on“ aktiviert, also sobald SMART aktiv ist. Anders ausgedrückt stellt SMART selbst diesen „online“ Test dar, also die ständige Aktualisierung aller Attribute mit dem Update-Typ „Always“.
Offline
Offline Tests werden automatisch regelmäßig gestartet, wenn mit der bereits erwähnten Option „-o on“ aktiviert. Einmalig lässt sich so ein „Test“ mit „-t offline“ starten. Normalerweise wird der Test bei Festplattenzugriffen angehalten und bei der nächsten idle-Phase fortgeführt, so dass es keine Beeinträchtigungen geben dürfte, die ein offline „Test“ durchaus bedeuten würde. Alle Attribute vom Typ „Offline“ werden hiermit aktualisiert.
Self-test
Hierunter reihen sich die richtigen Tests ein. Denn die ersten beiden Kategorien fallen mehr unter eine „Datensammlung“, um die On- und Offline Attribute zu aktualisieren. Ein Selbsttest wird unmittelbar nach der Kommandoeingabe gestartet und dauert eine definierte, vom Typ und der Festplatte abhängigen, Zeit. Die Ergebnisse dieser Selbsttests sind im Selbsttestlog ersichtlich. Die benötigte Dauer der Tests short, long und conveyance sind den Angaben unter „SMART Fähigkeiten“ zu entnehmen.
-X, --abort
Diese Kommando bricht jeden Selbsttest im nicht „captive“-Modus ab. Ein direkt gestarteter Offline-Test wird dadurch nur gestoppt, wenn folgendes unterstützt wird: "Abort Offline collection upon new command"

Test im Vordergrund

-C
Die „captive“ Option funktioniert nur zusammen mit einem short, long, selective oder conveyance Test. In diesem Modus wird der gegebene Test im Vordergrund ausgeführt, was die Festplatte komplett blockiert.
Warnung.png Warnung: Wegen der Blockade der Festplatte, für die Dauer des Tests, wird empfohlen, davor alle betreffenden Dateisystem auszuhängen!


kurzer Test

-t short
Startet einen Selbsttest, dessen Dauer typisch deutlich unter 10 Minuten liegt. Dieser Test untersucht die elektrische und mechanische Leistung und den Lesedurchsatz des Datenträgers. Er kann im normalen Betrieb abgesetzt werden, da er diesen nicht behindert. Das Ergebnis findet sich im Selbstetst-Log. Der Fortschritt ist mit „-c“ in 10%-Schritten verfolgbar.

langer Test

-t long
Ist eine lange Version von obigem „short test“ und kann wenige 10 Minuten bis mehrere Stunden dauern. Hierbei wird die gesamte Plattenoberfläche abgetastet.

conveyance Test

-t conveyance
Dieser Test dauert meist wenige Minuten und ähnelt dem „short“ oder „long“ Test. Mit diesem wird versucht Schäden festzustellen, die während eines Transportes oder anderweitig entstandenen mechanischen Belastungen aufgetreten sein können. Er wird nur von wenigen Festplatten unterstützt, darunter viele vom Hersteller Western Digital (WD).

selektiver Test

Bei großen Festplatten besteht das Problem sehr langer Zeiten, die für einen kompletten Selbsttest benötigt werden. Entweder ist die Laufzeit des Rechner kürzer und der Test bricht beim Herunterfahren ab, oder man möchte gezielt nur einen bestimmten Bereich erneut testen, welcher zuvor fehlerhaft war. Genau für solche Fälle ist der selektive Selbsttest gedacht.

-t select,N-M, select,N+SIZE
Weist SMART an, ausschließlich einen Bereich logischer Blockadressen (LBAs) zu testen. Jeder Bereich wird „span“ genannt und beginnt mit einem Start LBA (N) und endet mit einem letzten LBA (M), wobei N kleiner oder gleich M ist. So ein Bereich („span“) lässt sich auch mit N+SIZE angeben, oder mit N-max, was von N bis zum Ende der Festplatte testet. Die „-t“ Option, also ein span, kann bis zu fünf mal in einer Befehlszeile angegeben werden. Diese fünf spans können sich dabei teilweise oder komplett überlappen. Die fünf zuletzt aufgerufenen spans merkt sich SMART. Das Ergebnis des selektiven Selbsttest steht im Selbsttest-Log und die gesetzten spans landen im Selective selftes-Log.
Beispiele:
smartctl -t select,1000-1020 /dev/sda
smartctl -t select,1000+11 /dev/sda
Beide Tests laufen über den Bereich LBA 1000 zu 1020.
smartctl -t select,10000000-max /dev/sda
Beginnend von LBA 10000000 wird bis zum Ende der Festplatte getestet.
smartctl -t select,0-10 -t select,5-15 -t select,10-20 -t select,15-30 /dev/sda
Vier teilweise überlappende spans decken zusammen einen Bereich von 31 LBAs ab.
-t select,redo[+SIZE]
Wiederholt einen selektiven Selbsttest mit genau dem Bereich des zuvor ausgeführten, es sei denn, dessen Größe wird mit +SIZE neu vorgegeben.
Beispiele:
smartctl -t select,10-20 /dev/hda
smartctl -t select,redo /dev/hda
smartctl -t select,redo+20 /dev/hda
-t select,next[+SIZE]
Startet einen selektiven Selbsttest, dessen span am Ende des zuvor ausgeführten gestartet wird. Mit +SIZE kann dessen Größe vorgegeben werden. Wenn der vorige Selbsttest am Festplattenende beendet wurde, beginnt der neue bei LBA 0, also am Anfang.
Beispiele:
smartctl -t select,0-999 /dev/hda
smartctl -t select,next /dev/hda
smartctl -t select,next+2000 /dev/hda
Deckt äquivalent die Bereiche 0-999, 1000-1999 und 2000-3999 ab.

Es gibt noch weitere selektiv-Selbsttest bezogene Kommandos, die ausführlich in der Manualpage beschrieben sind. Das sind: select,cont[+SIZE]; afterselect,on; afterselect,off; pending,N.

offline Test

-t offline
Führt die oben beschriebene offline „Datensammlung“ aus, welche bestimmte Attribute aktualisiert und gefundene Fehler in den Fehlerlog schreibt. Wenn unter „SMART Fähigkeiten“ beschriebe Option „-c“ ein "Suspend Offline collection upon new command" meldet, dann lässt sich dieser Vorgang mit „-c“ auch verfolgen. Wird hingegen "Abort Offline collection upon new command" aufgeführt, dann sollte man das Absetzen der meisten SMART Kommandos danach vermeiden (auch „-c“), da dieser Test sonst abbricht.

Fehler-Log

Wenn die Festplatte „error logging“ unterstützt, werden von SMART die letzten 5 Fehler in einem Log gehalten. In jedem Fehlereintrag wird die momentane Betriebsdauer und der Gerätestatus (idle, standby, active) festgehalten. Für bestimmte Fehler wird weiterhin der Inhalt des Error- und Status Registers und die bisherige Einschaltzeit gezeigt.

Die Abkürzungen dieser Fehler stehen für:

  ABRT:  Command ABoRTed
  AMNF:  Address Mark Not Found
  CCTO:  Command Completion Timed Out
  EOM:   End Of Media
  ICRC:  Interface Cyclic Redundancy Code (CRC) error
  IDNF:  IDentity Not Found
  ILI:   (packet command-set specific)
  MC:    Media Changed
  MCR:   Media Change Request
  NM:    No Media
  obs:   obsolete
  TK0NF: TracK 0 Not Found
  UNC:   UNCorrectable Error in Data
  WP:    Media is Write Protected

War eines der Kommandos ein READ oder WRITE, dann wird der betreffende LBA ausgegeben. Durch eine SMART-Beschränkung sind nur LBAs bis 137 GB korrekt ermittelbar.

-l error
Gibt den Inhalt des Fehlerlogs aus. Die Fehler haben eine fortlaufende Nummer beginnend bei 0. Im Log sind nur die letzten 5 aufgeführt. Wenn Fehler vorhanden sind, wird immer eine kurze Erklärung und Registerliste vorangestellt.
Hier ein Log Beispiel. Gezeigt wird nur der letzte Fehler:
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 274 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 274 occurred at disk power-on lifetime: 112 hours (4 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  84 51 00 03 30 25 40  Error: ICRC, ABRT at LBA = 0x00253003 = 2437123

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  c8 00 04 00 30 25 40 00      00:04:47.660  READ DMA
  c8 00 04 00 30 25 40 00      00:04:47.659  READ DMA
  c8 00 04 00 30 05 40 00      00:04:47.659  READ DMA
  c8 00 04 a4 2a 05 40 00      00:04:54.743  READ DMA
  b0 d2 f1 00 4f c2 00 00      00:04:54.437  SMART ENABLE/DISABLE ATTRIBUTE AUTOSAVE
Bei einer Betriebszeit der Festplatte von 112 Stunden kam es beim Lesen des LBA 2437123 zu einem Abbruch durch CRC Fehler. Diese erhöhten auch den Zähler im Attributlog unter UDMA_CRC_Error_Count. Es stellte sich ein schlechtes SATA Kabel als Fehlerursache heraus, was ein sehr häufiges Problem darstellt.
-l xerror
Gibt einen erweiterten umfassenderen Fehlerlog auf Basis der mit ATA-6 eingebrachten 48 bit LBA Register zur Ausgabe, sofern verfügbar.

Selbsttest-Log

-l selftest
Zeigt die letzten bis zu 21 Sebsttestergebnisse. Enthalten ist der Typ des Tests (short, extended (für long), selective, offline oder captive) und der endgültige Status. Schlug der Test fehl, wird der verbleibende Rest in Prozent und der erste fehlerhafte LBA gezeigt. Weiterhin wird auch hier die zum Test aktuelle Betriebszeit angegeben.
Anmerkung: Bei SCSI ist diese Anzeige etwas anders aufgebaut, mehr dazu steht in der Manpage.
Beispiel:
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     11539         -
# 2  Conveyance offline  Completed without error       00%      9723         -
# 3  Extended offline    Completed without error       00%      8659         -
# 4  Extended offline    Completed without error       00%      5940         -
# 5  Extended offline    Completed without error       00%      2673         -
# 6  Short captive       Interrupted (host reset)      90%      1723         -
# 7  Short offline       Completed without error       00%      1697         -
# 8  Extended offline    Completed without error       00%      1427         -
# 9  Extended offline    Completed without error       00%       947         -
#10  Short offline       Completed without error       00%       481         -
#11  Short offline       Completed without error       00%       125         -
-l xselftest
Gibt den erweiterten Selbsttestlog aus, ansonsten wird wird der normale gezeigt. Dieser unterstützt 48 Bit LBA benutzt mehr als einen Sektor für die Logs. Wie viele Log-Sektoren benutzt werden ist vom Hersteller abhängig.

selektiv Selbsttest-Log

-l selective
Er zeigt maximal fünf „spans“ mit ihren start- und end-LBAs und dem aktuellen Bearbeitungsstatus.
Beispiel:
=== START OF READ SMART DATA SECTION ===
SMART Selective self-test log data structure revision number 1
 SPAN    MIN_LBA    MAX_LBA  CURRENT_TEST_STATUS
    1         64     100063  Not_testing
    2   12213545   12228000  Not_testing
    3   12220000   12304999  Not_testing
    4  212808000  214064889  Not_testing
    5  311002356  312581807  Self_test_in_progress [50% left] (311798888-311864423)
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Gut zu erkennen sind fünf gleichzeitig aufgerufene, sich teils überlappende, spans und der Fortschritt des Letzten.

Smartmontools Geräte-Datenbank aktualisieren

Smartcl und smartd nutzen eine Datenbank um dort Hersteller, Modelle und Modellspezifische RAW-Konvertierungen für die Anzeige auszulesen. Bis zur Version 5.40 wurde diese nur über den ausgelieferten Quellcode oder das Paket einer neuen Version aktualisiert. Ab dieser Version gibt es ein update-Skript namens „update-smart-drivedb“ unter /usr/sbin/. Die Datenbank selbst ist eine Header Datei unter /usr/share/smartmontools/drivedb.h, welche mit dem Skript aktualisiert wird.

Ab Debian Squeeze kann man diese als root aktualisieren:

root@debian:~# update-smart-drivedb

SSDs und spezielles

SSD

SSDs funktionieren intern grundlegend anders als mechanische Festplatten. Da sie als Nachfolger an die selben Schnittstellen wie EIDE, SATA, SCSI, SAS, PCIe angebunden sind und Protokolle wie ATA und SCSI sprechen, sowie ebenfalls einer Alterung, auch in Abhängigkeit von der Nutzung und Umgebung, unterliegen, unterstützen sie SMART. Bei den ersten auf dem Markt befindlichen Modellen konnte es durch Firmwarefehler zu Problemen mit einigen SMART Abfragen kommen. Die Smartmontools unterstützen diese offiziell also erst mit der Version 5.40. Spezielle SSD-Logs und -Indikatoren für wenige Controller lassen sich erst mit Version 5.42 auslesen (-ldevstat und -lssd). Neue Modelle und deren Attribute-Anzeigenaufbereitung sind nun mit der aktualisierbaren Laufwerksdatenbank drivesdb.h schnell korrekt auslesbar.

-l devstat[,PAGE]
Gibt Werte und deren Beschreibung vom „ATA Device Statistics log“ aus. Mit „PAGE“ 0 erscheint eine Liste aller verfügbarer Seiten. Da diese SSD-spezifischen Gerätestatistiken erst mit ATA-8 ACS eingeführt wurden, gibt es bisher nur wenige Geräte mit diesen. Darunter Intel SSDs der Serie 320 und 710. Es scheint ein Anlauf zu standardisierten SMART-Attribut-ähnlichen Informationen zu sein.
Im Standard ACS -2, Dokument T13/2015-D Revision 1a ist eine Tabelle möglicher Statistik-Seiten abgebildet:
Seite (hex)	Beschreibung
00h		List of supported pages
01h		General Statistics
02h		Free Fall Statistics
03h		Rotating Media Statistics
04h		General Errors Statistics
05h		Temerature Statistics
06h		Transport Statistics
07h		Solid State Device Statistics
08h … ffh	Reserved
-l ssd
Gibt die o.g. Seite 7 „Solid State Device Statistics“ aus. Hat daher den selben Effekt wie „-l devstat,7“.

SCT Temperatur

SCT - „SMART Command Transport Protokoll“ ist eine Erweiterung zu SMART und Teil des ATA Standards. Mit SCT lassen sich zusätzliche Seiten mit Informationen zu Temperaturprofilen, Laufwerkszugriffsstatistiken oder SATA Bus Link Fehlern anzeigen. Über die SMART Fähigkeiten (mit „-c“) werden dieverfügbaren SCT-Funktionen angezeigt.

SCT capabilities:              (0x103f) SCT Status supported.
                                       SCT Error Recovery Control supported.
                                       SCT Feature Control supported.
                                       SCT Data Table supported.

Folgende smartctl Kommandos gibt es seit der Version 5.38 und damit Debian Lenny.

-l scttempsts
Gibt die über SCT ermittelte aktuelle und maximale Temperatur, sowie den Gerätestatus aus.
Beispiel von einer WD1600AABS:
=== START OF READ SMART DATA SECTION ===
SCT Status Version:                  2
SCT Version (vendor specific):       256 (0x0100)
SCT Support Level:                   1
Device State:                        SMART Off-line Data Collection executing in background (4)
Current Temperature:                 31 Celsius
Power Cycle Max Temperature:         32 Celsius
Lifetime    Max Temperature:         59 Celsius
-l scttemphist
Zeigt das Temperatur-Messintervall, die empfohlenen min/max Temperaturen, die min/max Temperatur-Grenzwerte, die Zahl der Einträge im Log und das Log selbst. Smartctl kürzt der Übersichtlichkeit wegen Bereiche mit exakt den selben Werten und gibt an, wie viele das betrifft.

Ein Beispiel mit obiger HDD:

=== START OF READ SMART DATA SECTION ===
SCT Temperature History Version:     2
Temperature Sampling Period:         1 minute
Temperature Logging Interval:        1 minute
Min/Max recommended Temperature:      5/60 Celsius
Min/Max Temperature Limit:           -40/65 Celsius
Temperature History Size (Index):    128 (122)

Index    Estimated Time   Temperature Celsius
 123    2011-11-24 17:08    30  ***********
 ...    ..( 18 skipped).    ..  ***********
  14    2011-11-24 17:27    30  ***********
  15    2011-11-24 17:28    31  ************
  16    2011-11-24 17:29    30  ***********
  17    2011-11-24 17:30    31  ************
 ...    ..(  8 skipped).    ..  ************
  26    2011-11-24 17:39    31  ************
  27    2011-11-24 17:40    30  ***********
  28    2011-11-24 17:41    30  ***********
  29    2011-11-24 17:42    31  ************
  30    2011-11-24 17:43    30  ***********
  31    2011-11-24 17:44    31  ************
  32    2011-11-24 17:45    30  ***********
  33    2011-11-24 17:46    31  ************
 ...    ..(  5 skipped).    ..  ************
  39    2011-11-24 17:52    31  ************
  40    2011-11-24 17:53    30  ***********
  41    2011-11-24 17:54    31  ************
 ...    ..(  7 skipped).    ..  ************
  49    2011-11-24 18:02    31  ************
  50    2011-11-24 18:03    30  ***********
  51    2011-11-24 18:04    30  ***********
  52    2011-11-24 18:05    31  ************
 ...    ..(  8 skipped).    ..  ************
  61    2011-11-24 18:14    31  ************
  62    2011-11-24 18:15    30  ***********
  63    2011-11-24 18:16    31  ************
  64    2011-11-24 18:17    31  ************
  65    2011-11-24 18:18    30  ***********
  66    2011-11-24 18:19    32  *************
  67    2011-11-24 18:20    31  ************
 ...    ..( 54 skipped).    ..  ************
 122    2011-11-24 19:15    31  ************
-l scttemp
Kombiniert die Ausgabe von „scttempsts“ und „scttemphist“.
-t scttempint,N[,p]
Wurde seit Version 5.42 durch „-l scttempint,N[,p]“ ersetzt!
Setzt das SCT Temperatur-Messintervall auf N Minuten- Mit „p“ bleibt der Wert auch über Einschaltzyklen erhalten. Gleichzeitig wird dadurch die Temperaturtabelle gelöscht.

RAID Schreib,- Lesezeitlimit

Oben beschriebenes SCT bietet ein „SCT Error Recovery Control“, was äquivalent zu WD's TLER, Samsung's/Hitachi's CCTL und Seagate's ERC funktioniert.

-l scterc[,READTIME,WRITETIME]
Damit wird die Zeit für lese- (READTIME) und Schreiboperationen (WRITETIME) limitiert. Die Angabe erfolgt in Dezisekunden. Für normale RAID Konfigurationen werden 70,70 (7 Sekunden) empfohlen.
smartctl  -lscterc,70,70 /dev/sdc
SCT Error Recovery Control set to:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)


Alle SMART-Informationen

Smartctl kann alle aufgeführten Informationen der einzelnen Optionen auf einmal ausgeben.

-a, --all
Für ATA eine Zusammenfassung folgender Optionen: „-H -i -c -A -l error -l selftest -l selective“
-x, --xall
Wie „-a“, nur mit zusätzlichen nicht-SMART Informationen (SCT, directory Log usw.). Äquivalent zu: „-H -i -c -A -f brief -l xerror,error -l selftest,selftest -l selective -l directory -l scttemp -l scterc -l sataphy“

Kontinuierliche Festplattenüberwachung

Nun ist es unzumutbar, regelmäßig smartctl manuell aufzurufen und Änderungen bzw. Fehler auszumachen. Diese Aufgabe übernimmt der mitgelieferte Dienst smartd. Er lässt sich präzise konfigurieren und bietet vielerlei Funktionen.

Grundeinrichtung

Damit der Dienst überhaupt automatisch gestartet wird, muss in der Datei /etc/default/smartmontools „start_smartd=yes“ auskommentiert, also das „#“ entfernt, werden. Mit „smartd_opts“ können smartd weitere Optionen übergeben werden. In der Datei ist „--interval=1800“ als Beispiel eingetragen. Das ist Standardeinstellung und bewirkt, dass smartd alle 1800 Sekunden, also alle 30 Minuten, die konfigurierten Festplatten abfragt - was einem Check-Zyklus entspricht. Wenn die Konfigurationsdatei /etc/smartd.conf eingerichtet ist, kann smartd über folgendes Init-Skript manuell gestartet werden:

root@debian:~# /etc/init.d/smartmontools start

Ansonsten startet dieser beim nächsten Systemstart automatisch.

Konfiguration

Die Konfigurationsmöglichkeiten von smartd sind dermaßen umfangreich, das auf eine komplette Erläuterung hier nicht eingegangen wird. Neben den meisten von smartctl bekannten Optionen gibt es zusätzliche welche für spezifische Meldungen im Syslog, für ereignisabhängige Meldungen per Mail oder das Starten von externen Skripten sowie für das zeitlich planbare Ausführen von verschiedenen Selbsttests. Es wird hier nur auf wenige Besonderheiten und Beispiele eingegangen.

Ein Ausschnitt aus der Konfigurationsdatei mit einer kurzen Übersicht der wichtigsten Optionen:

# HERE IS A LIST OF DIRECTIVES FOR THIS CONFIGURATION FILE.
# PLEASE SEE THE smartd.conf MAN PAGE FOR DETAILS
#
#   -d TYPE Set the device type: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N
#   -T TYPE set the tolerance to one of: normal, permissive
#   -o VAL  Enable/disable automatic offline tests (on/off)
#   -S VAL  Enable/disable attribute autosave (on/off)
#   -n MODE No check. MODE is one of: never, sleep, standby, idle
#   -H      Monitor SMART Health Status, report if failed
#   -l TYPE Monitor SMART log.  Type is one of: error, selftest
#   -f      Monitor for failure of any 'Usage' Attributes
#   -m ADD  Send warning email to ADD for -H, -l error, -l selftest, and -f
#   -M TYPE Modify email warning behavior (see man page)
#   -s REGE Start self-test when type/date matches regular expression (see man page)
#   -p      Report changes in 'Prefailure' Normalized Attributes
#   -u      Report changes in 'Usage' Normalized Attributes
#   -t      Equivalent to -p and -u Directives
#   -r ID   Also report Raw values of Attribute ID with -p, -u or -t
#   -R ID   Track changes in Attribute ID Raw value with -p, -u or -t
#   -i ID   Ignore Attribute ID for -f Directive
#   -I ID   Ignore Attribute ID for -p, -u or -t Directive
#   -C ID   Report if Current Pending Sector count non-zero
#   -U ID   Report if Offline Uncorrectable count non-zero
#   -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit
#   -v N,ST Modifies labeling of Attribute N (see man page)
#   -a      Default: equivalent to -H -f -t -l error -l selftest -C 197 -U 198
#   -F TYPE Use firmware bug workaround. Type is one of: none, samsung
#   -P TYPE Drive-specific presets: use, ignore, show, showall
#    #      Comment: text after a hash sign is ignored
#    \      Line continuation character
# Attribute ID is a decimal integer 1 <= ID <= 255
# except for -C and -U, where ID = 0 turns them off.
# All but -d, -m and -M Directives are only implemented for ATA devices

Festplattenauswahl

In der Konfigurationsdatei /etc/smartd.conf gibt es ausführliche Erläuterungen und Beispiele. Noch mehr erfährt man in der Manpage zu dieser Datei:

user@debian:~$ man smartd.conf

Eine Konfiguration besteht entweder aus einer Zeile pro Festplatte oder eine einzige für alle. Diese beginnen normal mit dem entsprechenden Geräteknoten, wie z.B. /dev/sda. Anstatt dieser gibt es die Anweisung DEVICESCAN, welche wie gesagt alle vorhandenen im System anspricht. Alle darunter aufgeführten Konfigurationszeilen werden dann allerdings ignoriert. Der Vorteile von DEVICESCAN ist, man benötigt nur eine Zeile für alle Festplatten. Was zugleich ein Nachteil sein kann, wenn sich Festplatten hinter einem HW-RAID befinden oder einzelne unterschiedlich beobachtet werden sollen. DEVICESCAN wird wahrscheinlich im noch weit entfernten 6.0 Release durch "etwas dynamischeres" ersetzt, was diese Einschränkungen nicht mehr hat.

Auch sollte man beachten, dass Festplatten nach einem Neustart anderen Devicenamen zugeordnet sein können, als zuvor konfiguriert. In diesem Fall sollten die beim Start von udev dynamisch erzeugten symbolischen Links unter /dev/disk/by-* verwendet werden. Mögliche Beispiele wären:

/dev/sdc
/dev/disk/by-ata-ST3160212SCE_5LSC7PMV
DEVICESCAN

Tipps

Jede Anwendung von smartctl oder smartd auf eine schlafende Festplatte, mit geparkten Köpfen, weckt diese unweigerlich auf. Mit smartd passiert das bei jedem Check, also standardmäßig alle 30 Minuten.

-n POWERMODE[,N][,q]
POWERMODE kann sein:
never – Das ist Standardeinstellung, sie bewirkt auf jeden Fall ein Aufwecken.
sleep – Liest das Laufwerk aus, es sei denn, es ist im Sleep-Modus.
standby – Liest es nicht aus, wenn es entweder im Sleep- oder Standby Modus ist.
idle - Liest es nicht aus, wenn es im Sleep, Standby oder Idle Modus ist.
Die Zahl N gibt an, wie oft das Laufwerk also aufgrund des Gerätestatus übergangen werden muss, bis es geweckt, also ausgelesen wird. „q“ verhindert selbst den entsprechenden Vermerkt im Syslog, dass eine Festplatte aufgrund der Einstellung übergangen wurde.
Möchte man also verhindern, dass weder ein Aufwecken aus dem Festplatten-Standby noch ein entsprechender Logeintrag geschrieben wird, dann muss das in der smartd.conf ergänzt werden:
-n standby,q

Beispiele

Die Konfigurationsdatei ist weitgehend selbsterklärend. Deshalb hier nur einige Beispiele.

Beispiel 1
/dev/hda -a -I 194 -W 3,45,54 -R 5 -r 5 -n standby,10 -m user -s (O/../.././06|S/../../6/03|L/../(01|15)/./03)
-a
Beobachtet den Health-Indikator, alle Attribute bei Fehlschlägen und deren Änderungen der normalisierten Werte, Error- und Selftest Log und ob Current Pending Sector count sowie Offline Uncorrectable count größer als 0 sind.
-I 194
Ignoriert Änderungen der normalisierten Temperaturwerte.
-W 3,45,54
Informiert, wenn die Temperatur sich um 3 °C geändert hat, über 45 °C steigt und warnt bei 54 °C als kritischem Wert.
-r 5, -R 5
Zeigt auch den Raw-Wert der Reallocated_Sector_Ct und meldet Änderungen.
-n standby,10
Fragt die Festplatte 10 mal nicht ab, wenn sie sich im Standby befindet. Bei 30 Minuten * 10 = 300 Minuten sind das 5 Stunden, die sie durch keinen smartd-Check geweckt wird.
-m user
Schickt eine Mail bei Fehlern an user@localhost. Bei Nichtangabe des Host wird localhost verwendet.
s (O/../.././06|S/../../6/03|L/../(01|15)/./03)
Führt einen direkten Offline-Test jeden Tag 6 Uhr; einen short-selftest jeden Samstag 3 Uhr und einen long-selftest jeden 1. und 15. des Monats 3 Uhr aus.
Beispiel 2
DEVICESCAN -a -I 194 -W 3,45,54 -R 5 -r 5 -u -n standby,24 -m ich -s (O/../.././(00|06|12|18)|L/../20/./05)

Analog zu oben wird hier jede Festplatte mittels DEVICESCAN gleich behandelt. Ein direkter Offline-Test wird jeden Tag 0,- 6,- 12,- und 18 Uhr, ein long-selftest jeden 20. des Monats um 5 Uhr gestartet.

Beispiel 3
DEVICESCAN -a -I 194 -W 5,45,55 -r 5 -R 5 -n standby,24 -m root@localhost -M exec /root/bin/smartmail.sh \
-s (O/../.././(06|18)|S/../../6/06|L/../20/./05)

Das entscheidende hier ist das angegebene Skript /root/bin/smartmail.sh. Im Fehlerfall ruft smartd dieses Skript auf, anstatt eine Mail direkt zu versenden. Dieses Beispielskript erzeugt man mit:

root@debian:~# mkdir /root/smart /root/bin
root@debian:~# vim /root/bin/smartmail.sh
root@debian:~# chmod +x /root/bin/smartmail.sh

und befüllt es hiermit:

#! /bin/bash
# -m root@localhost -M exec /path/to/this/file
# Save the email message (STDIN) to a file:
cat > /root/smart/msg
echo -e "\n===SMART DATA===\n" >>/root/smart/msg

# Append the output of smartctl -a to the message:
/usr/sbin/smartctl -a -d $SMARTD_DEVICETYPE $SMARTD_DEVICE >> /root/smart/msg

# Now email the message to the user at address ADD.  Solaris and
# other OSes may need to use /bin/mailx below.
/usr/bin/mail -s "$SMARTD_SUBJECT on $SMARTD_DEVICE" $SMARTD_ADDRESS < /root/smart/msg

Wenn zum Test keine defekte Festplatte griffbereit ist, kann man sich mit dieser schmutzigen Methode behelfen. Im Postfach hat man dann eine (oder mehrere) eMail mit beispielsweise folgendem Betreff und der kompletten smartctl -a Ausgabe in der Nachricht:

SMART error (CurrentPendingSector) detected on host: server on /dev/sdc
Beispiel 4
/dev/disk/by-id/ata-ST64022CF_4NW05B2S -a -I 194 -W 4,45,55 -R 5 -m root -s (O/../.././(06|18)|S/../../6/06|L/../20/./05)
/dev/disk/by-id/ata-WDC_WD800VE-07HDT0_WD-WXE206732762 -a -I 194 -W 4,45,55 -R 5 -n standby,48 -m root -s (S/../../6/06|L/../20/./05 )

Unterschiedliche Beobachtungsregeln für zwei Festplatten. Die IDs sind von udev dynamisch angelegte Symlinks, welche immer auf die angegebene Festplatte zeigen, auch wenn sich die Devicenamen zufällig bei jedem Boot ändern.

Attributelog

Diese Funktion von smartd gibt es erst seit Version 5.39. Dabei werden standardmäßig Datum, Zeit, Raw- und normalisierter Wert in eine CSV Datei unter /var/lib/smartmontools/attrlog.MODEL-SERIAL.ata.csv geschrieben. Pro Zeile sieht das Format der Semikolon-getrennten Werte pro Zeile so aus:

yyyy-mm-dd HH:MM:SS;attribute-ID;attribute-norm-value;attribute-raw-value;...

Dabei sind so viele Attribute enthalten, wie SMART für diese Festplatte ausgibt. Wenn man ausdrücklich nicht möchte, dass diese Dateien geschrieben werden, dann muss dies in der Datei /etc/default/smartmontools angegeben werden:

# uncomment to pass additional options to smartd on startup
smartd_opts="—interval=1800 -A "" "

Damit lässt sich übrigens der Pfad der zu erstellenden Dateien festlegen. Hier sind die Ideen des Autors einzulesen.

Ein Blick nach /var/lib/smartmontools/:

user@debian:~$ ls -l /var/lib/smartmontools/
insgesamt 2508
-rwxr-xr-x 1 root root  19222 10. Nov 04:19 attrlog.ST3160022ACE-5JS5CJF8.ata.csv
-rw-r--r-- 1 root root  83250 25. Nov 03:12 attrlog.ST3160212SCE-5LSD6ERD.ata.csv
-rw-r--r-- 1 root root 594826 10. Aug 17:35 attrlog.ST3160212SCE-5LSD6RS0.ata.csv
-rw-r--r-- 1 root root 680780 25. Nov 03:12 attrlog.ST3160212SCE-5LSDE7TS.ata.csv
-rw-r--r-- 1 root root   1422 22. Aug 15:50 attrlog.ST3160212SCE-5LSFH6QS.ata.csv
-rw-r--r-- 1 root root  69778 25. Nov 03:12 attrlog.ST3250823ACE-5ND13Q5X.ata.csv
-rw-r--r-- 1 root root 477954  8. Aug 18:03 attrlog.WDC_WD1600AABS_55PRA0-WD_WMAP92118211.ata.csv
-rw-r--r-- 1 root root  65882 25. Nov 03:12 attrlog.WDC_WD800BB_55JKC0-WD_WCAMD6028263.ata.csv
-rw-r--r-- 1 root root 446632 10. Aug 17:35 attrlog.WDC_WD800LB_55DNA0-WD_WMADW1464686.ata.csv
-rw-r--r-- 1 root root   1809 10. Nov 04:27 smartd.ST3160022ACE-5JS5CJF8.ata.state
-rw-r--r-- 1 root root   1809  9. Nov 23:49 smartd.ST3160022ACE-5JS5CJF8.ata.state~
-rw-r--r-- 1 root root   2116 24. Nov 21:32 smartd.ST3160212SCE-5LSD6ERD.ata.state
-rw-r--r-- 1 root root   2077 24. Nov 21:32 smartd.ST3160212SCE-5LSD6ERD.ata.state~
-rw-r--r-- 1 root root   2454 10. Aug 17:59 smartd.ST3160212SCE-5LSD6RS0.ata.state
-rw-r--r-- 1 root root   2454 10. Aug 17:35 smartd.ST3160212SCE-5LSD6RS0.ata.state~
-rw-r--r-- 1 root root   2269 24. Nov 21:32 smartd.ST3160212SCE-5LSDE7TS.ata.state
-rw-r--r-- 1 root root   2230 24. Nov 21:32 smartd.ST3160212SCE-5LSDE7TS.ata.state~
-rw-r--r-- 1 root root   2037 22. Aug 15:59 smartd.ST3160212SCE-5LSFH6QS.ata.state
-rw-r--r-- 1 root root   2037 22. Aug 13:20 smartd.ST3160212SCE-5LSFH6QS.ata.state~
-rw-r--r-- 1 root root   1844 24. Nov 21:32 smartd.ST3250823ACE-5ND13Q5X.ata.state
-rw-r--r-- 1 root root   1805 24. Nov 21:32 smartd.ST3250823ACE-5ND13Q5X.ata.state~
-rw-r--r-- 1 root root   1931  8. Aug 18:09 smartd.WDC_WD1600AABS_55PRA0-WD_WMAP92118211.ata.state
-rw-r--r-- 1 root root   1931  8. Aug 18:03 smartd.WDC_WD1600AABS_55PRA0-WD_WMAP92118211.ata.state~
-rw-r--r-- 1 root root   1747 24. Nov 21:32 smartd.WDC_WD800BB_55JKC0-WD_WCAMD6028263.ata.state
-rw-r--r-- 1 root root   1708 24. Nov 21:32 smartd.WDC_WD800BB_55JKC0-WD_WCAMD6028263.ata.state~
-rw-r--r-- 1 root root   1822 10. Aug 17:59 smartd.WDC_WD800LB_55DNA0-WD_WMADW1464686.ata.state
-rw-r--r-- 1 root root   1822 10. Aug 15:35 smartd.WDC_WD800LB_55DNA0-WD_WMADW1464686.ata.state~

Die *.state- und *.state~- Dateien dienen smartd zum Zwischenspeichern der zuletzt gelesenen Attribute und ermöglichen erst so einen Vergleich zu aktuellen Werten, woraus erst die eingestellten Warnungen resultieren können.

Man wird feststellen, dass alle raw-Werte wirklich so gespeichert werden, wie sie SMART der Festplatte ausgegeben hat. Smartctl bereitet, wie bereits erwähnt, die Ausgabe anhand der drivedb.h auf. Was das bedeutet und warum einige raw-Werte bei manchen Modellen so gefährlich hoch scheinen, sehen wir an diesen Beispielen:

IBM/Hitachi - Eine Zeile einer Hitachi SATA Festplatte:

2011-11-28 00:50:46;1;100;0;2;168;161;3;98;38687867385;4;100;962;5;100;0;7;100;0;8;132;33;9;98;14269;10;100;0;12;100;759;192;99;1511;
193;99;1511;194;187;253403267104;196;100;0;197;100;0;198;100;0199;200;0;

Alle Attribute (auch die Betriebsstunden bei #9) stimmen mit der smartctl-Ausgabe überein, außer #3 Spin_Up_Time und #194 Temperature_Celsius. Das Geheimnis lüftet das umwandeln der Dezimalzahlen in das hexadezimale System. Es handelt sich um 48 Bit Zahlen, also 6 Byte.

  • #3 38687867385 ->0x901FA01F9

Hier verstecken sich drei 16 Bit Werte: 0x1F9 (505), 0x1FA (506) und 0x9 (9)

  • #194 253403267104 ->0x3B00030020

Bei der Temperatur sind es ebenfalls drei: 0x20 (32), 0x3 (3) und 0x3B (59) Die smartctl-Attributanzeige zur gleichen Zeit offenbart die Bedeutung:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  3 Spin_Up_Time            0x0007   098   098   024    Pre-fail  Always       -       505 (Average 506)
194 Temperature_Celsius     0x0002   187   187   000    Old_age   Always       -       32 (Min/Max 3/59)

Seagate - Typische Werte einer Seagate Festplatte:

2011-11-27 11:20:56;1;105;8895623;3;93;0;4;99;1317;5;100;0;7;69;8935041;9;87;12241;10;100;0;12;99;1157;187;100;0;189;100;0;
190;71;505151517;194;29;17179869213;195;99;242732737;197;100;0;198;100;0;199;200;395;200;100;0;202;100;0;

Bekanntlich sind die raw-Attribute 1 Raw_Read_Error_Rate, 7 Seek_Error_Rate und 195 Hardware_ECC_Recovered sehr hoch. Interessant sind noch 190 Airflow_Temperature_Cel und 194 Temperature_Celsius. Die ersten drei sind Hexadezimal besser zu bewerten. Es gibt den Ansatz die oberen 16/24 Bit der Zahl der Fehler und die unteren 32 Bit die Zahl aller Ereignisse zuzuordnen.

  • #1 8895623 ->0x87BC87

Keine (0) Fehler bei 8895623 Lesevorgängen.

  • #7 8935041 ->0x885681

Hier also 0 seek-error bei 8935041 seeks.

  • #195 242732737 ->0xE77CEC1

Kein (0) Fehler bei 242732737 Vorgängen.

  • #190 505151517 ->0x1E1C001D

Es scheinen zwei 8 Bit und ein 16 Bit Wert zu sein: 0x1D (29), 0x1C (28) und 0x1E (30)

  • #194 17179869213->0x40000001D

Bei der Temperatur kann man von wenigstens einem 16 Bit Wert ausgehen. Die anderen ergeben sich mithilfe der smartctl-Ausgabe zu 0x1D (30), 0x0 (0), 0x0 (0), 0x4 (4) und eine weitere 0x0 (0).

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   105   099   006    Pre-fail  Always       -       8895623
  7 Seek_Error_Rate         0x000f   069   060   030    Pre-fail  Always       -       8938087
190 Airflow_Temperature_Cel 0x0022   071   044   045    Old_age   Always   In_the_past 29 (Min/Max 28/30)
194 Temperature_Celsius     0x0022   030   056   000    Old_age   Always       -       30 (0 4 0 0 0)
195 Hardware_ECC_Recovered  0x001a   099   053   000    Old_age   Always       -       242734324

Seek_Error_Rate von smartctl umrechnen und anzeigen lassen: Aus einer Seek_Error_Rate = 12893012547 wird:

root@debian:~# smartctl -A -v 7,raw24/raw32 /dev/sda
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  7 Seek_Error_Rate         0x000f   064   055   030    Pre-fail  Always       -       3/8110723

Ideen zur Berechnung der normalisierten Werte und deren Bedeutung findet man in diesem Beitrag des Seagate-Forums.

Kurzanleitung zur Fehlersuche und Reparatur

Wie sich ein Festplattendefekt auswirkt, hängt stark davon ab, welchem Typ er angehört und für welche Aufgabe die Festplatte wie eingesetzt wurde. Nicht lesbare Sektoren wirken sich in einem RAID anders aus, als auf der Systemplatte eines Desktop-PCs. Der häufigste Fehler bei Festplatten sind schlechte Sektoren, die ausgelagert werden und deren Zahl i.d.R. zunimmt. Bevor aber ein Sektor ausgelagert, durch einen Neuen ersetzt, wird, muss dieser von Außen beschrieben werden. Dabei geht immer der Inhalt des Alten verloren! Es gibt zwei Kategorien für nicht lesbare Sektoren:

  • behebbare
  • unbehebbare

Zu letzteren zählen die eben beschriebenen, physikalisch defekten. Behebbare sind Sektoren, deren Inhalt oder Fehlerkorrekturinformationen (ECC) durch diverse Ursachen korrumpiert wurden und beim Lesen deswegen nicht mehr komplett rekonstruiert werden können, also als „UNCorrectable“ gemarkt werden. Mit einem erneuten Schreibvorgang werden Sektorinhalt und Fehlerkorrektur wieder korrekt geschrieben.

Zur Reparatur werden einige zusätzliche Programme benötigt.

Hinweis.png Hinweis: Ist nur eine Systemfestplatte verbaut und z.B. das Dateisystem muss verändert werden, dann sollte man eine Live-CD wie Grml verwenden.


Symptom

Befindet sich ein schlechter, nicht lesbarer, Sektor ganz am Anfang der Festplatte, kann es sein, dass der Bootloader oder die Partitionstabelle beschädigt ist und z.B. das BIOS plötZlich meldet, es sei kein System vorhanden. Nicht lesbare Sektoren können in freien, ungenutzten Bereichen zwischen oder auf dem Dateisystem oder in der Verwaltungsstruktur liegen. Das Resultat wäre Inkonsistenz, die entweder durch einen Dateisystemcheck behebbar ist oder auch nicht. So etwas kann sich zum Systemstart, oder während es läuft, bemerkbar machen.

Typische Symptome können beispielsweise sein:

  • das BIOS möchte auf einmal kein System mehr booten
  • beim Systemstart meldet fsck wiederholt Dateisystemfehler; der Arbeitsspeicher ist nachweislich ok
  • Kopiervorgänge von- oder auf eine Festplatte brechen unter Verwendung verschiedener Programme mit I/O-Fehlern ab
  • Dateizugriffe dauern lange oder Dateien werden fehlerhaft
  • die RAID Verwaltungssoftware oder dessen BIOS melden Fehler und nehmen eine Festplatte aus dem Verbund
  • smartd oder andere Programme melden Fehler

Diagnose

Die erste Quelle, um der Ursache auf die Spur zu kommen sind die Meldungen des Kernels oder dessen Module im Syslog. Die Meldungen können ähnlich denen sein:

ata3.00: status: { DRDY ERR }
ata3.00: error: { UNC }
ata3.00: configured for UDMA/133
ata3.01: configured for UDMA/133
ata3: EH complete
ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata3.00: BMDMA stat 0x65
ata3.00: failed command: READ DMA EXT
ata3.00: cmd 25/00:70:08:e9:1c/00:03:71:00:00/e0 tag 0 dma 450560 in
res 51/40:d0:a8:ea:1c/40:01:71:00:00/01 Emask 0x9 (media error)

Von Bedeutung sind (media error) und UNC - UNCorrectable Error in Data. „UNC“ zeigt deutlich an, es gibt wenigstens einen nicht lesbaren Sektor.

Meldungen wie diese haben eine andere Ursache:

ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 
ata1.01: BMDMA stat 0x4 
ata1.01: failed command: READ DMA 
ata1.01: cmd c8/00:1e:bf:10:ad/00:00:00:00:00/f3 tag 0 dma 15360 in 
ata1.01: status: { DRDY ERR } 
ata1.01: error: { ICRC ABRT } 
ata1: soft resetting link

Die „ICRC ABRT“ bedeuten, dass Fehler bei der Übertragung von der Festplatte zum ATA Controller statt finden. Bei (E)IDE Laufwerken ist ein 80-poliges Kabel einem 40-poligen durch die bessere Schirmung vorzuziehen, wenn der Chipsatz die höheren UDMA-Übertagungsmodi unterstützt. Bei SATA ist auf festen Sitz der Stecker zu achten. Gute Kabel mit einschnappenden Arretierungen sind unbedingt einzubauen.

Taucht also der Hinweis auf schlechte Sektoren im Syslog auf, so ist herauszufinden, welche Festplatte betroffen ist. Im SMART error-log zeigen sich die selben UNC-Fehler:

Error 4 occurred at disk power-on lifetime: 145 hours (6 days + 1 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ca 58 9d e0  Error: UNC at LBA = 0x009d58ca = 10311882

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  20 00 01 ca 58 9d e0 00      00:38:41.325  READ SECTOR(S)
  60 40 40 00 00 00 00 00      00:38:41.324  READ FPDMA QUEUED
  60 20 20 00 00 00 00 00      00:37:50.397  READ FPDMA QUEUED
  60 20 00 00 00 00 40 00      00:46:44.127  READ FPDMA QUEUED
  b0 d5 01 06 4f c2 00 00      00:46:19.819  SMART READ LOG

Davon verursacht sollten die SMART Attribute Current_Pending_Sector und Offline_Uncorrectable raw-Werte größer 0 aufweisen. Reported_Uncorrect zählt alle Vorgänge der unkorrekt-Meldungen. Beispielsweise:

root@debian:~# smartctl -A /dev/sdd
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
187 Reported_Uncorrect      0x0032   098   098   000    Old_age   Always       -       2
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1

Reported_Uncorrect: Zwei mal wurde ein Sektor bisher als schlecht (unkorrekt) gemeldet. Aktuell betrifft es einen Sektor, was diesen unter Current_Pending_Sector auch zum auslagern-bereit listet.

Reallocated_Sector_Ct zeigt, ob und wie viele bereits ausgelagert wurden, Reallocated_Event_Count wie viele Auslagerungs-Vorgänge dafür nötig waren. Hier ein Extrembeispiel, bei dem nahezu alle Reservesektoren aufgebraucht sind und der Grenzwert schon längst unterschritten wurde - Alarm:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   002   002   036    Pre-fail  Always   FAILING_NOW 4015

Nun sollte ein langer Lesetest angestoßen werden:

root@debian:~# smartctl -tlong /dev/sde

Den Status zeigt man sich am besten mit:

root@debian:~# smartctl -c /dev/sde | grep -A1 execution
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.

Bei Lesefehlern stoppt der Test und listet den ersten nicht lesbaren LBA im selftest log:

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%       145         10311882

Für einen Gesamtüberblick ist nach all dem eine komplette smartctl-Ausgabe nützlich, auch um diese bei Fragen im Forum auf NoPaste laden zu können:

root@debian:~# smartctl -a -q noserial /dev/sdd >smart.txt

Reparatur

Warnung.png Warnung: Spätestens hier wird empfohlen ein Backup der Festplatte, Partition oder wichtiger Dateien anzufertigen. Auch wenn enthaltene Dateisysteme durch Hardwarefehler defekt sind, bestehen noch Chancen die Daten zu retten. Für Kopien defekter Festplatten wird auf Vollständiges Sichern einer ganzen Platte verwiesen.


Für den Fall, dass es bisher nur einen oder ein wenig mehr unkorrigierbare Sektoren gibt, können diese unter Umständen ausgelagert werden, ohne die Festplatte komplett, und damit das Dateisystem, zu überschreiben. Wenn man die Nummer eines defekten LBAs weiß, kann man bestimmen, in welcher Partition und dann in welchem Dateisystemblock dieser sich befindet. Darauf basierend, welche Datei betroffen ist, denn der Inhalt des LBAs geht verloren. Diese Vorgehensweise ist ausführlich im Bad block HOWTO für die Dateisysteme ext2/ext3, reiserfs und ein LVM2 beschrieben.

Bei mehreren unkorrigierbaren Sektoren kann alternativ fsck ein ext2/3/4 Dateisystem mittels badblocks im „non-destructive read-write“ Modus schreiben. Dieser dauert allerdings sehr lange:

root@debian:~# e2fsck -vpcc /dev/sdd1

Ist ein Backup angefertigt und die Festplatte aus eventuellem RAID und/oder LVM Verbund entfernt, sollte man badblocks direkt aufrufen. Dabei wird sie mehrmals komplett mit Testmustern beschrieben (vier mal schreiben + lesen), was jegliche Partitionen und alle Daten löscht.

root@debian:~# badblocks -b 4096 -svwf -o /root/badblocks.txt /dev/sdx

Bei Erfolg sollte es keine auf Auslagerung wartenden Sektoren mehr geben, dafür entsprechende mehr ausgelagerte:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       12
197 Current_Pending_Sector  0x0032   200   196   000    Old_age   Always       -        0
198 Offline_Uncorrectable   0x0030   200   196   000    Old_age   Offline      -       0

Folgende Reparaturbeispiele können das Dateisystem zerstören, weil es ignoriert wird. Ansonsten genanntes Bad block HOWTO zu Rate ziehen. In obigem Beispiel konnte LBA 10311882 nicht korrekt gelesen werden. Hdparm ab Lenny kann einzelne Sektoren lesen und schreiben.

Anmerkung: Bisher nur mit einer Sektorgröße (LBA) von 512 Byte möglich, was für sehr neue Festplatten mit Advanced Format (AF) oder bei SSDs nicht optimal ist.

root@debian:~# hdparm --read-sector 10311882 /dev/sde

/dev/sde:
reading sector 10311882: FAILED: Input/output error

Dieser Leseversuch taucht sogleich im Kernel-Log auf:

ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata5.00: irq_stat 0x40000001
ata5.00: failed command: READ SECTOR(S)
ata5.00: cmd 20/00:01:ca:58:9d/00:00:00:00:00/e0 tag 0 pio 512 in
          res 51/40:00:ca:58:9d/00:00:00:00:00/e0 Emask 0x9 (media error)
ata5.00: status: { DRDY ERR }
ata5.00: error: { UNC }
ata5.00: configured for UDMA/133
ata5: EH complete

Normalerweise verwendet man dafür dd, doch bietet sich in dieser Konstellation auch hdparm an.

root@debian:~# hdparm --yes-i-know-what-i-am-doing --write-sector 10311882 /dev/sde

/dev/sde:
re-writing sector 10311882: succeeded

Ob es aktuell wirklich keine schlechten Sektoren mehr gibt, klärt ein weiterer Oberflächentest:

root@debian:~# smartctl -tlong /dev/sde 
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%       146         10311885

Im Beispiel gibt es gleich dahinter noch einen Lesefehler und der Test stoppt. Hdparm bestätigt das. Wobei die Lesefehler gleich bis zu Sektor 10311888 reichen, danach scheint es wieder ok.

root@debian:~# hdparm --read-sector 10311888 /dev/sde

/dev/sde:
reading sector 10311888: FAILED: Input/output error

Die beiden Attribute Current_Pending_Sector und Offline_Uncorrectable haben sich dementsprechend um 4 Sekoren erhöht Reported_Uncorrect ist insgesamt auf 6 gestiegen:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
187 Reported_Uncorrect      0x0032   094   094   000    Old_age   Always       -       6
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       4
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       4

Nach dem Nullen der 4 Sektoren, erneut einen langen Selbsttest starten. Der läuft endlich durch:

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%       147         -

Als Faustregel kann man sich merken, dass auf defekte und/oder ausgelagerte Sektoren bald mehr folgen werden. Es gibt zwar Ausnahmen, die sind aber selten und schon gar nicht vorhersehbar.

Hilfe im Forum

Hast Du Fragen zur Handhabung oder möchtest Du konkrete Hilfe beim Beurteilen des SMART-Zustandes einer Festplatte? Dazu einfach ein Thema im entsprechenden Unterforum eröffnen. Optimalerweise sind mitzuteilen Informationen zum verwendeten System, zur Hardwarekonstellation (wenn bekannt) und wenn möglich schon die komplette smartctl-Ausgabe.

Handelt es sich um mehrere Festplatten, dann gilt es die betreffende(n) zu ermitteln. Auf dieser vorsorglich SMART aktivieren:

root@debian:~# smartctl -son /dev/sdX

Dann die smartctl-Ausgabe auf NoPaste oder ähnliche kopieren und im Beitrag zugänglich machen:

root@debian:~# smartctl -a /dev/sdX >smart-sdX.txt

Die erzeugte Textdatei enthält nun die Ausgabe.

Links / Weiterführendes

SMART:

https://web.archive.org/web/20101122134255/http://www.seagate.com/docs/pdf/whitepaper/enhanced_smart.pdf

https://web.archive.org/web/20090521061913/http://www.seagate.com/docs/pdf/whitepaper/Enhanced_DST_Tech_Paper.pdf

https://web.archive.org/web/20120417102816/http://www.seagate.com/docs/pdf/whitepaper/smart_u8.pdf

https://web.archive.org/web/20060525014406/http://www.wdc.com/en/library/legacy/EIDE/79-850122.pdf

http://smartmontools.sourceforge.net/

https://www.smartmontools.org/wiki/BadBlockHowto

http://www.howtogeek.com/howto/37659/the-beginners-guide-to-linux-disk-utilities

http://wiki.ubuntuusers.de/festplattenstatus

http://ata.wiki.kernel.org/index.php/Libata_error_messages


Sammlung aller Attribute:

http://www.ariolic.com/activesmart/smart-attributes/

https://web.archive.org/web/20101113033156/http://www.siguardian.com/products/siguardian/on_line_help/s_m_a_r_t_attribute_meaning.html

https://web.archive.org/web/20170630123407/http://www.t13.org/Documents/UploadedDocuments/docs2005/e05148r0-ACS-SMARTAttributesAnnex.pdf

https://www.smartmontools.org/wiki/TocDoc#SMARTAttributes

http://de.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology

http://en.wikipedia.org/wiki/S.M.A.R.T.


Interessante Foren-Diskussionen:

mdadm Raid 5 resync badblocks

Debian startet nicht mehr

Gelegentliche ATA-Errors in syslog

HDD-Fehler / erste beschriebene Datei nach Booten?

SATA-Platte hat Schluckauf

HDD/SATA Controller Exception? Was ist kaputt?

wieder inconsistent filesystem structure

smartd : Fatal or unknown error

HD bootet langsam