Spremljanje zdravja diska s smartctl in smartd
Uvod
smartctl je konzolna pripomoček iz paketa smartmontools, zasnovan za delo s tehnologijo S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology), ki je implementirana v sodobnih pomnilniških pogonih.
Primeri uporabe:
- strežniki gostiteljskih podjetij;
- VPS/VDS vozlišča;
- namenski strežniki;
- datotečni strežniki;
- sistemi za varnostno kopiranje;
- korporativne infrastrukture.
Kakšne naloge rešuje:
- zgodnje odkrivanje degradacije diska;
- napovedovanje okvar pogona;
- zmanjšanje tveganja izgube podatkov;
- avtomatizacija spremljanja zdravja HDD, SSD, NVMe;
- analiza fizičnih težav v diskovnem podsistemu.
Proaktivno spremljanje SMART omogoča prepoznavanje težave pred dejansko okvaro diska, kar je kritično pomembno za proizvodna okolja.
Zahteve in predpogoji
Podprti OS in različice:
Linux:
- Debian 10+
- Ubuntu 18.04+
- RHEL / AlmaLinux / Rocky Linux 8+
- CentOS 7 (podprto, vendar zastarelo)
- FreeBSD 12+
Windows (prek smartmontools, omejena uporaba)
Primeri spodaj so podani za Linux.
Potreben programska oprema in paketi:
- paket smartmontools
- dostop do /dev/sdX, /dev/nvmeX
- nameščen systemd (za smartd)
Dostopne pravice:
- potrebne so privilegije root
- ali dostop prek sudo
Predhodni pregledi
Ogled seznama diskov v sistemu:
lsblk -d -o NAME,MODEL
Pregled in osnovni pojmi
Ključni izrazi
- SMART – vgrajen sistem samodiagnoze diska
- Atributi – atributi stanja (Reallocated_Sector_Ct, Pending_Sectors, itd.)
- Samotest – vgrajeni testi pogona
- smartctl – CLI pripomoček za upravljanje SMART
- smartd – avtomatski nadzorni demon
Kako deluje
- Disk samostojno zbira statistiko
- smartctl bere te podatke
- smartd analizira mejne vrednosti in dogodke
- Obvestila se pošljejo, ko se pojavijo težave
Logika poteka dela
Disk > SMART atributi > smartctl > smartd > dnevnik / e-pošta / spremljanje
Osnovna nastavitev in uporaba smartctl
Namestitev pripomočka smartmontools
Delo s SMART ni mogoče brez nameščenega paketa smartmontools, ki vključuje pripomočke smartctl (ročna obdelava diskov) in smartd (demon za spremljanje v ozadju).
Namestitev se izvede z uporabo standardnih orodij za upravljanje paketov distribucije.
Debian / Ubuntu
sudo apt update
sudo apt install smartmontools
RHEL / AlmaLinux / Rocky Linux
sudo dnf install smartmontools
Po namestitvi so pripomočki na voljo v sistemu in pripravljeni za uporabo brez dodatne inicializacije.
Preverjanje različice in razpoložljivosti smartctl
Kot prvi korak je priporočljivo preveriti, ali je pripomoček pravilno nameščen in na voljo v sistemu:
smartctl --version
Ukaz izpiše različico paketa in seznam podprtih tehnologij.
To vam omogoča:
- zagotoviti, da se uporablja posodobljena različica;
- preveriti podporo za NVMe, RAID in druge vrste naprav.
Preverjanje podpore SMART na določenem disku
Nato je potrebno preveriti, ali pogon sam podpira tehnologijo SMART in ali je omogočena na ravni naprave.
sudo smartctl -i /dev/sda
Primer pravilnega izhoda:
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Available – disk fizično podpira SMART;
Enabled – zbiranje podatkov SMART je vklopljeno in na voljo za branje.
Če je SMART podprt, vendar onemogočen, je to pogosto vidno na novih ali prej neuporabljenih diskih. V takem primeru ga je potrebno omogočiti ročno:
sudo smartctl -s on /dev/sda
Po tem je priporočljivo ponovno zagnati ukaz smartctl -i za zagotovitev, da je SMART aktiviran.
Ogled atributov SMART in začetna ocena zdravja
Glavna praktična vrednost SMART leži v njegovih atributih – številčne vrednosti, ki odražajo stanje površine diska, mehanike in elektronike.
Za ogled atributov uporabite ukaz:
sudo smartctl -A /dev/sda
Izhod vsebuje tabelo atributov z njihovimi trenutnimi vrednostmi in zgodovino. Najprej je treba biti pozoren na naslednje kazalnike:
Ključna polja v izhodu:
- VALUE (Trenutna vrednost): Normalizirana vrednost atributa (običajno od 1 do 100, 100 je idealno). Disk se šteje za pokvarjenega, če VALUE ≤ THRESH.
- WORST (Najslabša vrednost): Najslabša vrednost, ki je bila dosežena med delovanjem diska.
- THRESH (Prag): Najmanjša dovoljena vrednost za VALUE. Preseganje praga (VALUE ≤ THRESH) je znak kritičnega stanja.
- RAW_VALUE: "Surova", nenormalizirana vrednost atributa. To je tisto, kar je treba analizirati za oceno obrabe in štetje dogodkov.
Ključni atributi za HDD (tradicionalni trdi diski):
- Reallocated_Sector_Ct: Povečanje kaže na fizično degradacijo površine.
- Current_Pending_Sector (Sektorji v čakanju na prerazporeditev): Nestabilni sektorji. Tudi ena sama nenulna vrednost je opozorilni znak.
- Offline_Uncorrectable (Nepopravljive napake): Sektorji, ki jih ni bilo mogoče prebrati.
- Power_On_Hours: Skupni čas delovanja diska.
Ključni atributi za SSD:
- Retired_Block_Count: Ekvivalent Reallocated_Sector_Ct za HDD. Prikazuje število blokov, ki so bili izločeni iz uporabe. Tudi nizka vrednost z VALUE=100 je lahko normalna.
- Reallocated_Event_Count: Število dogodkov prerazporeditve.
- SSD_Life_Left ali Percentage Used/Media Wearout Indicator: Odstotek preostale življenjske dobe (ali obrabe). Nizka vrednost (npr. <10%) je znak bližajoče se okvare.
- Wear_Range_Delta: Kazalnik enakomernosti obrabe po pomnilniških celicah.
- Power_On_Hours_and_Msec: Skupni čas delovanja.
- Lifetime_Writes_GiB / Lifetime_Reads_GiB (Atributi 241, 242): Skupna količina zapisanih/prebranih podatkov.
Ključni atributi za NVMe (prek smartctl -a /dev/nvme0):
- Percentage Used: Odstotek porabljene vzdržljivosti zapisovanja. Glavni kazalnik obrabe.
- Media and Data Integrity Errors: Napake integritete podatkov.
- Critical Warning: Kritične opozorilne zastavice.
- Temperature: Trenutna temperatura.
Na tej stopnji administrator pridobi splošno razumevanje stanja diska in lahko prepozna očitne znake težav.
Napredna konfiguracija in praktični scenariji
SMART podpira vgrajene samoteste, ki jih izvaja sam pogon brez sodelovanja operacijskega sistema.
Kratki test je zasnovan za hitro preverjanje ključnih komponent:
sudo smartctl -t short /dev/sda
Dolg test izvaja popolno skeniranje površine in traja bistveno več časa:
sudo smartctl -t long /dev/sda
Po zaključku testa je potrebno preveriti rezultate:
sudo smartctl -l selftest /dev/sda
Izhod prikazuje:
- vrsto testa;
- status zaključka;
- prisotnost ali odsotnost napak.
Neuspešen test je neposreden razlog za pripravo na zamenjavo diska.
Delo z RAID krmilniki
Strojni RAID krmilniki pogosto skrivajo podatke SMART pred sistemom. V takih primerih je potrebno izrecno določiti vrsto naprave.
Primer za LSI krmilnik:
smartctl -a -d megaraid,0 /dev/sda
Kjer:
- -a – ključ za izpis vseh razpoložljivih informacij SMART (atributi, dnevniki, napake, splošna ocena zdravja).
- -d – ključ za določitev vrste naprave.
- megaraid – pove SMART gonilniku, da je disk za LSI/Broadcom krmilnikom (pogosto uporabljen v strežnikih).
- 0 – številka fizičnega diska (PD, Physical Drive) v RAID polju. To ni sda, ampak edinstven ID, ki ga dodeli krmilnik. Najdete ga lahko z uporabo pripomočka za upravljanje krmilnika (npr. storcli ali MegaCLI).
- /dev/sda – v tem kontekstu to ni pravi disk, ampak psevdo-naprava, ki predstavlja RAID krmilnik sam v sistemu. Običajno je to /dev/sgX (SCSI Generic) ali preprosto /dev/sda, če je krmilnik ustvaril virtualni disk.
Tipična napaka, ko vrsta naprave ni določena:
SMART support is: Unavailable
To ne pomeni, da SMART ni na voljo – le da smartctl ni mogel samodejno določiti poti do fizičnega diska. Rešitev je pravilno določiti parameter -d.
Diagnostika in odpravljanje težav
Znaki možnih okvar:
- povečanje vrednosti Reallocated_Sector_Ct;
- neničelni Current_Pending_Sector;
- napake pri programiranju/brisanju (Program_Fail_Count, Erase_Fail_Count);
- napake samotesta;
- povečanje zakasnitve I/O;
- sporočila o napakah v sistemskih dnevnikih.
Analiza dnevnikov:
journalctl -u smartd
dmesg | grep -i error
Pojasnilo:
Pending Sectors > 0 – visoko tveganje okvare;
Reallocated Sectors se povečujejo – progresivna degradacija;
Samotest NI USPEL – disk je treba zamenjati.
Prepoznavanje virov težav
Za izključitev lažnih pozitivnih rezultatov je pomembno povezati podatke SMART z dejansko obremenitvijo.
iostat -x 1
iotop
Preverjanje, kje je disk priključen:
lsblk -o NAME,SERIAL,MOUNTPOINT
Prepoznavanje krmilnikov:
lspci | grep -i raid
Dodatne metrike:
- temperatura nad 50 °C;
- povečanje napak CRC;
- nestabilne vrednosti SMART.
Konfiguracija obvestil administratorja, ko se meritve SMART približajo mejam
Sama prisotnost podatkov SMART še ne zagotavlja varnosti infrastrukture. Ključni element spremljanja je pravočasno obveščanje administratorja v trenutku, ko se stanje diska začne slabšati, vendar okvara še ni nastopila.
Mehanizem obveščanja omogoča:
- odkrivanje degradacije pogona v zgodnji fazi;
- vnaprejšnje načrtovanje zamenjave diska;
- izogibanje izrednim izpadom in izgubi podatkov;
- delovanje v okviru načrtovanih vzdrževalnih oken.
V smartmontools je za pošiljanje obvestil odgovoren demon smartd. Samodejno spremlja spremembe atributov SMART in se odziva na odstopanja od norme.
Načelo delovanja obvestil smartd
Demon smartd deluje kot storitev v ozadju in izvaja naslednje naloge:
- Periodično anketira atribute SMART diska.
- Primerja trenutne vrednosti z: tovarniškimi pragovi, prejšnjimi vrednostmi (dinamika sprememb).
- Prepoznava: rast kritičnih atributov, pojav novih napak, neuspehe samotestov.
- Ustvari obvestilo in ga pošlje administratorju.
Zahteve za delovanje obvestil
Pred konfiguracijo je potrebno zagotoviti naslednje:
- v sistemu je nameščen in pravilno konfiguriran MTA (Postfix, Exim, Sendmail, ssmtp);
- strežnik je sposoben pošiljati odhodno pošto;
- definiran je e-poštni naslov administratorja za prejemanje obvestil.
Primer konfiguracije ssmtp – lahek in enostaven MTA za pošiljanje pošte iz sistema.
Namestitev:
Debian/Ubuntu:
sudo apt update && sudo apt install ssmtp mailutils -y
RHEL:
sudo dnf install ssmtp mailx
Ustvarite konfiguracijsko datoteko:
sudo nano /etc/ssmtp/ssmtp.conf
in uredite vsebino:
# Privzeti naslov pošiljatelja [email protected] # SMTP strežnik in vrata vašega ponudnika e-pošte mailhub=smtp.your-domain.com:587 # Alternativni primer: # mailhub=smtp.gmail.com:587 # Za Gmail # Prijavne poverilnice [email protected] AuthPass=your-password # Nastavitve šifriranja UseSTARTTLS=YES # Uporabi STARTTLS UseTLS=YES # Uporabi TLS FromLineOverride=YES # Dovoli prepis naslova pošiljatelja # Ime gostitelja (določite ime vašega strežnika) hostname=server1.your-domain.com # lahko uporabite hostname=localhost ali določite dejansko ime sistema
Shranite datoteko in konfigurirajte dostopne pravice:
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chown root:mail /etc/ssmtp/ssmtp.conf
Konfigurirajte pošiljatelje (revaliases):
sudo nano /etc/ssmtp/revaliases
root:[email protected]:smtp.your-domain.com:587 www-data:[email protected]:smtp.your-domain.com:587
Za uspešno pošiljanje sporočil morajo biti na strežniku odprta naslednja vrata: 587 (primarna za pošiljanje s šifriranjem STARTTLS), ali 25 (standardni SMTP), 465 (varni SMTP s SSL), če so predvidena s konfiguracijo.
Osnovni test pošiljanja pošte:
echo "SMART testno sporočilo" | mail -s "SMART test obvestila" [email protected]
Lahko izrecno določite pošiljatelja:
echo "SMART testno sporočilo" | mail -s "SMART test obvestila" -a "From: [email protected]" [email protected]
Ali prek ssmtp neposredno:
echo "SMART testno sporočilo" | ssmtp [email protected]
[email protected] – naslov prejemnika, kamor bo poslano sporočilo.
Če e-pošta ni dostavljena, nadaljnja konfiguracija smartd ni smiselna, dokler težave z dostavo pošte niso rešene.
Konfiguracija obvestil SMART se izvede v datoteki:
/etc/smartd.conf
Primer preproste delujoče konfiguracije:
/dev/sda -a -o on -S on -m [email protected]
Parametri:
- /dev/sda – disk, ki se spremlja;
- -a – celoten nabor preverjanj;
- -S on – shranjevanje atributov med ponovnimi zagoni je omogočeno;
- -o on – samodejno zbiranje podatkov brez povezave je aktivirano;
- -m – obvestila se pošljejo na določen e-poštni naslov.
Od tega trenutka bo smartd začel spremljati stanje diska v ozadju.
Obvestila ob približevanju mejnih vrednosti
Ključna značilnost smartd je, da spremlja spremembe vrednosti atributov, ne le njihovega kritičnega preseganja.
V praksi to pomeni, da se lahko obvestilo pošlje:
- ob prvem pojavu Current_Pending_Sector;
- ob povečanju Reallocated_Sector_Ct, tudi če prag še ni dosežen;
- ob zaznavi napak samotesta;
- ob degradaciji parametrov NVMe.
Najpomembnejši atributi zgodnje okvare:
- Reallocated_Sector_Ct
- Current_Pending_Sector
- Offline_Uncorrectable
- Media and Data Integrity Errors (NVMe)
- Percentage Used (SSD/NVMe)
Tudi minimalne spremembe teh parametrov je treba obravnavati kot razlog za pozornost.
Uporaba samotestov kot vira obvestil
Za povečanje informativnosti je priporočljivo kombinirati spremljanje atributov z rednimi samotesti.
Primer konfiguracije z urnikom:
/dev/sda -a -o on -S on \ -s (S/../.././02|L/../../6/03) \ -m [email protected]
Logika delovanja:
- kratek test se izvaja dnevno;
- polni test se izvaja enkrat tedensko;
- ob vsakem neuspehu testa administrator prejme obvestilo.
Upravljanje pogostosti in obsega obvestil
Da bi se izognili prekomernim opozorilom, se uporablja parameter -M once:
/dev/sda -a -m [email protected] -M once
V tem načinu:
- obvestilo se pošlje ob prvem zaznavanju težave;
- nadaljnja sporočila se ne podvajajo, dokler vzrok ni odpravljen.
Za testiranje sistema obvestil lahko uporabite -M test. To vam omogoča, da preverite, ali je smartd sposoben pošiljati sporočila, ne da bi čakali na dejansko napako.
Zaključek
V okviru tega priročnika je bil sistematično pregledan celoten cikel implementacije in delovanja smartctl in demona smartd kot orodja za proaktivno spremljanje zdravja diskov. Pokriti so bili osnovni principi delovanja SMART, praktične metode za analizo atributov, zagon in interpretacija samotestov, posebnosti dela z NVMe pogoni in RAID krmilniki, kot tudi diagnostične metode in tehnike za prepoznavanje osnovnih vzrokov težav. Posebna pozornost je bila namenjena konfiguraciji obvestil, ki omogočajo zaznavanje degradacije pogona v zgodnjih fazah, še preden pride do kritične okvare.
Pravilno konfigurirano spremljanje SMART je sestavni del zanesljive strežniške infrastrukture in ga je treba obravnavati kot obvezni operativni standard. Uporaba smartctl in smartd omogoča sistemskemu administratorju prehod iz reaktivnega reševanja incidentov na zavestno, obvladljivo vzdrževanje diskovnega podsistema, zmanjšanje tveganj izpadov, izgube podatkov in nepredvidenih incidentov, hkrati pa ustvarja trdno podlago za nadaljnjo avtomatizacijo in integracijo s centraliziranimi sistemi spremljanja.