Diagnose von Plattenproblemen

Festplatten halten nicht ewig. Jede Festplatte wird irgendwann einmal ausfallen, was im schlimmsten Fall den Totalverlust sämtlicher darauf enthaltener Daten bedeutet.

Die Frage ist nicht, ob Ihre Festplatte jetzt im Moment noch einwandfrei funktioniert. Die Frage ist, was Sie tun werden, wenn Ihre Festplatte sich für immer verabschiedet (und die Chancen dafür sind relativ hoch).

Haben Sie ein Backup Ihrer persönlichen Daten, wie z.B. Fotos, Schriftverkehr, Source Code, sonstige Arbeitsergebnisse? Befindet sich das Backup auf CD-ROM, DVD oder einer externen Festplatte?

Wenn nicht, fertigen Sie noch heute ein Backup an. Bewahren Sie das Backup in einem anderen Raum auf; möglichst in einem anderen Gebäude. Kaufen Sie sich eine ausreichend große externe Festplatte, die ausschließlich für Backup-Zwecke reserviert ist.

Die häufigste Fehlerursache scheint mir ein Schreib-/Lesefehler eines Sektors oder mehrerer aufeinanderfolgender Sektoren zu sein. Mechanische Probleme, wie etwa dass sich der Schreib-/Lesekopf nicht mehr bewegt, oder dass die Platte überhaupt nicht mehr anläuft, sind dagegen eher selten.

Diese Schreib-/Lesefehler bleiben oft unbemerkt. Bei den heutigen Plattenkapazitäten ist es gut möglich, dass der defekte Sektor in einer selten genutzten Datei zu liegen kommt. Erst wenn man wieder auf die Datei zugreifen will, erfährt man von dem Problem. Leider verschlimmern sich solche Probleme aber im Laufe der Zeit. Erst ist es nur ein Sektor, dann mehrere. Irgendwann ist ein Sektor in der Directorystruktur betroffen, dann kann es passieren, dass man ganze Verzeichnisse verliert, weil das Betriebssystem die Verzeichnisse nicht mehr wiederfindet (obwohl die Dateien selbst noch intakt sind).

harddisk

Deswegen sollte man seine Festplatten in gewissen Abständen überprüfen. Der einfachste Weg ist, den in jede moderne Festblatte eingebauten SMART (Self-Monitoring Analysis and Reporting Technology) Selbsttest auszuführen, oder wenigstens die SMART Statusinformationen abzufragen. Unter Linux wurden hierzu die "S.M.A.R.T. Monitoring Tools", die es übrigens auch in einer Windows Version gibt.

Bei manchen USB- oder FireWire Platten kann man leider nicht auf die SMART Statusinformationen zugreifen. Die entsprechenden Befehle werden nicht durch den USB- bzw. FireWire-Controller weitergereicht. In diesem Fall muss man die Festplatte aus dem Gehäuse ausbauen und direkt an einen PC anschließen.

S.M.A.R.T. Monitoring Tools installieren

Die S.M.A.R.T. Monitoring Tools stehen in einer Windows- und Linux-Version zur Verfügung. Für die Windows-Version gibt es einen Installer, die Linux-Version ist in praktisch jeder Distribution enthalten und kann z.B. unter Debian (auch Ubuntu oder Knoppix) mit

apt-get install smartmontools

installiert werden. Die SmartMonTools Homepage enthält zahlreiche weitere nützliche Informationen zum Thema.

Wie man auf einem Linux Server die S.M.A.R.T. Monitoring Tools so installiert, dass der Zustand der Platten periodisch überwacht wird und der Administrator eine Email bei Problemen bekommt, ist im Artikel "Festplatten mit SMART überwachen" beschrieben.

Die wichtigsten smartctl Kommandos

smartctl wird von der Linux-Konsole bzw. dem Windows DOS Fenster wie fogt aufgerufen:

# IDE Platte:
smartctl -a /dev/hda

# SATA Platte
smartctl -a /dev/sda

# SATA Platte an älterem PC
smartctl -d ata -a /dev/sda

# unter Windows:
smartctl -a hda

Hier eine Liste der wichtigsten Optionen. Für weitere Informationen siehe die smartctl man page oder SmartMonTools Homepage.

Option

Beschreibung

Weitere Informationen

-h
--help

Help

Online Hilfe

-s on
--smart=on

SMART aktivieren/deaktivieren

SMART Funktionen aktivieren, sonst funktionieren die weiteren Kommandos nicht.

-d ata
--device=ata

device type

Unter Linux werden SATA Platten wie SCSI Platten angesprochen. Falls smartctl die Platte nicht auf Anhieb erkennt, explizit den Typ angeben (ata, scsi, 3ware, N)

-d megaraid,[id]device typePlatte ist an einen RAID-Controller (hier: MegaRAID/LSI/Avago) angeschlossen

-t short
--test=short

Run Test

Kurzen (1 - 2 Minuten) Selbsttest ausführen.

-t long
--test=long

Run Test

Langen (viele Stunden) Selbsttest ausführen.
Beide Tests können bedenkenlos während des laufenden Betriebs ausgeführt werden, es gehen keine Daten verloren.
Weitere mögliche Testtypen (nicht von allen Disks unterstützt):

  • offline
  • conveyance
  • select,M-N
  • pending,N
  • afterselect,on
  • afterselect,off

-C
--captive

Do test in captive mode

Zusatzoption für -t: alle Zugriffe auf die Festplatte werden für die Dauer des laufenden Tests gesperrt.

-a
--all

Alle SMART Informationen

Führt alle folgenden Statusabfragen auf einmal aus.

-i, --info

Informationen über die Festplatte

=== START OF INFORMATION SECTION ===
Model Family:     SAMSUNG SpinPoint P120 series
Device Model:     SAMSUNG SP2504C
Serial Number:    xxxxxxxxxxxxxx
Firmware Version: VT100-41
User Capacity:    250.059.350.016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 4a
Local Time is:    Sun Sep 09 11:50:06 2007 WN
SMART support is: Available - device has SMART capability.
                  Enabled status cached by OS, trying SMART RETURN STATUS cmd.
SMART support is: Enabled

Einige allgemeine Festplatteninformationen. Nützlich ist die Seriennummer, die man immer braucht, wenn man die Platte zum Hersteller schickt.

-H
--health

Health Status

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

Der Health Status zeigt an, ob der Self-Test der Festplatte erfolgreich war oder fehlgeschlagen ist. Aber Achtung: Auch wenn hier "PASSED" steht, heißt das nicht unbedingt, dass die Festplatte einwandfrei ist. Sie kann durchaus nicht mehr lesbare Sektoren enthalten - wie dieses Exemplar hier. Falls der Self-Test "FAILED!" ergibt, dann sollte man schleunigst alle Daten retten und die Platte austauschen.

-c
--capabilities

device SMART capabilities

General SMART Values:
Offline data collection status:  (0x02)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      ( 121)	The previous self-test completed having
					the read element of the test failed.
Total time to complete Offline
data collection: 		 (4960) seconds.
Offline data collection
capabilities: 			 (0x5b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					No 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: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 (  82) minutes.

Diverse Angaben über die SMART Funktionen dieser Festplatte. Enthält auch die ungefähre Dauer der Selbsttests.

-A
--attributes

device SMART vendor-specific Attributes and values

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       -       5
  3 Spin_Up_Time            0x0007   100   100   025    Pre-fail  Always       -       6208
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       808
  5 Reallocated_Sector_Ct   0x0033   098   098   010    Pre-fail  Always       -       25
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   253   253   015    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       3108
 10 Spin_Retry_Count        0x0033   253   253   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   253   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       390
187 Unknown_Attribute       0x0032   001   001   000    Old_age   Always       -       343
190 Temperature_Celsius     0x0022   124   100   000    Old_age   Always       -       38
194 Temperature_Celsius     0x0022   124   100   000    Old_age   Always       -       38
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       16533269
196 Reallocated_Event_Count 0x0032   098   098   000    Old_age   Always       -       25
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0030   253   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   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
202 TA_Increase_Count       0x0032   100   100   000    Old_age   Always       -       5

Diese Tabelle enthält zahlreiche wichtige Informationen zum aktuellen Zustand der Platte. Weiter unten im Text dazu mehr.

-l error
--log=error

device log

Error 3745 occurred at disk power-on lifetime: 3067 hours (127 days + 19 hours)
When the command that caused the error occurred, the device was in an unknown state.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 51 05 01 aa 00 a0  Error: ABRT

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  a1 00 05 01 aa 00 a0 00      00:03:27.792  IDENTIFY PACKET DEVICE

Dies kann auf eine beschädigte Festplatte hinweisen, muss aber nicht. Solche Fehler können auch durch Probleme mit der Stromversorgung, Stöße während des Schreib-/Lesevorgangs (z.B. bei Notebooks) verursacht werden. Vorsichtshalber sollte man jedoch einen Selbsttest starten.

-l selftest
--log=selftest

device 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%      2891         6344628
# 2  Short offline       Completed: read failure       90%      2891         6344628

Jede SMART Festplatte kann Selbsttests ausführen. Dieser Abschnitt enthält die Ergebnisse der letzten Tests. In diesem Beispiel sind sowohl der kurze als auch der lange Selbsttest fehlgeschlagen. Die Festplatte ist defekt und ein Garantiefall. Zusätzlich wird noch der Zeitpunkt des Tests angegeben sowie die logische Blockadresse des fehlerhaften Blocks.
Wenn der Selbsttest ohne Befund durchgelaufen ist, steht hier "Completed without error".

-l selective
--log=selective

device log

SMART Selective Self-Test Log Data Structure Revision Number (0) should be 1
SMART Selective self-test log data structure revision number 0
Warning: ATA Specification requires selective self-test log data structure revision number = 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
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.

Falls man nur bestimmte Bereiche der Platte getestet hat, stehen hier die entsprechenden Resultate.

Wichtige SMART Attribute

Man sollte sich zunächst die folgenden Einträge ansehen:

SMART Information

Bedeutung

SMART overall-health self-assessment test result

Kann "PASSED" oder "FAILED!" enthalten. Ein PASSED Ergebnis heißt jedoch keineswegs, dass die Festplatte in Ordnung ist.

Reallocated_Sector_Ct
Reallocated_Event_Count

Die Anzahl der Sektoren mit Lesefehlern, die automatisch von der Festplatten-Controllersoftware durch Reserve-Sektoren ersetzt wurden. Sollte normalerweise Null sein. Wenn die Anzahl defekter Blöcke im Laufe der Zeit ansteigt, sollte man die Platte ersetzen.

Current_Pending_Sector

Die Anzahl Sektoren mit Lesefehlern, die noch nicht ersetzt wurden. Wenn dieser Wert nicht Null ist, muss dieser Sektor explizit geschrieben oder die Platte neu formatiert werden.

SMART Error Log

Dieser Abschnitt enthält Detailinformationen zu den letzten aufgetretenen Problemen. Einträge sind kein Beweis für ein schwerwiegendes Problem mit der Festplatte; wenn jedoch der Error Counter sehr hoch ist, ist die Platte wahrscheinlich defekt.

SMART Self-test log

Enthält die Ergebnisse der letzten Selbsttest. Falls hier ein "FAILED" steht, ist die Platte defekt. Daten sichern und Festplatte an den Hersteller zurücksenden.

Reallocated_Sector_Ct, Reallocated_Event_Count

Es ist durchaus normal, dass eine Festplatte defekte Sektoren hat. Die Steuersoftware der Festplatte kann Zugriffe auf solche defekten Sektoren auf einwandfreie Reservesektoren umlenken, so dass keinerlei Einschränkungen im Betrieb auftreten.

Aber man sollte folgende zwei Punkte im Auge behalten:

Current_Pending_Sector

Dies ist die Anzahl defekter Blöcke, die definitiv nicht mehr lesbar sind und für die die Controllersoftware ein Reassign geplant hat. Die Zuweisung eines Reserveblocks erfolgt jedoch nur bei einem Schreibvorgang.

SMART Selbsttest ausführen

Es gibt zwei Arten von Selbsttests, einen langen und einen kurzen (smartctl -t long und smartctl -t short). Beide Varianten kann man ohne Probleme auf aktiven Festplatten ausführen, da sie weder Daten überschreiben noch den Betrieb nennenswert stören. Der kurze Selbsttest benötigt im allgemeinen ein, zwei Minuten; der lange Selbsttest kann schon mal einige Stunden dauern.

Beide Tests sollte man in gewissen Abständen ausführen. In den Linux smartmontools gibt es dazu den smartd, der z.B. täglich einen kurzen und wöchentlich einen langen Selbsttest ausführt. Sollte es Probleme geben, erhält man automatisch eine Email.

Unter Windows gibt es zahlreiche Tools, die ähnliche Funktionen durchführen:

http://www.google.de/search?q=smart+disk+tools+windows
http://de.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology#S.M.A.R.T.-Programme_im_Vergleich

Was tun bei Problemen?

Die meisten Festplatten haben eine ziemlich lange Garantiezeit, im allgemeinen drei oder fünf Jahre. Wenn der SMART Selbsttest einen Fehler nachweist, ist die Platte ein Garantiefall. Daten retten, Platte an den Hersteller zurückschicken.

Auch bei sonstigen Fehlern, die keinen Garantieanspruch bedingen, sollte man nicht lange herumexperimentieren. Es lohnt sich nicht. Meine Zeit ist mir dafür zu schade. Zeigt eine Platte irgendwelche Unregelmäßigkeiten, gibt es für mich nur einen Weg: Daten runterkopieren, neue Platte einbauen. Und die defekte alte Platte bitte nicht bei Ebay vertickern... lieber in den Elektronikschrott.

Defekte Festplatte reparieren

Bei Lesefehlern kann man die Festplatte zwingen, einen der Reserveblöcke zuzuweisen, indem man Daten auf diesen Sektor schreibt. Die Datei, zu der dieser Sektor gehört, ist allerdings beschädigt.

Unter Linux verwendet man folgendes Kommando:

dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=[Blocknummer]

Unter Windows führt man eine Datenträgerprüfung durch: Rechtsklick auf das fragliche Volume, Eigenschaften, Extras, Fehlerüberprüfung, Jetzt prüfen, Option "Fehlerhafte Sektoren suchen/wiederherstellen" auswählen. Dies liest jeden einzelnen Block der Festplatte und schreibt ihn wieder zurück. Dieser Vorgang kann jedoch eine ganze Weile dauern.

Die Reallokierung wird auch durch eine Neuformatierung erzwungen. Unter Windows: nicht die Option "Schnellformatierung" auswählen; unter Linux: mke2fs -c -c.

Datenrettung

Die beste Methode ist, ein aktuelles Backup zu haben.

Das grundsätzliche Problem beim Kopieren von Daten von einer defekten Festplatte ist, dass irgendwo ja nicht lesbare Blöcke sind. Windows bricht dann gerne mit einem Lesefehler ab, so dass man an die weiteren Daten nicht mehr rankommt. Man kann natürlich etappenweise einzelne Directories kopieren, aber der Aufwand ist sehr viel höher.

Deswegen sollte man zunächst Sektor für Sektor die gesamte Festplatte kopieren. Dann kann man in aller Ruhe die Dateien kopieren, ohne befürchten zu müssen, dass durch Reparaturversuche noch mehr kaputtgeht.

Am besten funktioniert dies unter Linux; auch dann, wenn es sich um Windows Partitionen handelt.

Siehe auch die folgenden Artikel: