S.M.A.R.T.-Werte-Überwachung/-Anzeige von Festplatten/HDDs (Hard Disk Drives) und SSDs
Zweck: Warnung des Anwenders vor einem drohenden Datenverlust durch einen wahrscheinlich werdenden Ausfall/Defekt des Datenträgers anhand der Auswertung dessen S.M.A.R.T.-Daten (quasi der Gesundheitszustand des Datenträgers)
unterstützte Betriebssysteme:
- Linux (getestet: Kernel 4.15.x)
- Windows (getestet: Version 7) ehemals, für die Zukunft wieder geplant
eingesetzte Technologien:
- wxWidgets für Plattform-übergreifende grafische Benutzerschnittstelle (GUI)
- Client/Server-Prinzip mit (BSD) Sockets, damit man S.M.A.R.T.-Daten von entfernten Rechnern über Netzwerk/Internet lesen kann bzw. die (grafische/textuelle) Benutzerschnittstelle weniger Berechtigungen benötigt.
Alternativ kann die Benutzerschnittstelle (GUI/TUI/...) S.M.A.R.T.-Werte direkt lesen, was aber in der Regel höhere/Administrator-Rechte erfordert.
Features:
- Auswahl der anzuzeigenden/abzufragenden/zu übertragenden S.M.A.R.T.-Daten über eine Konfigurationsdatei zur Konzentration auf wesentliche Daten/schnellerer Programm-Ausführung
- Der Dateipfad der Logdatei kann spezifiziert werden. So kann auch auf eine RAM-Disk geschrieben werden. Dies ist bei einem HDD-/SSD-Überwachungs-Tool sinnvoll ist, da es so den Datenträger schont und die Abfrage der S.M.A.R.T.-Daten nicht zu deren Verschlechterung führt
- Anzeige der S.M.A.R.T.-Daten als Rohdaten ("raw value") und menschenlesbar ("human readable")
- verbindet sich automatisch mit dem Server nach einem Verbindungsabbruch bzw. verbindet sich, sobald der Server erreichbar ist
- mehrere Clients können gleichzeitig mit dem Server verbunden sein
- Installation des Servers als systemd-Dienst möglich
- Einheiten der S.M.A.R.T.-Werte werden durch Plausibilitätsprüfungen erkannt im Gegensatz zu anderen Ansätzen mit Datenbanken.
Die Einheiten sind nicht standardisiert, sondern können zwischen Herstellern/Modellen/Firmwares unterschiedlich sein.
Implementierung:
der Zugriff auf die S.M.A.R.T.-Daten ist als Interface/Basisklasse implementiert, um verschiedene Betriebssysteme zu unterstützen
Es werden CMake Include-Dateien verwendet, die auch die Tests einbinden. Dadurch werden Redundanzen vermieden.
Qualitätssicherung
die Qualität des Software Engineering/Implementierung wird durch verschiedene Tests garantiert:
- minimaler Client
- minimaler Client, der von der Klasse SMARTmonitorClient abstammt
- alle unterstützten SMART-Attribute abfragen und die Laufzeit messen
Z.B. der minimale Client:
console:
"<data_carrier model="HFS256G39TND-N210A" firmware="30001P10" serial_number="EJ7CN55981080CH09"><supportedSMART_IDs>1,5,9,12,100,168,169,171,172,174,175,176,177,178,179,180,184,187,188,194,195,196,198,199,204,212,234,241,242,250</supportedSMART_IDs></data_carrier>
# XML bytes to read:844
<data_carrier model="HFS256G39TND-N210A" firmware="30001P10" serial_number="EJ7CN55981080CH09"><SMART ID="1" raw_value="0" time_in_s="182016.266"/><SMART ID="5" raw_value="0" time_in_s="182016.312"/><SMART ID="9" raw_value="50072400000" time_in_s="182016.391"/><SMART ID="12" raw_value="730" time_in_s="182016.438"/><SMART ID="187" raw_value="3" time_in_s="182016.438"/><SMART ID="194" raw_value="314150" time_in_s="182016.516"/><SMART ID="195" raw_value="4294967295" time_in_s="182016.531"/><SMART ID="196" raw_value="0" time_in_s="182016.547"/><SMART ID="198" raw_value="0" time_in_s="182016.578"/><SMART ID="199" raw_value="0" time_in_s="182016.578"/><SMART ID="204" raw_value="7121" time_in_s="182016.625"/><SMART ID="241" raw_value="171798" time_in_s="182016.688"/><SMART ID="242" raw_value="319102" time_in_s="182016.703"/></data_carrier>
[...]
"