[[Vorlage(Getestet, bionic, focal, jammy)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Pakete_installieren: Installation von Paketen] [:Editor: Einen Editor öffnen] [:Dienste: Dienste automatisch starten] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] [:sudo:Root-Rechte] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/hd.png, 64, align=left)]] Magnetische Massenspeichergeräte (Festplatten) arbeiten in mechanisch-technischen Grenzbereichen. Die Frage, __ob__ sie irgendwann versagen, stellt sich daher nicht – interessant ist nur, __wann__ dies der Fall sein wird. Bei den meisten Beschädigungen ist zwar eine Wiederherstellung durch Spezialisten möglich, welche aber ausgesprochen kostenintensiv ist und daher selten eine wirkliche Option darstellt. Da diese Erkenntnisse nicht neu sind, wurden Strategien entworfen, wie sich Festplatten selbst reparieren können. Zusätzlich sollen sie die Sicherheit gewähren, dass das, was wichtig ist, nämlich die Daten auf dem Gerät, erst gar nicht zu Schaden kommen können. Die Hersteller der Geräte (P-ATA-, S-ATA- und SCSI-Industriestandardgeräte) haben ein Diagnosesystem entwickelt, welches den aktuellen Festplattenstatus möglichst genau bestimmen kann. Anhand dessen soll dieses über einen gewissen Zeitraum Prognosen liefern, wann welche Beschädigung vermutlich eintritt. Diese Technik trägt den Namen [wikipedia:S.M.A.R.T.:S.M.A.R.T.] (Self-Monitoring, Analysis and Reporting Technology) und dessen Verwendung mit den [https://www.smartmontools.org/ S.M.A.R.T. Monitoring Tools] {en} (smartmontools) ist Inhalt dieses Artikels. Neben regelmäßigen [:Datensicherung: Sicherheitskopien] kann der Benutzer auch [wikipedia:RAID:RAID-Modi] (z.B. Software RAID-1 via LVM) verwenden, um seine Daten sicher zu halten. Eine 100-prozentige Sicherheit, dass S.M.A.R.T. den Nutzer rechtzeitig alarmiert, gibt es nicht. Bei einer älteren Studie aus dem Jahr 2007 von Google, bei der 100.000 Festplatten, die in den Rechenzentren des Konzerns ihren Dienst versagten, analysiert wurden, zeigten lediglich 64 % der Platten rechtzeitig Probleme an. Die komplette Studie kann als PDF-Dokument [https://static.googleusercontent.com/media/research.google.com/de//archive/disk_failures.pdf heruntergeladen werden] {en}. Ergänzend zu S.M.A.R.T. kann z.B. noch regelmäßig eine Überprüfung der Festplatte mittels [:fsck:] erfolgen. = Grundlagen = S.M.A.R.T. unterscheidet drei Datensammel-Kategorien: * ''"Online Tests"'' nehmen keinen direkten Einfluss auf die eigentliche Tätigkeit des Gerätes, weswegen sie jederzeit durchgeführt werden können (die Namensgebung ist in der Hinsicht etwas ungeschickt). * ''"Offline Tests"'' können Auswirkungen auf den regulären Betrieb haben. Daher führt die Festplatte, falls nicht explizit anders eingestellt, diese Tests selbstständig in der sogenannten Idle-Zeit aus, das heißt salopp formuliert, wenn die Festplatte sowieso nichts Besseres zu tun hat. * ''"Self Tests"'' laufen nicht automatisch, sondern müssen explizit angestoßen werden. Diese Tests können sich von Minuten bis zu Stunden hinziehen und liefern viele Daten. = Installation = Grundlage jeglicher Tests sind die Programme `smartctl` und der Daemon `smartd`, die im folgenden Paket enthalten sind: {{{#!vorlage Paketinstallation smartmontools }}} Neben der Kommandozeile stehen mit der [:Laufwerksverwaltung:] oder [#GSmartControl GSmartControl] grafische Diagnosewerkzeuge zur Verfügung. = Verwendung = == Aktivierung == S.M.A.R.T., zu deutsch in etwa Selbstüberwachungs-, Analyse- und Benachrichtigungstechnik, läuft völlig autonom innerhalb des Geräts ab und ist in der Lage, Werte und Einstellungen zu speichern. Durch unsinnig restriktive BIOS-Einstellungen ist diese Funktion bei älteren Rechnern manchmal abgeschaltet. Erhält man während des Bootvorgangs eine Meldung wie {{{ IDE Primary Master S.M.A.R.T. capable but disabled }}} so wird S.M.A.R.T. erkannt, ist aber manuell abgeschaltet. Wie die notwendigen Einstellungen im BIOS vorgenommen werden, um S.M.A.R.T. wieder zu aktivieren, geht über diesen Artikel hinaus. Im Zweifelsfall sollte man auch die Dokumentation des Mainboards zu Rate ziehen. == SSDs und neue Festplattenmodelle == Wegen der rasanten Entwicklung bei SSDs und aufgrund neuer Festplattenmodelle haben die smartmontools-Versionen eine Update-Funktion für die intern genutzte Datenbank bekommen. Damit erhält man jeweils eine aktuelle '''drivedb.h''', die bei der Identifizierung der Speichermedien hilft. Um die Datenbank zu aktualisieren, dient folgender Befehl: {{{#!vorlage Befehl sudo update-smart-drivedb }}} Jetzt werden auch aktuelle SSDs und sogar NVME-Festplatten, die erst kurz auf dem Markt sind, richtig erkannt und alle SSD-spezifischen Attribute korrekt angezeigt. Dies gilt ebenso für neue Festplattenmodelle, die möglicherweise noch nicht in der Datenbank enthalten sind. Die Ausgabe von {{{#!vorlage Befehl sudo smartctl -a /dev/sda }}} zeigt an, ob die Festplatte in der Datenbank enthalten ist: {{{Device is: In smartctl database ...}}} Falls die Festplatte nicht enthalten ist, sollte wie oben beschrieben die Datenbank manuell aktualisiert werden. Hinweis: Aufgrund von Änderungen in der Infrastruktur von Sourceforge stimmt seit mindestens Anfang August 2013 der ursprüngliche Download-Link in `update-smart-drivedb` nicht mehr. Durch Änderung der URL in '''/usr/sbin/update-smart-drivedb''' kann das Problem behoben werden: {{{ # ViewVC repository browser ## MANUALLY UPDATED: commented orginial URL and inserted URL from script of smartmontools v6.2 package. ## SRCEXPR='http://smartmontools.svn.sourceforge.net/viewvc/smartmontools/$location/smartmontools/drivedb.h?revision=HEAD' SRCEXPR='http://sourceforge.net/p/smartmontools/code/HEAD/tree/$location/smartmontools/drivedb.h?format=raw' }}} Alternativ nimmt dieser Befehl in einem [:Terminal:] eingegeben die obige Änderung vor: {{{#!vorlage Befehl sed -i "/^SRCEXPR/{s#=.*#='https://sourceforge.net/p/smartmontools/code/HEAD/tree/\$location/smartmontools/drivedb.h?format=raw'#}" $(which update-smart-drivedb) }}} Seit [:Xenial:Ubuntu 16.04] war der Aufruf von `update-smart-drivedb` nicht mehr möglich (unter 20.04 ist dies möglich), da das entsprechende Programm aus dem Paket '''smartmontools''' aufgrund von Sicherheitsbedenken - die Aktualisierung erfolgt nicht über die zentrale Paketverwaltung - herausgenommen wurde. Eine Aktualisierung der Datenbank '''drivedb.h''' kann jedoch manuell vorgenommen werden. Dazu muss die Datenbank von [https://www.smartmontools.org/browser/branches?rev=4325&order=name smartmontools] {en} heruntergeladen werden und im Verzeichnis '''/var/lib/smartmontools/drivedb/''' abgelegt werden. Ggf. sollten noch die Rechte der Datenbank aktualisiert werden. Zusammenfassend kann die Aktualisierung wie folgt durchgeführt werden [1]: {{{#!vorlage Befehl wget https://www.smartmontools.org/export/latest/branches/RELEASE_7_0_DRIVEDB/smartmontools/drivedb.h sudo mv /var/lib/smartmontools/drivedb/drivedb.h /var/lib/smartmontools/drivedb/drivedb.h.bak sudo mv drivedb.h /var/lib/smartmontools/drivedb/ sudo chown -c root:root /var/lib/smartmontools/drivedb/drivedb.h }}} Eine vergleichbare Lösung dazu über Daten eines Github-Mirror des Smartmontools-Projektes ist im [https://www.thomas-krenn.com/de/wiki/Smartmontools_Drive_Database_aktualisieren#Aktualisierung_unter_Ubuntu_16.04 Thomas Krenn Wiki] {de} beschrieben. == smartctl == [sourceforge2:smartmontools:smartctl] {en} ist ein Kommandozeilenprogramm, welches S.M.A.R.T.-Statusmeldungen von modernen [wikipedia:ATA/ATAPI: ATA-] und [wikipedia:Small_Computer_System_Interface:SCSI-Festplatten] auslesen kann. Diese Selbstüberwachung erlaubt das Erkennen eventuell drohender Hardwaredefekte. Dieses Programm wird auch benötigt, um die Load-Cycle-Counts einer Notebook-Festplatte festzustellen. Um das Programm nutzen zu können, muss man den entsprechenden [:Datenträger:Gerätenamen] wissen. Außerdem sind [:sudo:Root-Rechte] erforderlich. Ein Befehl [1] ist immer nach dem folgenden Muster aufgebaut: {{{#!vorlage Befehl sudo smartctl -PARAMETER GERÄTENAME }}} Für den jeweiligen `GERÄTENAMEN` siehe den separaten Artikel [:Datenträger#Wie-heissen-die-Datentraeger:]. Verschiedene Parameter können kombiniert werden. ||<-2 tableclass="zebra_start3" tablestyle="width: 95%;" rowclass="titel"> smartctl|| || Parameter||Beschreibung|| || `-i` || Gibt an, ob S.M.A.R.T. verfügbar ist || || `-h` || Befehlsreferenz ausgeben || || `-s on` || S.M.A.R.T. wird aktiviert || || `-a` || zusammenfassende Ausgabe aller Festplatteninformationen und Testergebnisse (bei ATA gleichbedeutend mit `-H -i -c -A -l error -l selftest -l selective`, bei SCSI mit `-H -i -A -l error -l selftest`) || || `-A` || Werte aller Attribute || || `-H` || Abfrage des Gesundheitszustands || || `-c` || Überprüfung, welche Tests (TEST) möglich sind / Zeit, die diese benötigen / Anzeige des momentanen Testfortschrittes (Self-test execution status) || || `-S on` || Automatisches Speichern der Einstellungen || || `-t` TEST|| Durchführung des möglichen Tests (short, offline, long ...) || || `-o on` || Startet die ''"Offline Tests"'' mit einem 4-Stunden-Zyklus || || `-t long` || Startet einen langen selftest. Der Test ist auch unter dem Synonym Oberflächenanalyse bekannt. || || `-t short` || Startet einen kurzen selftest. Der Test ist zwar kurz, dauert aber mindestens eine Minute (auch wenn die Konsole sofort wieder freigegeben wird). Die Endzeit ist angegeben. || || `-t offline` || Startet sofort die Offline Tests (Anzeige der Ergebnisse nur mit `-l error` oder `-a`) || || `-l selftest` || Zeigt das Log des letzten Selbsttests || || `-X` || Test abbrechen || || `-l error` || Fehlermeldungen ausgeben || Weitere Parameter sind den [:man:Manpages] zu entnehmen. === Beipiel === Hier der Befehl für eine neuere '''NVME'''-Platte: {{{#!vorlage Befehl sudo smartctl -a /dev/nvme0 }}} Die Ausgabe ist hier als [[Anhang(bsp_nvme_2020.txt, Textdatei)]] abgelegt. === Schnelltest === {{{#!vorlage Befehl sudo smartctl -H /dev/sda #Status der ersten SATA-Platte }}} {{{ smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-37-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED }}} Das Ergebnis `PASSED` bedeutet, dass keine Fehler gefunden wurden. Hier gilt jedoch zu beachten, dass lediglich interne Daten ausgelesen und keine Überprüfung durchgeführt wird. Erscheint `FAILED`, droht ein Defekt und ein damit verbundener Datenverlust. === Ausführlicher Test === Für aussagekräftigere Ergebnisse ist ein ausführlicher Test des Laufwerks üblich. {{{#!vorlage Befehl sudo smartctl -t long /dev/sda #Status der ersten SATA-Platte ermitteln }}} Die Zeit der Beendigung des Tests wird danach angezeigt und hängt unter anderem von der Festplattengröße, -geschwindigkeit und möglicherweise den gefundenen Fehlern ab. Ob ein manuell angeworfener Test schon fertig ist oder noch etwas Zeit braucht kann man sich mit folgendem Befehl anzeigen lassen: {{{#!vorlage Befehl sudo smartctl -c /dev/sda | grep -A 1 "execution status" }}} Nach Ablauf dieser Zeit kann man die Ergebnisse anzeigen lassen: {{{#!vorlage Befehl sudo smartctl -a /dev/sda #Status der ersten SATA-Platte anzeigen }}} Das Ergebnis des Tests befindet sich direkt unter der Tabelle. Die Tabelle wird im nächsten Abschnitt [#Abfrage-der-Attribute Abfrage der Attribute] interpretiert. Zur Interpretation der Ausgaben kann man sich auch an das Forum [forum:sicherheit:Sicherheit] wenden. === Abfrage der Attribute === {{{#!vorlage Befehl sudo smartctl -A /dev/sda #erste SATA-Platte }}} {{{ smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-37-generic] (local build) Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net === 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 198 192 051 Pre-fail Always - 20052 3 Spin_Up_Time 0x0003 173 172 021 Pre-fail Always - 6316 4 Start_Stop_Count 0x0032 098 098 000 Old_age Always - 2178 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x000e 200 200 051 Old_age Always - 0 9 Power_On_Hours 0x0032 071 071 000 Old_age Always - 21744 10 Spin_Retry_Count 0x0012 100 100 051 Old_age Always - 0 11 Calibration_Retry_Count 0x0012 100 100 051 Old_age Always - 0 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1290 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 493 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 2178 194 Temperature_Celsius 0x0022 112 094 000 Old_age Always - 38 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 46917 200 Multi_Zone_Error_Rate 0x0008 200 200 051 Old_age Offline - 0 }}} Die Ausgabe bedeutet: ||<-2 tableclass="zebra_start3" tablestyle="width: 95%;" rowclass="titel"> Werte|| || Ausgabe||Beschreibung|| || `Value` ||aktueller Parameterwert => allgemeine Tendenz: sinkend|| || `Worst` ||bisher schlechtester Wert|| || `Thresh` ||Grenzwert|| || `Type` ||Bei Grenzunterschreitung droht ein baldiger Ausfall (Pre-fail) / der Parameter informiert über Temperatur / Alterungsprozesse der Festplatte (Old age)|| || `Updated` ||Art der Aktualisierung: permanent (always) / Selbsttest (Offline data collection)|| || `WHEN_FAILED` ||Gefahrenzustand: Sofortiger Ausfall droht durch zeitweiligen Gleichstand oder Unterschreiten von `Value` mit `Thresh`! (`FAILING_NOW`) / keine akute Gefahr bei zeitweiligem Gleichstand oder Unterschreiten von `Worst` mit `Thresh` (`In_the_past`)|| Zu Beachten ist also, dass das Unterschreiten der Grenzwerte ein Gefahrenzeichen darstellt, nicht das Überschreiten. Im Beispiel ist alles in Ordnung, da die Parameterwerte alle über den jeweiligen Grenzwerten liegen. Kritisch sind Fehler bei den mit Pre-fail bezeichneten Attributen, da hier tatsächlich ein Versagen innerhalb kürzester Zeit droht! In diesem Fall empfiehlt sich der sofortige Austausch des Laufwerks. Interpretationshilfe zur Tabelle: Solange unter der Spalte `WHEN_FAILED` keine Fehler vermerkt sind, ist das Laufwerk noch in Ordnung. Siehe auch: * [wikipedia:S.M.A.R.T.:etwas abgekürzte Erklärung der S.M.A.R.T.-Werte] * [wikipedia_en:S.M.A.R.T.:ausführliche Erklärung der S.M.A.R.T.-Werte] == GSmartControl == [https://gsmartcontrol.sourceforge.io/home/ GSmartControl] {en} bietet eine sehr einfach zu bedienende grafische Oberfläche für die `smartmontools`. Das Programm ist in den Paketquellen enthalten. Das zu installierende Paket ist: {{{#!vorlage Paketinstallation gsmartcontrol, universe }}} Sowohl der Quellcode als auch unter Umständen aktuellere DEB-Pakete als aus den offiziellen Paketquellen lassen sich auf der Projektseite [https://gsmartcontrol.sourceforge.io/home/index.php/Downloads] {en} {dl}. {{{#!vorlage Tabelle <:>[[Bild(./gsmartcontrol.png, x200)]] <:>[[Bild(./gsmartcontrol_report.png, x200)]] +++ <:>Übersicht <:>Report }}} Die Bedienung des englischsprachigen Programms ist selbsterklärend. Nach Auswahl der gewünschten Speichermediums wird ein Report erzeugt, der für weitere Diagnosezwecke gespeichert werden kann. Tooltips geben weitere Hinweise zu den jeweiligen Attributen. Im konkreten Beispiel (siehe Abbildung) tritt ein ungewöhnlich hoher Wert bei der "Soft Read Error Rate" auf, der daher rot gekennzeichnet ist. Obwohl keine S.M.A.R.T.-Warnung erfolgt, ist dieser Wert ein Indiz für ein Plattenproblem. Daher wurden die Daten der betroffenen Festplatte gesichert und die Platte selbst ausgemustert. {{{#!vorlage Hinweis GSmartControl unterstützt noch keine NVME Festplatten (Antwort von [https://gsmartcontrol.sourceforge.io/home/index.php/Support Alexander Shaduri], 22.12.20.) }}} == smartd == `smartd` ist ein [:Dienste:Dienst] (Daemon), dessen Aufgabe es ist, die S.M.A.R.T.-Einstellungen und -Daten regelmäßig abzufragen und Änderungen in der Datei '''/var/log/messages''' zu speichern bzw. diese per E-Mail zu melden. Um den Dienst über das mitgelieferte Skript '''/etc/init.d/smartmontools''' zu starten [4], muss die Datei '''/etc/default/smartmontools''' editiert werden [3]. Hier muss die Option `start_smartd=yes` aktiviert werden. Die Konfiguration von smartd erfolgt über die Datei '''/etc/smartd.conf''', in der auch einige Beispieleinstellungen angegeben sind. Ob diese Einstellungen brauchbar sind, erfährt man durch folgenden Test: {{{#!vorlage Befehl sudo smartd cat /var/log/syslog }}} Zuerst wird der Dienst gestartet (welcher dazu die Konfigurationsdatei '''/etc/smartd.conf''' liest) und dann dessen Ausgabe im Syslog angezeigt. Die sollte in etwa so aussehen: {{{ Jul 24 20:51:31 COMPUTERNAME smartd[8216]: smartd version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Home page is http://smartmontools.sourceforge.net/ Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Opened configuration file /etc/smartd.conf Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Configuration file /etc/smartd.conf parsed. Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Device: /dev/sda, opened Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Device: /dev/sda, found in smartd database. Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Device: /dev/sda, enabled SMART Attribute Autosave. Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Device: /dev/sda, enabled SMART Automatic Offline Testing. Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Device: /dev/sda, is SMART capable. Adding to "monitor" list. Jul 24 20:51:31 COMPUTERNAME smartd[8216]: Monitoring 1 ATA and 0 SCSI devices Jul 24 20:51:31 COMPUTERNAME smartd[8218]: smartd has fork()ed into background mode. New PID=8218. }}} In der Konfigurationsdatei '''/etc/smartd.conf''' steht z.B. Folgendes: {{{ # -a alle SMART-Werte beobachten # -o on aktiviert regelmäßiges OFFLINE-Testen # -S on aktiviert autosave # To schedule an Offline Immediate test after every midnight, 6am, noon,and 6pm, # plus a Short Self-Test daily at 1-2am and a Long Self-Test every Saturday at 3-4am, use: # -d sat für SATA-Platte (smartd beschwert sich sonst) # -H Health-Status ausgeben /dev/sda -a -o on -S on -s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) -d sat -H }}} Damit eine solche Konfiguration von smartd auch wirklich benutzt wird, darf sie auf keinen Fall unterhalb einer Zeile stehen, die mit `DEVICESCAN` beginnt. Nach der Installation des smartd-Paketes kann das aber der Fall sein, daher sollte man das überprüfen und gegebenenfalls diese Zeile auskommentierten (also ein "#" davor stellen): {{{ #DEVICESCAN -m root -M exec /usr/share/smartmontools/smartd-runner }}} {{{#!vorlage Experten Weitere Infos in den [:man:Manpages] von `smartd` und '''smartd.conf'''. }}} == smart-notifier == Zusätzlich kann das Paket {{{#!vorlage Paketinstallation smart-notifier, universe }}} installiert werden. Dieses sorgt dafür, dass der Desktop-Nutzer bei von smartd erkannten Problemen per [:Benachrichtigungsdienst:] gewarnt wird. === Konfiguration === Falls es nicht schon durch die Installation von 'smart-notifier geschehen, muss man dafür sorgen, dass das Programm nach dem Start des Rechners auch wirklich läuft. Dazu die [:Autostart:]-Einstellungen der jeweiligen Desktop-Oberfläche öffnen und dort kontrollieren, ob ein Eintrag vorhanden ist, der smart-notifier startet. Falls der fehlt, muss ein [:Programmstarter:] angelegt werden. Außerdem muss man nach der Installation die Konfigurationsdatei von smartd ergänzen: * die oben schon erwähnte '''/etc/smartd.conf''' öffnen (erfordert root-Rechte) und in die Zeile gehen, in der man die Konfiguration vorgenommen hat (siehe oben stehendes Beispiel) * in genau dieser Zeile wird folgendes angehängt: {{{ -m BENUTZERNAME@RECHNERNAME -M exec /usr/share/smartmontools/smartd-runner }}} * die Teile `BENUTZERNAME` und `RECHNERNAME` müssen an die entsprechenden Werte des eigenen Rechners angepasst werden * für das weiter oben stehende Beispiel sähe die Zeile dann insgesamt so aus: {{{ /dev/sda -a -o on -S on -s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) -d sat -H -m BENUTZERNAME@RECHNERNAME -M exec /usr/share/smartmontools/smartd-runner }}} * Änderungen speichern und smartd neu starten: {{{#!vorlage Befehl sudo /etc/init.d/smartmontools restart }}} === Testen des Benachrichtigungsdienstes === Um zu testen, ob smart-notifier auch tatsächlich funktioniert, geht man wie folgt vor: * Sicherstellen, dass smart-notifier läuft * '''/etc/smartd.conf''' öffnen (erfordert Root-Rechte) und wieder in die Zeile mit der gerade vorgenommen Konfiguration gehen * in der Zeile den Wert `-M test` hinzufügen * für das weiter oben stehende Beispiel sähe die Zeile dann insgesamt so aus: {{{ /dev/sda -a -o on -S on -s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) -d sat -H -m BENUTZERNAME@RECHNERNAME -M test -M exec /usr/share/smartmontools/smartd-runner }}} * Änderungen speichern und smartd neu starten: {{{#!vorlage Befehl sudo /etc/init.d/smartmontools restart }}} * jetzt sollte ein Fenster erscheinen, in dem steht, dass der Test des smartd erfolgreich war * nach dem Test muss der gerade eingefügte Teil `-M test` wieder aus '''/etc/smartd.conf''' gelöscht werden == hddtemp == hddtemp ist ein kleines Programm, das die Temperatur einer Festplatte über die in der Platte eingebauten S.M.A.R.T.-Sensoren auslesen kann. hddtemp kann die gewonnenen Daten entweder im Syslog ausgeben oder als Serverdienst im Hintergrund abfragen. Weitere Informationen hierzu gibt es in [:hddtemp:]. = Ernstfall testen = Den Benachrichtigungsdienstes zu testen ist zwar eine gute Möglichkeit, einige Konfigurationsfehler zu entdecken, stellt jedoch keinen praxisnahen Ernstfall dar. Es bleibt die Ungewissheit, ob kritische Smartwerte überhaupt erkannt und davor gewarnt werden. Ein guter, aber eher „schmutzige“ Trick, um eine Störung zu simulieren, ist das Erstellen eines defekten Sektors mittels hdparm. Es korrumpiert dabei die ECC-Daten des Sektors, jedoch nicht die Oberfläche des Mediums. Der Sektor ist also physikalisch vollkommen in Ordnung, es wird nur vorgegeben, dass ein Defekt vorliegt. == Vorbereitung == === SMART-Dienst anpassen === Als Beispiel wird folgende Einstellung in ''' /etc/smartd.conf''' verwendet: {{{ DEVICESCAN -a -I 194 -W 3,45,54 -R 5 -r 5 -n standby,10 -m BENUTZERNAME -M exec /usr/share/smartmontools/smartd-runner -s (O/../.././(06|12|18|24)|S/../../6/03|L/../(01|15)/./03) }}} Für `BENUTZERNAME` muss der entsprechende Benutzer eingetragen werden. Die Werte `(06|12|18|24)` müssen ebenfalls angepasst werden, schließlich will man nicht unnötig lange auf den Offline-Test warten. Es empfiehlt sich daher, die kommenden vollen Stunden einzutragen, z.B. `(15|16|17)`. Wie man vielleicht an der Konfiguration erkennt, soll im Fehlerfall eine E-Mail an `BENUTZERNAME` verschickt und smartd-runner gestartet. Dieser beauftragt u.a. smart-notifier eine Fehlermeldung auf dem Desktop auszugeben. Zum Einlesen der Konfiguration wird der Dienst neu gestartet: {{{#!vorlage Befehl sudo service smartd restart }}} === smart-notifier starten === In diesem Beispiel wird smart-notifier verwendet und muss daher auch gestartet werden: {{{#!vorlage Befehl smart-notifier }}} == Test == {{{#!vorlage Warnung Der folgende Gebrauch von hdparm korrumpiert Daten auf der Festplatte und kann unter Umständen das Dateisystem zerstören! Es sollte nicht auf produktiv eingesetzte Festplatten angewandt werden. }}} Der erste Schritt besteht darin eine ausrangierte, oder zumindest ungenutzte Festplatte an das System anzuschließen und einen defekten Sektor zu erzeugen. Zunächst liest man die SMART-Werte aus, um den aktuellen Stand der Festplatte zu erfahren. {{{#!vorlage Befehl sudo smartctl -A /dev/sdX }}} {{{ ... 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 200 200 000 Old_age Offline - 0 ... }}} `Current_Pending_Sector` ist bei `0`. Es liegen also keine defekten Sektoren vor. Nun erzeugt man einen defekten Sektor. `/dev/sdX` muss entsprechend angepasst werden. {{{#!vorlage Befehl sudo hdparm --yes-i-know-what-i-am-doing --make-bad-sector 100 /dev/sdX }}} Im Anschluss wird der Sektor gelesen, damit der Fehler erkannt und an SMART übertragen wird. {{{#!vorlage Befehl sudo hdparm --read-sector 100 /dev/sdX }}} Die SMART-Werte haben sich nun geändert. {{{#!vorlage Befehl sudo smartctl -A /dev/sdX }}} {{{ ... 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 1 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0 ... }}} `Current_Pending_Sector` hat den Wert `1`. Es wird ein defekter/korrumpierter Sektor gemeldet. Der Dienst smartd wird nach einiger Zeit, abhängig von Uhrzeit und Einstellung, einen Offline-Test starten und einen Fehler melden. Dieser erscheint zum einen in '''/var/log/syslog''' und in unserem Beispiel auch als E-Mail in '''/var/mail/BENUTZERNAME''' {{{#!vorlage Befehl grep smartd /var/log/syslog }}} {{{ ... Jul 1 14:42:00 pc1 smartd[20780]: Device: /dev/sdd [SAT], 1 Currently unreadable (pending) sectors Jul 1 14:42:00 pc1 smartd[20780]: Sending warning via /usr/share/smartmontools/smartd-runner to ... Jul 1 14:42:00 pc1 smartd[20780]: Warning via /usr/share/smartmontools/smartd-runner to : successful ... }}} Beispiel einer E-Mail aus '''/var/mail/BENUTZERNAME''': {{{ From root@pc1 Sun Jul 01 14:42:00 2012 Return-path: Envelope-to: @pc1 Delivery-date: Sun, 01 Jul 2012 14:42:00 +0200 Received: from root by pc1 with local (Exim 4.80) (envelope-from ) id 1SlJTU-0002x0-Dn for @pc1; Sun, 01 Jul 2012 14:42:00 +0200 Subject: SMART error (CurrentPendingSector) detected on host: pc1 To: <@pc1> X-Mailer: mail (GNU Mailutils 2.99.97) Message-Id: From: root@pc1 Date: Sun, 01 Jul 2012 14:42:00 +0200 This email was generated by the smartd daemon running on: host name: pc1 DNS domain: [Unknown] NIS domain: (none) The following warning/error was logged by the smartd daemon: Device: /dev/sdd [SAT], 1 Currently unreadable (pending) sectors For details see host's SYSLOG. You can also use the smartctl utility for further investigation. Another email message will be sent in 24 hours if the problem persists. }}} Zuletzt sollte smart-notifier eine Fehlermeldung auf dem Desktop anzeigen. == Aufräumen == Funktioniert alles wie erhofft, repariert man den als defekt gekennzeichnete Sektor. {{{#!vorlage Befehl sudo hdparm --yes-i-know-what-i-am-doing --repair-sector 100 /dev/sdX }}} Erneut wird der Sektor eingelesen und die Werte an SMART übertragen. {{{#!vorlage Befehl sudo hdparm --read-sector 100 /dev/sdX }}} Die Smart-Werte haben sich nun wieder geändert. Diesmal zum Besseren. {{{#!vorlage Befehl sudo smartctl -A /dev/sdX }}} {{{ ... 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 200 200 000 Old_age Offline - 0 ... }}} Die Zeiten an denen der Offline-Test durchgeführt werden soll, müssen unter '''/etc/smartd.conf''' ebenfalls rückgängig gemacht werden. In unserem Beispiel also wieder `(06|12|18|24)`. = Problembehebung = == Externe USB-Gehäuse == Externe USB-Gehäuse besitzen in der Regel einen Wandler-Chip (z.B. eine USB-SATA-Bridge), der als Konverter zwischen den verschiedenen Schnittstellen/Protokollen fungiert. Dabei kann es passieren, dass eine S.M.A.R.T.-Abfrage nicht korrekt umgesetzt wird: {{{#!vorlage Befehl sudo smartctl -A /dev/sdX }}} {{{ /dev/sdX: Unknown USB bridge [0x1e68:0x001b (0x000)] }}} und somit Festplatten in externen Gehäusen als nicht unterstützt erscheinen, obwohl sie von Haus aus durchaus S.M.A.R.T.-fähig sind. Abhilfe schafft die Verwendung einer speziellen Option: {{{#!vorlage Befehl sudo smartctl -A -d sat /dev/sdX }}} Siehe auch [https://www.smartmontools.org/wiki/USB USB devices and smartmontools] {en}. == NVME-Festplatten == Da smartctl für NVME-Festplatten noch nicht ganz fertig entwickelt ist, werden u.A. mit jedem Neustart eines PCs Fehlermeldungen hochgezählt. Z.B. liefert {{{#!vorlage Befehl journalctl -xb -p err }}} in einem solchen Fall folgende Zeilen: {{{#!code Mai 22 08:33:48 USER-desktop smartd[620]: Device: /dev/nvme0, number of Error Log entries increased from 345 to 347 Mai 22 08:33:48 USER-desktop smartd[620]: Warning via /usr/share/smartmontools/smartd-runner to root produced unexpected output> Mai 22 08:33:48 USER-desktop smartd[620]: /etc/smartmontools/run.d/10mail: Mai 22 08:33:48 USER-desktop smartd[620]: Your system does not have /usr/bin/mail. Install the mailx or mailutils package Mai 22 08:33:48 USER-desktop smartd[620]: run-parts: /etc/smartmontools/run.d/10mail exited with return code 1 Mai 22 08:33:48 USER-desktop smartd[620]: Warning via /usr/share/smartmontools/smartd-runner to root: failed (32-bit/8-bit exit> }}} Kontrolliert man jedoch eine solche Platte mit {{{#!vorlage Befehl sudo smartctl -a /dev/nvme0 }}} ist in der Ausgabe am Ende zu lesen "No errors logged". Eine Übersicht über den Smartmontools NVMe support zeigt [ https://www.smartmontools.org/wiki/NVMe_Support]{en}. = Links = == Intern == * [:Notfall:] {Übersicht} Was tun in Notfällen? * [:Laufwerksverwaltung:] – Grafisches Stan­dard­pro­gramm von GNOME zum Verwalten von Laufwerken und Partitionen * [:Datensicherung:] – Wie der Name sagt: Alles zum Thema Datensicheung * [:Festplatten_Problembehebung:] – Bei Fehlern im [:Dateisysteme:Dateisystem] oder auf den Partitionen * [:Festplattenschutz: Absturzsicherung von Festplatten bei ThinkPad-Modellen] * [:Datenrettung:] – Gelöschte Dateien wiederherstellen sowie Daten von beschädigten Partitionen retten * [:System#Dateisystem-und-Datentraeger: Dateisysteme und Datenträger] {Übersicht} Übersicht über weitere Artikel zum Thema == Extern == * [https://www.smartmontools.org/ Projektseite] {en} * [sourceforge:smartmontools:smartmontools auf SourceForge] {en} * [https://wiki.debianforum.de/Festplattendiagnostik-_und_%C3%9Cberwachung Debian - Wiki: Festplattendiagnostik und Überwachung] {de} * [https://wiki.debianforum.de/Hdparm#Schlechte_Sektoren_erzeugen Debian - Wiki: Schlechte Sektoren erzeugen] {de} * [http://sg.danny.cz/scsi/smartmontools_scsi.html Smartmontools for SCSI devices] {en} - Hintergrundinformationen * [http://www.linux-user.de/ausgabe/2004/10/056-smartmontools/ Smartmontools] {de} - Linux User, 10/2004 # tag: Hardware, System, Datenträger, Datenrettung, Festplatte