S.M.A.R.T Monitor Tool for Linux - Detect failing drives with emergency unmount support
Project description
S.M.A.R.T. Monitor
Et Python-basert verktøy for å lese og tolke S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) data fra harddisker på Linux-systemer.
Funksjoner
- 📊 Skann og vis alle tilgjengelige lagringsenheter
- 🔍 Les detaljerte S.M.A.R.T. attributter
- ⚠️ Oppdage potensielle helseproblemer
- 🌡️ Overvåk disktemperatur
- 📈 Vis kritiske parametre som reallokerte sektorer, strømtid, og mer
- 🧠 Health Score System - Intelligent poengberegning (0-100) basert på kritiske parametere
- 🌐 Web Dashboard - Moderne web-grensesnitt for sanntidsovervåking
- ⚙️ Konfigurerbar auto-refresh og individuell disk-monitoring
- �️ Emergency Unmount - Automatisk fjerning av kritisk feilende disker (valgfritt)
- ⌛ Lifetime Remaining - SMART ID 202 støtte for SSD-slitasjemåling
- 🔒 Thread-safe Scanning - Race condition-beskyttelse med watchdog-overvåking
- 💻 Støtte for Linux og ⚠️ Windows (via WSL2 - teoretisk, ikke testet)
Testing og Validering
MoSMART har blitt validert gjennom omfattende testing med 24 forskjellige lagringsenheter:
- Diverse disktyper: SSD, SATA HDD og IDE (legacy) disker
- Realistiske forhold: Diskene har blitt brukt av forskjellige personer med varierende arbeidsbelastninger
- Ulik slitasjegrad: Fra praktisk talt nye disker til disker nær end-of-life
- Virkelighetsjustering: Testsettet reflekterer hvordan disker brukes i praksis - ikke kun laboratorietester
Denne testingen sikrer at programmet fungerer pålitelig på disker i alle tilstander og brukerscenarier.
Krav
Systemkrav
- Linux-operativsystem
- Python 3.7 eller nyere
smartmontoolsinstallert på systemet- Root/sudo-tilgang for å lese S.M.A.R.T. data
Installasjon av systemavhengigheter
# Ubuntu/Debian
sudo apt update
sudo apt install smartmontools python3-pip python3-venv
# Fedora/RHEL
sudo dnf install smartmontools python3-pip
# Arch Linux
sudo pacman -S smartmontools python-pip
Installasjon
-
Installer systemavhengigheter
sudo apt update sudo apt install smartmontools python3-full python3-pip pipx
-
Installer med pipx (anbefalt for enkeltstående verktøy)
pipx install pySMART
ELLER opprett et virtuelt miljø:
cd /home/magnus/mosmart python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
Når du bruker virtuelt miljø, aktiver det før bruk:
source venv/bin/activate
Bruk
Viktig: Hvis du bruker virtuelt miljø, aktiver det først:
source venv/bin/activate
Web Dashboard (Anbefalt!)
Start web-serveren:
sudo ./venv/bin/python3 web_monitor.py
Med egendefinert port:
sudo ./venv/bin/python3 web_monitor.py --port 8080
Med egendefinert refresh-intervall:
sudo ./venv/bin/python3 web_monitor.py --refresh 30
Åpne deretter nettleseren din og gå til: http://localhost:5000
Web Dashboard funksjoner:
- 🎨 Moderne, fargekodet visning av alle disker
- 🔄 Auto-refresh (konfigurerbar, standard 60 sek)
- ⏯️ Slå av/på overvåking per disk
- 📊 Sanntidsoppdatering av health scores
- 🎯 Detaljert visning av alle helsekomponenter
- 📱 Responsiv design for mobil og desktop
Kommandolinje (CLI)
Liste alle lagringsenheter:
sudo ./venv/bin/python3 smart_monitor.py --list
Vis informasjon om en spesifikk disk:
sudo ./venv/bin/python3 smart_monitor.py -d /dev/sda
Vis detaljerte S.M.A.R.T. attributter:
sudo ./venv/bin/python3 smart_monitor.py -d /dev/sda --attributes
Kun helseoppsummering:
sudo ./venv/bin/python3 smart_monitor.py -d /dev/sda --health
Skann alle disker:
sudo ./venv/bin/python3 smart_monitor.py
Kommandolinjealternativer (CLI)
smart_monitor.py:
-l, --list Liste alle tilgjengelige lagringsenheter
-d, --device PATH Spesifiser hvilken enhet som skal overvåkes (f.eks. /dev/sda)
-a, --attributes Vis detaljerte S.M.A.R.T. attributter
--health Vis kun helseoppsummering
web_monitor.py:
-p, --port PORT Port for webserver (default: 5000)
-r, --refresh SEC Auto-refresh intervall i sekunder (default: 60)
--host HOST Host å binde til (default: 127.0.0.1)
Health Score System
Programmet bruker et avansert poengberegningssystem basert på industristandarder fra Backblaze, Google og diskprodusenter:
Vekting:
- Reallokerte sektorer: 50% - Mest kritisk parameter
- Ventende sektorer: 15% - Sektorer som venter på reallokering
- Urettbare sektorer: 10% - Permanent ødelagte sektorer
- Kommando timeouts: 10% - Responsivitetsproblemer
- Alder: 10% - Forventet levetid (HDD: 3-5 år, SSD: 5-10 år)
- Temperatur: 5% - Driftstemperatur (HDD: <35°C ideelt, SSD: <40°C)
Score-tolkning:
95-100: 🔵 UTMERKET - Perfekt stand80-94: 🟢 God - Normal drift60-79: 🟡 Akseptabel - Overvåk regelmessig40-59: 🟠 Advarsel - Sikre data med backup20-39: 🔴 Dårlig - Høy risiko0-19: 🔴 KRITISK - Bytt ut ASAP<0: 💀 DØD/ZOMBIE - Umiddelbar utskifting
Eksempel på output
============================================================
Device: /dev/sda
============================================================
Model: Samsung SSD 870 EVO 500GB
Serial: S5XXXXXXXX
Capacity: 500.107 GB
Interface: ATA
Assessment: PASS
Temperature: 35°C
Power On: 1234 hours
Health Summary:
Status: PASS
✓ No issues detected
Viktighelse S.M.A.R.T. attributter
Programmet overvåker spesielt disse kritiske attributtene:
- ID 5: Reallocated Sectors Count - Antall defekte sektorer som er flyttet
- ID 187: Reported Uncorrectable Errors - Feil som ikke kunne rettes
- ID 196: Reallocation Event Count - Antall forsøk på å flytte sektorer
- ID 197: Current Pending Sector Count - Sektorer som venter på reallokering
- ID 198: Uncorrectable Sector Count - Antall sektorer med urettbare feil
- ID 202: Percent Lifetime Remaining - SSD-slitasje (0-100%, lavere er dårligere)
Tekniske forbedringer
Thread-safe Scanning
MoSMART bruker thread-safe locking for alle scan-operasjoner:
- Atomic updates - Placeholder-data overskrives aldri av gammel data
- Race condition-beskyttelse - Locking på alle scan_results-tilganger
- Watchdog-overvåking - Detekterer stuck devices automatisk (30s timeout)
- Lifecycle logging - Logger stuck devices for feilsøking
Lifetime Remaining (SMART ID 202)
Støtte for SMART ID 202 (Percent_Lifetime_Remaining) på moderne SSD-er:
- Display - Vises inline hvis >10%, separat hvis ≤10%
- Penalty scoring - Eksponentiell straff ved lav verdi:
- ≤5%: -35 poeng (kritisk)
- 6-10%: -20 til -10 poeng (advarsel)
- 11-20%: Lineær nedgang
- ≥21%: Ingen straff
- Tooltips - Kontekstavhengige meldinger for brukerveiledning
Windows-støtte (WSL2)
MoSMART fungerer fullt på Windows via WSL2 (Windows Subsystem for Linux):
- Full funksjonalitet - Alle features tilgjengelig
- Enkel tilgang - Dashboard tilgjengelig fra Windows-nettleser
- Filintegrasjon - WSL-filer tilgjengelige via
\\wsl$\i Filutforsker - Se Installasjon for komplett WSL2-guide
Feilsøking
"Permission denied" feil
S.M.A.R.T. data krever root-tilgang. Kjør programmet med sudo:
sudo python3 smart_monitor.py -d /dev/sda
"Command not found: smartctl"
Installer smartmontools:
sudo apt install smartmontools
"No module named 'pySMART'"
Installer Python-avhengigheter i et virtuelt miljø:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
"externally-managed-environment" feil
Dette er normalt på nyere Debian/Ubuntu-systemer. Bruk virtuelt miljø:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Virtuelt miljø ikke tilgjengelig
Installer python3-full:
sudo apt install python3-full
Emergency Unmount
MoSMART kan automatisk fjerne kritisk feilende disker fra systemet for å forhindre datakorrupsjon.
Default: PASSIVE modus (trygt)
- Evaluerer disk-helse
- Logger beslutninger
- Ingen automatiske handlinger
Aktivere ACTIVE modus (valgfritt):
# 1. Rediger config
nano ~/.mosmart/settings.json
# 2. Sett mode til ACTIVE
{
"emergency_unmount": {
"mode": "ACTIVE"
}
}
# 3. Restart service
sudo systemctl restart mosmart
Sikkerhet:
- ✅ Aldri unmount kritiske stier (/, /boot, /home)
- ✅ 30 minutters cooldown mellom forsøk
- ✅ Full logging før/under/etter
- ✅ Default til PASSIVE ved config-feil
Se EMERGENCY_UNMOUNT_IMPLEMENTATION.md for detaljer.
Lisens
MoSMART Monitor bruker en delt lisensmodell for maksimal kontroll og åpenhet:
📜 Kode - GNU General Public License v3.0 (GPLv3)
All Python-kode og JavaScript-kode er lisensiert under GPLv3. Dette betyr:
- ✅ Du kan bruke, endre og dele koden
- ✅ Du må dele dine endringer under samme lisens
- ✅ Du må inkludere LICENSE-fil og copyright-notis
Se LICENSE fil for fullstendig tekst.
🎨 Logo & Design - All Rights Reserved
De følgende ressurser er IKKE dekket av GPLv3:
- modig-logo-monokrom.png - MoSMART Monitor logo
- logo-top.svg - Modigs Datahjelp logo
- Alle UI/UX design-elementer og visuell identitet
© Magnus S. Modig / Modigs Datahjelp – All Rights Reserved
Disse kan IKKE brukes, reproduseres eller modifiseres uten eksplisitt tillatelse.
📚 Dokumentasjon - Creative Commons BY-SA 4.0
All dokumentasjon er lisensiert under CC BY-SA 4.0:
- README.md
- dokumentasjon-no.md
- documentation-en.md
- PASSIVE_MODE_README.md
- EMERGENCY_UNMOUNT_IMPLEMENTATION.md
- Alle andre .md-dokumentasjonsfiler
Du kan dele og tilpasse dokumentasjonen med attribusjon.
ℹ️ Se også
Se COPYRIGHT fil for fullstendig lisens- og branding-informasjon.
Bidrag
Bidrag er velkomne! Vennligst åpne en issue eller pull request.
Advarsel
⚠️ Dette verktøyet er laget for informasjonsformål. Ta alltid backup av viktige data, og konsulter med en profesjonell ved tegn på diskfeil.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mosmart-0.9.0.tar.gz.
File metadata
- Download URL: mosmart-0.9.0.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db072f0f543f179953e12e7b829e199bd4d12ec704d3ee0c0e013c76ed2a0c6c
|
|
| MD5 |
12b61df1172db991904ffabe93401025
|
|
| BLAKE2b-256 |
3be2968bf15e0baedf23efcdd334841050268bf46a110a991735b4bd3a08771c
|
File details
Details for the file mosmart-0.9.0-py3-none-any.whl.
File metadata
- Download URL: mosmart-0.9.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bf29116eadc34b6692cfe5a33e3d0ef7f1cab53eda2bc00c415a72969f0ef0d
|
|
| MD5 |
dbe858f5ad786448d866b6d638977ac5
|
|
| BLAKE2b-256 |
effd9134759d1ebf12ae2147e2a2832784f25141e3679eecbced5a0f1f6a8a7d
|