Hoppa till innehållet

S.M.A.R.T.

diskens inbyggda självövervakning som varnar för haveri

  • Oil temperature gauge, motorcycle, details
    Foto: miniformat65 / Pixabay
  • Hands on wheel, vintage dashboard, truck interior
    Foto: ahmetyuksek / Pixabay

Använd begreppet i ett beslut

Använd ”Vad är S.M.A.R.T.?” i ett konkret beslut. Vi kan knyta begreppet till systemet du bygger eller köper. Laptopen, skrivaren, inloggningen och e-posten, fixade snabbt och på ett begripligt språk, utan att någon behöver känna sig dum.

Se våra tjänster Hör av dig

Granska antagandena bakom ordet

Använd förklaringen och det länkade arbetet för att formulera frågor till projektet. Vi kan undersöka antagandena tillsammans innan ett verktyg väljs. Etablerade en avdelning för teknisk support — 10,000 kunder som fick hjälp av en supportavdelning byggd från grunden

Etablerade en avdelning för teknisk support Hör av dig

Vad det är

S.M.A.R.T. står för Self-Monitoring, Analysis and Reporting Technology; smartmontools och projektets manualsidor skriver det utan punkter, som SMART. Det är ett register som disken för över sig själv i sin egen firmware medan den arbetar: räknare för händelser, mätvärden om dess skick och resultaten av tester den har kört. Operativsystemet kan när som helst be enheten om det registret. smartmontools, verktygssamlingen som den här sidan bygger på, skriver att tekniken är inbyggd i de flesta moderna ATA/SATA-, SCSI/SAS- och NVMe-diskar. Paketet har två program: smartctl, som frågar ut och testar en disk när du kör det, och smartd, en daemon som håller vakt i bakgrunden.

Vad en disk kan rapportera beror på vilken kommandouppsättning den talar. En ATA- eller SATA-disk för en tabell över numrerade attribut från 1 till 253, vart och ett med sitt namn; attribut 12 räknar till exempel hur många gånger disken har slagits på. Varje attribut har ett råvärde, själva räknaren eller mätningen, och ett normaliserat värde mellan 1 och 254 som tillverkarens firmware räknar fram ur råvärdet med sin egen formel. Bredvid dem står det lägsta normaliserade värde disken har registrerat under hela sin livstid och en tröskel som tillverkaren har bestämt. Ett attribut vars normaliserade värde sjunker till tröskeln eller under räknas som underkänt.

Varje attribut hör till en av två typer. Ett pre-failure-attribut på eller under sin tröskel säger att disken är nära att haverera. Ett old age-attribut, även kallat användningsattribut, på eller under sin tröskel säger att disken har nått slutet av sitt liv genom vanligt slitage. Manualen för smartctl betonar att etiketten Pre-fail i sig inte är något att oroa sig för: den får den innebörden först när värdet har passerat tröskeln.

Ovanför tabellen står ett samlat utlåtande, hälsostatusen. En ATA-disk svarar på kommandot SMART RETURN STATUS med godkänt eller underkänt. En SCSI- eller SAS-disk rapporterar via en loggsida för undantag och sina sense-data, och en NVMe-enhet sätter bitar i Critical Warning-byten i sin SMART/Health Information-logg. Diskar kan också testa sig själva på begäran: ett kort test, som brukar vara klart på under tio minuter, ett långt som tar allt från tiotals minuter till flera timmar, och på ATA-diskar ett conveyance-test som letar efter transportskador. Resultatet av varje test hamnar i en självtestlogg på disken.

Varför det spelar roll

En disk ser sina egna problem innan någon annan gör det. Den vet vilka sektorer som inte längre går att läsa, hur ofta den har slagits på och hur varm den går. S.M.A.R.T. är kanalen som för den kunskapen vidare till de människor som ansvarar för datan, och smartmontools beskriver vinsten återhållsamt: i många fall, skriver projektet, ger verktygen förvarning om att en disk försämras och kommer att haverera. Många fall är inte alla, och en stor del av den här sidan handlar om skillnaden.

Den starkaste signalen är utlåtandet. När smartctl rapporterar en underkänd hälsostatus säger manualen att disken antingen redan har havererat eller räknar med att göra det inom de närmaste 24 timmarna, och den uppmanar läsaren att hämta hela rapporten och flytta datan till en trygg plats utan dröjsmål. Svagare signaler kommer tidigare. En väntande sektor (pending sector) är en sektor som disken vill markera som dålig och byta mot en reservsektor, typiskt för att en läsning från den misslyckades; ett tal över noll betyder att en del data på disken inte längre går att läsa. Disken räknar de sektorerna i attribut 197, och i attribut 198 räknar den sektorer som varken en offline-skanning eller ett självtest lyckades läsa.

Inget av det hjälper om ingen tittar. smartd slår på övervakningen på ATA-diskar, frågar diskarna var 30:e minut som standard, rapporterar fel och ändrade attribut till syslog och kan skicka en varning med e-post. Den kan också starta självtester enligt en tidsplan, så det behövs inget cron-jobb för den delen. Projektet är gammalt och fortfarande i rörelse: i oktober 2022 markerade det att 20 år hade gått sedan den första utgåvan, den 30 april 2025 släpptes version 7.5, och den 1 juni 2025 flyttade utvecklingen från SourceForge till GitHub. Det körs bland annat på Linux, BSD-systemen, macOS, Solaris och Windows.

Så ser det ut i praktiken

Ta en ny server med en SATA-disk på /dev/sda. Tre kommandon ger överblicken:

smartctl -i /dev/sda
smartctl -H /dev/sda
smartctl -A /dev/sda

Det första visar modell, serienummer och firmware, om enheten stöder S.M.A.R.T., om funktionen är påslagen och om enheten finns i enhetsdatabasen hos smartmontools. Det andra visar utlåtandet. Det tredje visar attributtabellen: VALUE och WORST innehåller de normaliserade talen, THRESH tröskeln, TYPE anger Pre-fail eller Old_age, RAW_VALUE innehåller råtalet, och WHEN_FAILED visar FAILING_NOW, In_the_past eller ett streck för ett attribut som aldrig har underkänts. Vill du se allt på en gång visar smartctl -x all information verktyget kan läsa, S.M.A.R.T. och annat, med tabellen i en tätare layout.

Ett långt självtest är den grundligare versionen av det korta:

smartctl -t long /dev/sda
smartctl -l selftest /dev/sda

Om inte -C begär captive mode körs testet inne i disken medan systemet sköter sitt arbete. Det kan göra enheten långsammare, tung trafik från operativsystemet gör att det tar längre tid, och bara ett test körs åt gången. Manualen tillägger att en avstängning mitt i testet inte bör göra någon skada, eftersom testet antingen avbryts eller återupptas. Det andra kommandot läser självtestloggen när den beräknade tiden har gått.

Skript bör läsa slutstatusen i stället för texten. smartctl bygger den av åtta bitar, och manualens eget exempel testar bit 3, som sätts när disken rapporterar att den håller på att haverera:

smartctl -q silent -H /dev/sda
smartstat=$(($? & 8))

-q silent skriver ingenting, så slutstatusen är det enda svaret. En status över noll betyder inte alltid en döende disk: bit 6 ensam betyder till exempel bara att felloggen innehåller poster.

På längre sikt läser smartd sina regler från smartd.conf. En rad kan täcka alla diskar som skanningen hittar:

DEVICESCAN -a -s (S/../.././02|L/../../6/03) -W 2,40,45 \
  -m ops@example.com -M test

-a slår på standardpaketet: hälsostatusen, fel- och självtestloggarna, underkända användningsattribut, ändringar i attributvärden och, på ATA-diskar, räknarna i attribut 197 och 198. Mönstret efter -s startar ett kort test varje dag mellan klockan 02 och 03 och ett långt varje lördag mellan klockan 03 och 04. -W 2,40,45 rapporterar en temperaturändring på 2 grader, skriver en notering i loggen vid 40 °C och skickar en kritisk varning, via syslog och e-post, vid 45 °C. -m anger mottagaren, och -M test skickar ett testmeddelande när smartd startar. Efter en ändring får killall -HUP smartd daemonen att läsa filen igen.

Siffror som dessa betyder mest medan disken fortfarande svarar. Vår portföljpost om att rädda data ur lagringsmedier som gått sönder börjar efter den punkten: mellan 2003 och 2014 kom folk in med minneskort, hårddiskar, SSD:er och RAID-arrayer som redan hade gett upp, och metoden måste passa just den sortens medium.

Var det går fel

Ett godkänt utlåtande läses som ett friskintyg. Hälsostatusen säger bara att disken inte själv har förklarat sig havererad. Attribut kan ligga på eller under sin tröskel nu eller tidigare, och väntande sektorer kan redan rymma oläsbar data, medan utlåtandet fortfarande lyder godkänt. Lösningen är att läsa attributtabellen och självtestloggen också, låta smartd rapportera attribut 197 och 198 och ha säkerhetskopior som inte hänger på diskens uppfattning om sig själv.

Råvärden tas för gott. Standarden säger inte hur ett råvärde motsvarar en fysisk enhet. Manualen för smartctl nämner en Hitachi-disk som räknar tiden den varit påslagen i minuter i stället för timmar, och IBM-diskar som håller tre temperaturer i sina råvärden. Sedan revision 4 av ATA/ATAPI-4 har attributens innebörd lämnats helt åt leverantörerna, och SSD:er ger en del av numren andra betydelser, så det utskrivna namnet kan vara fel om inte enheten finns i databasen. Lösningen är att jämföra en disk med dess egen historik, inte med en annan modell, och att kontrollera vad -i säger om databasen innan man litar på ett namn.

-a används på en ATA-disk. Det var det klassiska sättet att se allt, men manualen rekommenderar det inte längre för ATA, eftersom det utelämnar de val som kräver 48-bitars ATA-kommandon, till exempel den utökade felloggen. Lösningen är att använda -x.

En RAID-kontroller döljer diskarna. Operativsystemet ser en logisk enhet som inte har något användbart att rapportera, och den automatiska skanningen i smartd på Linux utelämnar diskar bakom RAID-kontroller helt. Lösningen är att tala med varje fysisk disk genom kontrollern med rätt enhetstyp: -d megaraid,N når disk N bakom en MegaRAID- eller Dell PERC-kontroller på Linux och FreeBSD, och en rad som /dev/sda -d megaraid,0 -a i smartd.conf ställer den disken under bevakning.

Ett USB-kabinett står i vägen. USB-lagring talar SCSI-kommandouppsättningen mot datorn men rymmer nästan alltid en ATA- eller SATA-disk eller flashminne. Manualen nämner firmwaren i sådana bryggor, tillsammans med RAID-kontroller, som ett lager som kan lämna hälsostatusen okänd, och smartctl varnar då och nöjer sig med att jämföra pre-failure-attributen med deras trösklar. Lösningen är att prova -d sat, som packar in ATA-kommandona i standarden för översättning från SCSI till ATA; -d sat,12 väljer den kortare av dess två kommandoformer.

Varningsmejlet kommer aldrig fram. smartd skickar e-post med systemets mail-kommando, som måste finnas i sökvägen för den miljö smartd startades från. Saknas det finns varningen bara i syslog. Lösningen är att använda -M test och sedan kontrollera att testmeddelandet faktiskt har landat i en inkorg som någon läser; -M exec kan peka smartd mot ett annat e-postprogram eller ett skript.

En testplan startar aldrig. I mönstret efter -s ska månad, dag i månaden och timme skrivas med två siffror vardera. Ett mönster som S/../.././2 matchar aldrig, och manualen varnar uttryckligen för just det. Lösningen är att skriva 02 och att läsa loggen efter första natten för att se att ett test faktiskt kördes.

En felaktig ändring går obemärkt förbi. När smartd läser in sin konfiguration igen efter en hangup-signal och hittar ett syntaxfel skriver den ut felet och fortsätter med de gamla reglerna, som om signalen aldrig hade kommit. Lösningen är att läsa loggen efter varje omläsning eller att starta om tjänsten, eftersom smartd vägrar att starta alls med en felaktig fil.

Ingen håller koll på temperaturen. Alla temperaturrapporter är avslagna som standard, och -a slår inte på dem. Lösningen är att lägga till -W med gränser som passar hårdvaran.

En kontroll väcker en sovande disk. En disk som har varvat ned för att spara ström varvar upp igen när smartctl frågar den. Lösningen, för skript som körs ofta, är att använda -n standby, som får smartctl att avsluta med status 2 i stället för att väcka disken, eller -n standby,0, som räknar det fallet som ett lyckat utfall.

Läs mer

Ordlista

Välj utifrån dina faktiska förutsättningar

Beskriv enheten eller tjänsten, observerade symtom och uppgifterna som måste bevaras. Vi kan fastställa det säkraste användbara undersökningssteget.

Se vad det kostar Hör av dig

Gör begreppen praktiska

Fråga hur ”Vad är S.M.A.R.T.?” gäller i din organisation. Ett konkret exempel från ditt nuvarande system räcker för att börja samtalet.

Se våra tjänster
welcome@engineer.company +45 50 10 61 84 Köpenhamn, Danmark
QR-kod för S.M.A.R.T.
Ta med dig den här sidanhttps://engineer.company/sv/glossary/smart/