S.M.A.R.T.
diskens inbyggda självövervakning som varnar för haveri

Foto: miniformat65 / Pixabay 
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.
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
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/sdaDet 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/sdaOm 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
- smartmontools — projektets startsida: båda programmen, plattformar och nyheter om utgåvor.
- smartctl(8), källtexten till manualsidan — attribut, trösklar, hälsostatus, självtester, enhetstyper och slutstatus.
- smartd(8), källtexten till manualsidan — daemonen: hur ofta den frågar, syslog, signaler och hur den hittar diskar.
- smartd.conf(5), källtexten till manualsidan — direktiv för övervakning, tidsplaner för tester, temperaturgränser och e-post.

