So überprüfen Sie den Zustand einer Festplatte über die Befehlszeile mit smartctl
Das Paket smartmontools ist in der Regel in den Standard-Repositories aller wichtigen Linux-Distributionen verfügbar. Es enthält zwei Dienstprogramme, mit denen Sie den Status von Speichern mit S.M.A.R.T.-Unterstützung (Self Monitoring Analysis and Reporting Technology) überprüfen können: smartcl und smartd. Ersteres ist das Dienstprogramm, das wir direkt verwenden, um S.M.A.R.T.-Attribute zu überprüfen, Tests durchzuführen oder andere Aktionen durchzuführen. Letzteres ist der Daemon, mit dem Operationen im Hintergrund geplant werden können. In diesem Tutorial lernen wir die grundlegende Verwendung von smartctl kennen.
In diesem Tutorial lernen Sie:
- So installieren Sie das smartmontools-Paket auf verschiedenen Distributionen
- Was sind die Unterschiede zwischen den S.M.A.R.T. Selbsttests?
- So verwenden Sie smartctl, um den Zustand eines Speichergeräts zu überprüfen
- Ausführen von Tests auf einem Speichergerät über die Befehlszeile
So überprüfen Sie den Zustand einer Festplatte über die Befehlszeile mit smartctl
Verwendete Softwareanforderungen und Konventionen
Installation
Wie bereits erwähnt, ist das smartmontools-Paket in den Repositories aller großen Linux-Distributionen verfügbar, daher müssen wir nur unseren bevorzugten Paketmanager verwenden, um es zu installieren. Wenn Sie unter Debian oder einem seiner Derivate wie Ubuntu oder Mint arbeiten, können Sie beispielsweise Folgendes ausführen:
sudo apt-get update && sudo apt-get install smartmontools
In neueren Versionen von Red Hat Enterprise Linux, CentOS und Fedora können wir dnf verwenden:
sudo dnf install smartmontools
Wenn Archlinux Ihre Lieblingsdistribution ist, können Sie pacman verwenden:
sudo pacman -S smartmontools
Überprüfen, ob SMART aktiviert ist
Machen wir uns mit dem Dienstprogramm smartctl vertraut. Das erste, was wir überprüfen möchten, ist, ob die S.M.A.R.T.-Unterstützung auf dem Gerät aktiv ist. Um diesen Vorgang durchzuführen, können wir das Dienstprogramm smartctl mit der Option -i (kurz für --info) ausführen:
sudo smartctl -i /dev/sda
Die Ausgabe des Befehls lautet wie folgt:
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Red
Device Model: WDC WD10EFRX-68FYTN0
LU WWN Device Id: 5 0014ee 20c672def
Firmware Version: 82.00A82
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 5400 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 (minor revision not indicated)
SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Thu Sep 24 18:13:19 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
Wir können sehen, dass grundlegende Informationen wie die Gerätefamilie, das Modell, die Sektorgrößen usw. angezeigt werden. Was uns jedoch am meisten interessiert, ist der Inhalt der letzten beiden Zeilen. Von dort aus können wir sehen, dass das Gerät über SMART-Funktionen verfügt und dass in diesem Fall die SMART-Unterstützung deaktiviert ist. Was ist, wenn wir es aktivieren wollen? Alles, was wir tun müssen, ist, smartctl mit der Option -s auszuführen und dabei "on" als Argument zu verwenden:
sudo smartctl -s on /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
Kennenlernen von smartctl
Um alle verfügbaren SMART-Informationen über ein Speichergerät zu erhalten, können wir das Dienstprogramm mit der Option -a (kurz für -all) starten und natürlich den Pfad des Geräts, das wir überprüfen möchten, als letztes Argument des Befehls übergeben. Angenommen, wir möchten den aktuellen Status des /dev/sda-Geräts überprüfen. Wir würden laufen:
sudo smartctl -a /dev/sda
Der obige Befehl erzeugt eine Menge Ausgabe. Unter anderem können wir den Status verschiedener SMART-Parameter sehen:
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 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 135 125 021 Pre-fail Always - 4216
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 941
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 085 085 000 Old_age Always - 11285
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 446
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 108
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 4258
194 Temperature_Celsius 0x0022 111 099 000 Old_age Always - 32
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
Sehr wichtige Parameter, die überprüft werden müssen, sind unter anderem "Reallocated_Sector_Ct" und "Current_Pending_Sector". In beiden Fällen, wenn der RAW_VALUE etwas anderes als 0 ist, sollten wir sehr vorsichtig sein und mit der Sicherung der Daten auf der Festplatte beginnen. Der Reallocated_Sector_Ct ist die Anzahl der Sektoren auf dem Blockgerät, die nicht korrekt verwendet werden können.
Wenn ein solcher Sektor gefunden wird, wird er einem
der verfügbaren freien Sektoren des Speichergeräts neu zugeordnet, und die darin enthaltenen Daten werden verschoben. Das Attribut Current_Pending_Sector ist stattdessen die Anzahl der fehlerhaften Sektoren, die noch auf eine erneute Zuordnung warten. Wenn du mehr über die S.M.A.R.T.-Attribute und ihre Bedeutung erfahren möchtest, kannst du einen Blick auf die Wikipedia-S.M.A.R.T.-Seite werfen.
In der Ausgabe sehen wir auch ein Protokoll der Tests, die auf dem Gerät durchgeführt wurden:
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
1 Short offline Completed without error 00% 9590 -
2 Short offline Completed without error 00% 2941 -
3 Extended offline Completed without error 00% 21 -
4 Short offline Completed without error 00% 18 -
5 Short offline Completed without error 00% 0 -
6 Short offline Completed without error 00% 0 -
In der Test_Description Spalte sehen wir, dass verschiedene Arten von Tests durchgeführt wurden, die alle ohne Fehler abgeschlossen wurden. Im nächsten Abschnitt werden wir sehen, was die Unterschiede zwischen ihnen sind und wie man tatsächlich einen Test auf einem Speichergerät startet.
Verfügbare SMART-Tests
Mit dem Dienstprogramm smartctl können Sie eine Vielzahl von Selbsttests starten:
- kurz
- lang
- Förderung (nur ATA-Geräte)
- select (nur ATA-Geräte)
Schauen wir uns schnell an, was die Unterschiede zwischen ihnen sind.
Der Kurztest ist dazu gedacht, schnell die häufigsten Probleme zu überprüfen, die auf einem Speichergerät gefunden werden können. Der Test sollte nicht länger als 10 Minuten dauern: Die mechanische, elektrische und Leseleistung einer Scheibe wird überprüft.
Der lange Test ist im Grunde eine genauere Version des "kurzen" Tests. Es kann viel Zeit in Anspruch nehmen, bis es fertig ist: Wie im smartctl-Handbuch angegeben, kann es von Dutzenden von Minuten bis zu mehreren Stunden dauern.
Der Fördertest dient dazu, mögliche Schäden zu überprüfen, die während des Transports des Gerätes aufgetreten sind. In der Regel dauert es nur wenige Minuten, bis ein Fördertest abgeschlossen ist. Es ist nur auf ATA-Geräten verfügbar.
Der Select-Test ist, wie der "Conveyance"-Test, nur auf ATA-Geräten verfügbar und soll nur den angegebenen Bereich von LBAs (Logical Block Addresses) überprüfen. Der Adressbereich wird beim Start des Tests angegeben. Um beispielsweise Adressen von 10 bis einschließlich 20 zu überprüfen, würden wir Folgendes ausführen:
sudo smartctl -t select,10-20
Es ist möglich, maximal 5 verschiedene Bereiche von LBAs anzugeben, die überprüft werden sollen, indem Sie die Option -t wiederholen:
sudo smartctl -t select,0-5 -t select,5-10
Die Option -t ist die Abkürzung für --test und wird verwendet, um einen Test sofort auszuführen.
Ausführen eines Tests
Wir haben gesehen, was die möglichen Tests sind, die wir mit dem Dienstprogramm smartctl durchführen können. Sehen wir uns nun an, wie Sie einen Test tatsächlich starten. Wie wir am Ende des vorherigen Abschnitts gesehen haben, wird die Option -t verwendet, um einen Test sofort auszuführen. Wir müssen den Typ des Tests, den wir ausführen möchten, als Argument für die Option angeben. Um einen kurzen Test auf dem /dev/sda-Gerät durchzuführen, würden wir Folgendes ausführen:
sudo smartctl -t short /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Sep 24 14:39:05 2020
Use smartctl -X to abort test.
Die Ausgabe des Befehls meldet die Zeit, die auf den Abschluss des Tests gewartet werden soll, sowie das Datum und die Uhrzeit, zu der er abgeschlossen sein soll. Nach dem angegebenen Zeitintervall können wir zur Überprüfung der Testergebnisse Folgendes ausführen:
sudo smartctl -a /dev/sda
Wie Sie sehen können, wurden der Test (der erste in der Liste – #1) und seine Ergebnisse zur Protokollliste hinzugefügt. Es wurde ohne Fehler abgeschlossen:
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
1 Short offline Completed without error 00% 11286 -
2 Short offline Completed without error 00% 9590 -
3 Short offline Completed without error 00% 2941 -
4 Extended offline Completed without error 00% 21 -
5 Short offline Completed without error 00% 18 -
6 Short offline Completed without error 00% 0 -
7 Short offline Completed without error 00% 0 -
Es ist möglich, die geschätzte Zeit zu kennen, die ein Test benötigen würde, um abgeschlossen zu sein. Solche Informationen sollten in der Ausgabe des Befehls smartctl -a /dev/sdx enthalten sein, können aber explizit angefordert werden, indem smartctl mit der Option -c (kurz für --capabilities) gestartet wird. Im Folgenden sind die interessanten Zeilen in der Ausgabe aufgeführt:
sudo smartctl -c /dev/sda
[...]
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 157) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
[...]
Lassen Sie uns jetzt einen Beförderungstest durchführen:
sudo smartctl -t conveyance /dev/sda
Wir warten 5 Minuten und überprüfen dann die Ergebnisse. Wie erwartet erscheint der Test nun in der Liste, und glücklicherweise wurden keine Fehler gefunden:
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
1 Conveyance offline Completed without error 00% 11286 -
2 Short offline Completed without error 00% 11286 -
3 Short offline Completed without error 00% 9590 -
4 Short offline Completed without error 00% 2941 -
5 Extended offline Completed without error 00% 21 -
6 Short offline Completed without error 00% 18 -
7 Short offline Completed without error 00% 0 -
8 Short offline Completed without error 00% 0 -
Nun zu einem einfachen Auswahltest:
sudo smartctl -t select,100-150 /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Selective self-test routine immediately in off-line mode".
SPAN STARTING_LBA ENDING_LBA
0 100 150
Drive command "Execute SMART Selective self-test routine immediately in off-line mode" successful.
Testing has begun.
Dieser Test wird erfolgreich abgeschlossen:
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
1 Selective offline Completed without error 00% 11287 -
2 Conveyance offline Completed without error 00% 11286 -
3 Short offline Completed without error 00% 11286 -
4 Short offline Completed without error 00% 9590 -
5 Short offline Completed without error 00% 2941 -
6 Extended offline Completed without error 00% 21 -
7 Short offline Completed without error 00% 18 -
8 Short offline Completed without error 00% 0 -
9 Short offline Completed without error 00% 0 -
Auch hier sind die Ergebnisse der Tests in der Ausgabe enthalten, die generiert wird, wenn smartctl mit der Option -a gestartet wird. Wenn man sich stattdessen nur auf Protokolle konzentrieren möchte, kann man die Option -l (--log) verwenden und festlegen, welche Art von Protokollen angezeigt werden sollen. Um nur Fehlerprotokolle anzuzeigen, würde eines Folgendes ausführen:
sudo smartctl -l error /dev/sda
Um stattdessen auch Selbsttestprotokolle einzuschließen, gehen Sie wie folgt vor:
sudo smartctl -l error -l selftest /dev/sda
Wenn smartctl mit der Option -a gestartet wird, werden der Fehler, die Selbsttests und die selektiven Protokolle in die Ausgabe für ATA-Geräte aufgenommen.
Schlüsse
In diesem Tutorial haben wir gesehen, wie man das Paket smartmontools auf einigen der am häufigsten verwendeten Linux-Distributionen installiert und wie man das Dienstprogramm smartctl verwendet, um den Status von S.M.A.R.T.-Parametern auf einem Speichergerät zu überprüfen. Wir haben auch gesehen, welche Tests wir durchführen können und was die Unterschiede zwischen ihnen sind. Wir haben auch gesehen, wie man einen Test startet und wie man zu den Ergebnissen kommt. Im nächsten Artikel werden wir sehen, wie man Tests mit dem smartd-Daemon plant und wie man mit einer E-Mail benachrichtigt wird, wenn ein Fehler auftritt. Bleiben Sie dran!
