Disks: S.M.A.R.T.
Siehe auch
Zur Beurteilung des Zustandes einer Festplatte dient SMART (Self-Monitoring, Analysis and Reporting Technology). Mit der Werkzeugsammlung smartmontools
kann knapp die Hälfte der Festplattenausfälle vorausgesagt werden. Die folgenden Kommandos müssen mit root-Rechten ausgeführt werden.
yum -y install smartmontools
smartctl-Datenbank aktualisieren:
update-smart-drivedb
Es existieren folgende Self-Tests:
kurz und schmerzlos („short“). Dauert wenige Minuten.
Check auf Transportschäden („conveyance“).
Oberflächen-Test („long“, „extended self test“). Auf einer unbeschäftigten Seagate IronWolf mit 14TB Grösse dauert ein Extended Self-Test 18h.
Die Checks lassen sich wie folgt durchführen:
smartctl --test=short /dev/sda
smartctl --test=conveyance /dev/sda
smartctl --test=long /dev/sda
Nicht jeder Self-Test-Typ wird von jeder Disk unterstützt. Ob eine Disk zum Beispiel „Conveyance“-Tests unterstützt, sieht man so:
smartctl --xall /dev/sdb | grep -E '(Self-test|remaining)'
Alle Self-Tests sind „Drive Built-In“ und „Safe to user data“. Die Tests kann man daher auf Platten im laufenden Produktiv-Betrieb durchführen - die Tests brauchen dann einfach länger. Während der Test-Phase kann lediglich nicht auf die SMART-Daten zugegriffen werden.
Wer smartctl
in einem Bash-Script in einem Cronjob aufrufen möchte, sollte den vollen Pfad (/usr/sbin/smartctl
) angeben, da es sonst möglicherweise nicht gefunden wird.
Tipp
Ein schönes Tool unter GNOME ist GSmartControl. Damit lässt sich auch ein auf der entfernten Maschine per smartctl --xall /dev/sda
erzeugter Output offline und sehr anschaulich untersuchen (im Tool im Menü „Device > Load smartctl Output as Virtual Device“ nutzbar).
Anwendung
Ist SMART für die Festplatte aktiv?
smartctl --info /dev/sda | grep -i 'SMART support is'
SMART für eine Festplatte (z.B. eine SSD) explizit einschalten:
smartctl --smart=on /dev/sda
Alle Infos über eine Festplatte auslesen:
smartctl --xall /dev/sda
Auf den Gesundheitszustand prüfen:
smartctl --health /dev/sde
Das Ergebnis bei einer Disk, die bereits ein auffälliges Verhalten zeigt:
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-3.10.0-957.10.1.el7.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== 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
200 Multi_Zone_Error_Rate 0x0023 001 001 001 Pre-fail Always FAILING_NOW 0
Das Ergebnis bei einer gesunden Disk:
smartctl --health /dev/sdd
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-3.10.0-957.10.1.el7.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Nur Fehler reporten:
smartctl --health --quietmode=errorsonly
Ergebnis eines Tests ausgeben:
smartctl --log selftest /dev/sda
SMART-Errorlogs auslesen:
smartctl --log error /dev/sda
Festplatten-Seriennummern und ihre Device-Adresse ermitteln:
for hd in /dev/sd*; do
echo -n "Device: $hd, "
smartctl --xall $hd | grep -i serial
done
Gesundheitstest - prüfen, ob das Gerät bereits ausgefallen ist oder von sich denkt, in den nächsten 24h auszufallen:
smartctl --health --quietmode=errorsonly /dev/sda
Ist eine Disk im Sleep/Standby-Modus? Dieses Kommando weckt die Disk dabei nicht auf:
smartctl --info --nocheck=standby /dev/sda
Die Disk Operation-Modes bei HDDs bedeuten:
OFF: Disk-Scheiben rotieren nicht
SLEEP: Disk-Scheiben rotieren nicht; Lowest Power Mode
STANDBY: Disk-Scheiben rotieren nicht; Low Power Mode
IDLE, IDLE_A: normaler Operation-Mode
ACTIVE: normaler Operation-Mode
Disks an einem HP SmartArray Controller prüfen:
smartctl --xall --device cciss,0 /dev/sda
smartctl --xall --device cciss,1 /dev/sda
Disks hinter einem Adaptec-RAID-Controller prüfen:
smartctl --xall --device aacraid,0,0,1 /dev/sda
Ausgabe
Wie ist die Ausgabe zu interpretieren?
ID ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 078 064 044 Pre-fail Always - 69143536
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 30
- VALUE
Normalisierter Wert, meist von 100 bis 0, teilweise von 255 bis 0. Normalerweise gilt: je höher der Wert, desto besser - ein Wert von 100 oder 255 bedeutet „zu 100% gut“. Temperaturen sind möglicherweise nicht normalisiert.
- WORST
Bisher schlechtester, normalisierter Wert zur Lebenszeit der Festplatte.
- THRESH (threshold)
„Pre-fail“: zeigt einen bevorstehenden Disk-Ausfall an, wenn VALUE kleiner oder gleich THRESH ist. Bei einem Wert, der gegen THRESH geht, Disk tauschen - ein Ausfall steht unmittelbar bevor.
„Old_age“: zeigt das End-of-Life (EOL) der Disk an, wegen Alter und/oder Abnutzung, wenn VALUE kleiner oder gleich THRESH ist. VALUEs vom Typ „Old_age“ sinken während der Lebensdauer der Disk kontinuierlich. Bei einem Wert, der gegen THRESH geht, also ebenfalls Disk tauschen.
- RAW_VALUE
Herstellerabhängiger, meist nicht intuitiv interpretierbarer Wert. Teils auch nicht über Modell-Generationen hinweg konsistent, teilweise ist dessen Bedeutung auch nicht dokumentiert. Einzig Temperaturen lassen sich meist sicher herauslesen, eigentlich immer in °C.
Im Beispiel eine Disk, die in ID 5 („Reallocated Sector Count“) ihr nahes Ende ankündigt. Nahes Ende deshalb, da es sich hier um ein „Pre-failure“-Attribut handelt:
ID |
Name |
Failed |
Norm-ed value |
Worst |
Threshold |
Raw value |
Type |
---|---|---|---|---|---|---|---|
1 |
Raw Read Error Rate |
never |
95 |
93 |
6 |
206’969’285 |
pre-failure |
3 |
Spin-Up Time |
never |
100 |
100 |
0 |
0 |
pre-failure |
4 |
Start / Stop Count |
never |
100 |
100 |
20 |
28 |
old age |
5 |
Reallocated Sector Count |
now |
4 |
4 |
36 |
3’956 |
pre-failure |
7 |
Seek Error Rate |
never |
74 |
60 |
30 |
27’571’332 |
pre-failure |
9 |
Power-On Time |
never |
80 |
80 |
0 |
18’319 |
old age |
10 |
Spin-Up Retry Count |
never |
100 |
100 |
97 |
0 |
pre-failure |
12 |
Power Cycle Count |
never |
100 |
100 |
20 |
27 |
old age |
183 |
Runtime Bad Blocks |
never |
96 |
96 |
0 |
4 |
old age |
184 |
End to End Error |
never |
100 |
100 |
99 |
0 |
old age |
187 |
Reported Uncorrectable |
never |
100 |
100 |
0 |
0 |
old age |
188 |
Command Timeout |
never |
100 |
99 |
0 |
8’590’065’667 |
old age |
189 |
High Fly Writes |
never |
100 |
100 |
0 |
0 |
old age |
190 |
Airflow Temperature |
never |
78 |
58 |
45 |
22 (Min/Max 22/22) |
old age |
194 |
Temperature (Celsius) |
never |
22 |
42 |
0 |
22 (0 20 0 0 0) |
old age |
195 |
Hardware ECC Recovered |
never |
23 |
17 |
0 |
206’969’285 |
old age |
197 |
Current Pending Sector Count |
never |
100 |
100 |
0 |
0 |
old age |
198 |
Offline Uncorrectable |
never |
100 |
100 |
0 |
0 |
old age |
199 |
UDMA CRC Error Count |
never |
200 |
200 |
0 |
4 |
old age |
240 |
Head Flying Hours |
never |
100 |
253 |
0 |
18386 (132 95 0) |
old age |
241 |
Total LBAs Written |
never |
100 |
253 |
0 |
3’973’655’019 |
old age |
242 |
Total LBAs Read |
never |
100 |
253 |
0 |
3’238’867’291 |
old age |
Attribute
Ausgewählte SMART-Attribute und deren Bedeutung:
- #1 Raw_Read_Error_Rate
Verursacht durch Kopf-/Oberflächenprobleme.
- #3 Spin_Up_Time (Typ: Pre-fail)
Gibt Hinweise auf Motor-/Lagerschaden. Diesen Wert gibt es nicht bei SSDs.
- #5 Reallocated_Sector_Ct (Typ: Pre-fail)
Verursacht durch Kopf-/Oberflächenprobleme. Anzahl der fehlerhaften Sektoren, die durch die Festplattenelektronik gegen Reservesektoren ausgetauscht wurden.
- #7 Seek_Error_Rate
Probleme mit der Kopfmechanik. Diesen Wert gibt es nicht bei SSDs.
- #11 Calibration_Retry_Count
Probleme mit der Kopfmechanik. Diesen Wert gibt es nicht bei SSDs.
- #13 Soft_Read_Error_Rate
Verursacht durch Kopf-/Oberflächenprobleme.
- #197 Current_Pending_Sector (Typ: Old_age)
Unlesbare Sektoren, deren Inhalt die Festplatte nicht mehr korrigieren kann. Mögliche Ursache sind beispielsweise Stromausfälle während des Schreibvorgangs. Solche Sektoren können wieder überschrieben werden, wodurch die Anzahl der Pending Sectors wieder sinkt. Diesen Wert gibt es nicht bei SSDs.
- #201 Soft_Read_Error_Rate
Verursacht durch Kopf-/Oberflächenprobleme.
smartd
Die smartmontools liefern auch einen smartd
-Daemon, den man auf Wunsch aktivieren kann, und der die Disks regelmässig nach ihren SMART-Werten befragt.
Nicht alle Disks reporten allerdings so, dass die smartmontools damit klarkommen. Entweder fehlen die Disks in der smartmontools-Datenbank, oder die Werte sind schlicht unbrauchbar. Die Attribute, die ignoriert werden sollen, setzt man vor dem ersten Schlüsselwort DEVICESCAN
ein. Alle Angaben ab dort werden dann ignoriert (oder DEVICESCAN
deaktivieren und nur die Disks angeben, die einen wirklich interessieren):
Pending Sectors (194) auf /dev/sdc
ignorieren:
/dev/sdc -a -I 194
...
DEVICESCAN -H -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q
...
systemctl reload smartd
Troubleshooting
- „/usr/share/smartmontools/drivedb.h.error: rejected by /usr/sbin/smartctl, probably no longer compatible“, besonders auf CentOS 6
Dort kommt Version 5.43 der smartmontools zum Einsatz; die aktuellste Version ist aber Minimum 6.5. Die Datenbank-Datei „drivedb.h“ v6, die per Änderung:
$EDITOR /usr/sbin/update-smart-drivedb ... SRCEXPR=‘http://sourceforge.net/p/smartmontools/code/HEAD/tree/$location/smartmontools/drivedb.h?format=raw' ...
geholt wird, passt daher nicht zur auf CentOS 6 eingesetzten Version. Hier muss man sich mit der letzten Version https://sourceforge.net/projects/smartmontools/files/smartmontools/5.43/ der drivedb.h begnügen.
Built on 2024-11-18