Spring til indhold

S.M.A.R.T.

diskens indbyggede selvovervågning, der varsler nedbrud

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

Brug begrebet i en beslutning

Brug »Hvad er S.M.A.R.T.?« i en konkret beslutning. Vi kan knytte begrebet til det system, du bygger eller køber. Den bærbare, printeren, login og postkassen klaret hurtigt og i et sprog, man forstår, uden at nogen føler sig dum.

Se vores ydelser Kontakt os

Undersøg antagelserne bag ordet

Brug forklaringen og det tilknyttede arbejde til at formulere spørgsmål til dit projekt. Vi kan undersøge antagelserne sammen, før et værktøj vælges. Har etableret en teknisk supportafdeling — 10,000 kunder betjent af en supportafdeling bygget fra bunden

Har etableret en teknisk supportafdeling Kontakt os

Hvad det er

S.M.A.R.T. står for Self-Monitoring, Analysis and Reporting Technology; smartmontools og projektets manualer skriver det uden punktummer, som SMART. Det er en optegnelse, som en disk fører over sig selv i sin egen firmware, mens den arbejder: tællinger af hændelser, målinger af dens tilstand og resultaterne af de test, den har kørt. Styresystemet kan til enhver tid bede drevet om den optegnelse. smartmontools, det værktøjssæt denne side bygger på, skriver, at teknologien er indbygget i de fleste moderne ATA/SATA-, SCSI/SAS- og NVMe-diske. Pakken har to programmer: smartctl, der spørger og tester én disk, når du kører det, og smartd, en dæmon, der holder vagt i baggrunden.

Hvad en disk kan rapportere, afhænger af det kommandosæt, den taler. En ATA- eller SATA-disk fører en tabel over nummererede attributter fra 1 til 253, hver med sit navn; attribut 12 tæller for eksempel, hvor mange gange disken er blevet tændt. Hver attribut har en råværdi, selve tællingen eller målingen, og en normaliseret værdi mellem 1 og 254, som producentens firmware regner ud fra råværdien efter sin egen formel. Ved siden af dem står den laveste normaliserede værdi, disken har registreret i hele sin levetid, og en tærskel, som producenten har fastsat. En attribut, hvis normaliserede værdi falder til tærsklen eller derunder, regnes for fejlet.

Hver attribut hører til en af to typer. En pre-failure-attribut på eller under sin tærskel siger, at disken er tæt på at bryde sammen. En old age-attribut, også kaldet en brugsattribut, på eller under sin tærskel siger, at disken har nået enden af sit liv gennem almindeligt slid. smartctl-manualen understreger, at mærkaten Pre-fail i sig selv ikke er grund til bekymring: den får først den betydning, når værdien har krydset tærsklen.

Over tabellen står én samlet dom, sundhedsstatussen. En ATA-disk svarer på kommandoen SMART RETURN STATUS med bestået eller ikke bestået. En SCSI- eller SAS-disk melder via en logside for undtagelser og sine sense-data, og et NVMe-drev sætter bit i Critical Warning-byten i sin SMART/Health Information-log. Diske kan også teste sig selv på bestilling: en kort test, som regel færdig på under ti minutter, en lang, der tager alt fra snesevis af minutter til flere timer, og på ATA-diske en conveyance-test, der leder efter skader fra transport. Resultatet af hver test havner i en selvtestlog på disken.

Hvorfor det betyder noget

En disk ser sine egne problemer, før nogen anden gør. Den ved, hvilke sektorer den ikke har formået at læse, hvor tit den er blevet tændt, og hvor varm den kører. S.M.A.R.T. er den kanal, der bringer den viden videre til de mennesker, som har ansvaret for dataene, og smartmontools beskriver gevinsten beskedent: i mange tilfælde, skriver projektet, giver værktøjerne et forvarsel om, at en disk er ved at blive dårligere og vil bryde sammen. Mange tilfælde er ikke alle, og en stor del af denne side handler om forskellen.

Det stærkeste signal er dommen. Når smartctl melder en sundhedsstatus, der ikke er bestået, siger manualen, at disken enten allerede har fejlet eller venter at fejle inden for de næste 24 timer, og den beder læseren hente den fulde rapport og flytte dataene et sikkert sted hen uden tøven. Svagere signaler kommer tidligere. En ventende sektor (pending sector) er en, disken gerne vil markere som dårlig og bytte ud med en reservesektor, typisk fordi en læsning fra den mislykkedes; et tal over nul betyder, at nogle data på disken ikke længere kan læses. Disken tæller de sektorer i attribut 197, og i attribut 198 tæller den sektorer, som hverken en offline-scanning eller en selvtest har formået at læse.

Intet af det hjælper, hvis ingen kigger. smartd slår overvågningen til på ATA-diske, spørger diskene hver halve time som standard, melder fejl og ændrede attributter til syslog og kan sende en advarsel med e-mail. Den kan også starte selvtest efter en tidsplan, så der skal ikke noget cron-job til den del. Projektet er gammelt og stadig i bevægelse: det markerede 20-året for sin første udgivelse i oktober 2022, udgav version 7.5 den 30. april 2025 og flyttede sin udvikling fra SourceForge til GitHub den 1. juni 2025. Det kører blandt andet på Linux, BSD-systemerne, macOS, Solaris og Windows.

Sådan ser det ud i praksis

Tag en ny server med en SATA-disk på /dev/sda. Tre kommandoer giver overblikket:

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

Den første viser model, serienummer og firmware, om drevet understøtter S.M.A.R.T., om funktionen er slået til, og om drevet står i smartmontools' drevdatabase. Den anden viser dommen. Den tredje viser attributtabellen: VALUE og WORST rummer de normaliserede tal, THRESH tærsklen, TYPE siger Pre-fail eller Old_age, RAW_VALUE rummer råtallet, og WHEN_FAILED viser FAILING_NOW, In_the_past eller en streg for en attribut, der aldrig har fejlet. Vil du have det hele på én gang, viser smartctl -x alt, hvad værktøjet kan læse, S.M.A.R.T. og andet, med tabellen i et tættere layout.

En lang selvtest er den grundigere udgave af den korte:

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

Medmindre -C beder om captive mode, kører testen inde i disken, mens systemet passer sit arbejde. Den kan gøre drevet langsommere, travl trafik fra styresystemet får den til at tage længere tid, og der kører kun én test ad gangen. Manualen tilføjer, at en nedlukning midt i testen ikke bør gøre skade, fordi testen enten afbrydes eller genoptages. Den anden kommando læser selvtestloggen, når den anslåede tid er gået.

Scripts bør læse exitstatussen frem for teksten. smartctl bygger den af otte bit, og manualens eget eksempel tester bit 3, som sættes, når disken melder, at den er ved at fejle:

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

-q silent udskriver ingenting, så exitstatussen er det eneste svar. En status over nul betyder ikke altid en døende disk: bit 6 alene betyder for eksempel kun, at fejlloggen indeholder poster.

På længere sigt læser smartd sine regler fra smartd.conf. Én linje kan dække alle de diske, scanningen finder:

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

-a slår standardsættet til: sundhedsstatussen, fejl- og selvtestloggene, fejlede brugsattributter, ændringer i attributværdier og, på ATA-diske, tællingerne i attribut 197 og 198. Mønsteret efter -s starter en kort test hver dag mellem kl. 2 og 3 om natten og en lang hver lørdag mellem kl. 3 og 4. -W 2,40,45 melder en temperaturændring på 2 grader, skriver en note i loggen ved 40 °C og sender en kritisk advarsel, via syslog og e-mail, ved 45 °C. -m angiver modtageren, og -M test sender én testbesked, når smartd starter. Efter en ændring får killall -HUP smartd dæmonen til at læse filen igen.

Tal som disse betyder mest, mens disken stadig svarer. Vores porteføljeopslag om datagendannelse fra ødelagte lagermedier begynder efter det punkt: mellem 2003 og 2014 kom folk ind med hukommelseskort, harddiske, SSD’er og RAID-arrays, der allerede havde svigtet, og metoden skulle passe til netop den slags medie.

Hvor det går galt

En bestået dom læses som en ren attest. Sundhedsstatussen siger kun, at disken ikke selv har erklæret sig fejlet. Attributter kan ligge på eller under deres tærskel nu eller tidligere, og ventende sektorer kan allerede rumme ulæselige data, mens dommen stadig lyder på bestået. Løsningen er at læse attributtabellen og selvtestloggen med, lade smartd melde attribut 197 og 198 og holde backup, der ikke afhænger af diskens mening om sig selv.

Råværdier tages for pålydende. Standarden siger ikke, hvordan en råværdi svarer til en fysisk enhed. smartctl-manualen nævner en Hitachi-disk, der tæller driftstid i minutter i stedet for timer, og IBM-diske, der holder tre temperaturer i deres råværdier. Siden revision 4 af ATA/ATAPI-4 har betydningen af attributterne været helt op til leverandørerne, og SSD’er giver nogle af numrene andre betydninger, så det udskrevne navn kan være forkert, medmindre drevet står i databasen. Løsningen er at sammenligne en disk med dens egen historik, ikke med en anden model, og at tjekke, hvad -i siger om databasen, før man stoler på et navn.

-a bruges på en ATA-disk. Det var den klassiske måde at se alt på, men manualen anbefaler det ikke længere til ATA, fordi det udelader de valgmuligheder, der kræver 48-bit ATA-kommandoer, for eksempel den udvidede fejllog. Løsningen er at bruge -x.

En RAID-controller skjuler diskene. Styresystemet ser ét logisk drev, som ikke har noget brugbart at melde, og den automatiske scanning i smartd på Linux udelader helt diske bag RAID-controllere. Løsningen er at tale med hver fysisk disk gennem controlleren med den passende enhedstype: -d megaraid,N når disk N bag en MegaRAID- eller Dell PERC-controller på Linux og FreeBSD, og en linje som /dev/sda -d megaraid,0 -a i smartd.conf sætter den disk under opsyn.

Et USB-kabinet står i vejen. USB-lagring taler SCSI-kommandosættet over for computeren, men rummer næsten altid en ATA- eller SATA-disk eller flashhukommelse. Manualen nævner firmwaren i den slags broer, sammen med RAID-controllere, som et lag, der kan efterlade sundhedsstatussen ukendt, og smartctl advarer så og nøjes med at sammenligne pre-failure-attributterne med deres tærskler. Løsningen er at prøve -d sat, som pakker ATA-kommandoerne ind i standarden for SCSI-til-ATA-oversættelse; -d sat,12 vælger den korteste af dens to kommandoformer.

Advarselsmailen kommer aldrig. smartd sender mail med systemets mail-kommando, som skal ligge i stien for det miljø, smartd blev startet fra. Mangler den, findes advarslen kun i syslog. Løsningen er -M test og derefter at tjekke, at testbeskeden faktisk er landet i en indbakke, som nogen læser; -M exec kan pege smartd mod et andet mailprogram eller et script.

En testplan går aldrig i gang. I mønsteret efter -s skal måned, dag i måneden og time hver skrives med to cifre. Et mønster som S/../.././2 matcher aldrig, og manualen advarer netop om det. Løsningen er at skrive 02 og at læse loggen efter den første nat for at se, at en test faktisk kørte.

En fejlbehæftet ændring går ubemærket hen. Når smartd genindlæser sin konfiguration på et hangup-signal og finder en syntaksfejl, skriver den fejlen ud og fortsætter med de gamle regler, som om signalet aldrig var kommet. Løsningen er at læse loggen efter hver genindlæsning eller at genstarte tjenesten, for smartd nægter helt at starte med en fejlbehæftet fil.

Ingen holder øje med temperaturen. Alle temperaturrapporter er slået fra som standard, og -a slår dem ikke til. Løsningen er at tilføje -W med grænser, der passer til hardwaren.

Et tjek vækker en sovende disk. En disk, der er spundet ned for at spare strøm, spinner op, når smartctl spørger den. Løsningen, for scripts der kører ofte, er -n standby, som får smartctl til at afslutte med status 2 i stedet for at vække disken, eller -n standby,0, som regner det tilfælde som en succes.

Læs mere

Ordliste

Vælg ud fra dine faktiske vilkår

Beskriv enheden eller tjenesten, de observerede symptomer og de data, der skal bevares. Vi kan fastlægge det sikreste nyttige undersøgelsesskridt.

Se, hvad det koster Kontakt os

Gør begreberne praktiske

Spørg, hvordan »Hvad er S.M.A.R.T.?« gælder i din organisation. Et konkret eksempel fra dit nuværende system er nok til at begynde samtalen.

Se vores ydelser
welcome@engineer.company +45 50 10 61 84 København, Danmark
QR-kode til S.M.A.R.T.
Tag denne side med dighttps://engineer.company/da/glossary/smart/