Kako nadzirati zagrijavanje računala?

Računala nisu efikasni potrošači električne energije, većinu pretvaraju u toplinu, a manji dio u koristan rad. S vremenom se sve više zagrijavaju, pa bi ih trebalo povremeno očistiti. To možda i nije posao sistemskog inženjera, jer je hardverski problem, ali bože moj, tko će to napraviti ako neće sistemac? :(


Kada vam korisnik donese notebook tvrdeći da se pregrijava, hoćete li odmah uzeti alat u ruke i otvoriti kućište da ga očistite? Ili ćete, kao pravi inženjer, najprije nastojati potvrditi "dijagnozu"? :)

Na Linuxu nam mogu pomoći praktični softverski alati, koji pokazuju temperaturu tvrdog diska i pojedinih čipova. Krenimo od diska. Pomoći će nam program hddtemp. Najprije ćemo ga instalirati:

$ sudo apt install hddtemp

Sintaksa za dobivanje temperature diska izgledala bi ovako: hddtemp TYPE:disk, gdje je TYPE SATA, PATA, SSD...

Na primjer:

$ sudo hddtemp SSD:/dev/sda
/dev/sda: HFS128G39TND-N210A: 34°C

TYPE se može izostaviti, hddtemp će se snaći i sam. To će nam dobro doći da ne moramo istraživati kakav je disk u računalu kojeg smo tek dobili u ruke.

$ sudo hddtemp /dev/sda
/dev/sda: HFS128G39TND-N210A: 34°C

Dobili smo podatke o uređaju (/dev/sda), identifikacijski kod diska i njegovu temperaturu. Za praktične svrhe to bi bilo dovoljno, ali previše smo radoznali da ne bismo iskušali što nam sve ovaj alat nudi.

Treba li reći da možemo dobiti očitanja za više diskova odjednom, samo ih treba redom navesti:

$ sudo hddtemp /dev/sda /dev/sdb /dev/sdc

Uz naredbu se u paketu dobije i baza s podacima o diskovima koji imaju senzor temperature. Baza je u datoteci /etc/hddtemp.db, a možete je izlistati ovako:

$ sudo hddtemp -b
Regexp                                       | Value | Description
-----------------------------------------------------------------------------------
FUJITSU MHM2100AT                 |     0 | Fujitsu MHM2100AT
HITACHI_DK228A-65                   |     0 | Hitachi DK228A-65
IBM-DARA-212000                       |     0 | IBM Travelstar 12GN
IBM-DTTA-35*                              |     0 | IBM Deskstar 16GP serie
IBM-DJNA-35.*                            |   231 | IBM Deskstar 25 GP serie
IBM-DJNA-37.*                            |   231 | IBM Deskstar 22 GXP serie
IBM-DHEA-(34330|36480)             |     0 | IBM Deskstar 5 serie
IBM-DHEA-(34331|36481|38451)   |     0 | IBM Deskstar 8 serie
IBM-DPTA-37.*                            |   231 | IBM Deskstar 34GXP serie
IBM-DPTA-35.*                            |   231 | IBM Deskstar 37GP serie
Maxtor 5(1024|1369|2049|2732|3073|4098)U(2|3|4|6|8)    |     0 | Maxtor DiamondMax Plus 40
...

Potražimo u bazi disk iz našeg primjera:

$ hddtemp -b | grep HFS128G39TND-N210A

Nismo ga promašli, što nije smetalo da dobijemo očitanje temperature. Možemo ga sami dodati, i/ili još bolje javiti autoru Emmanuelu Veragnatu (hddtemp@guzu.net) koji će ga uvrstiti u novu verziju paketa. Google će nam brzo pronaći podatke o disku, na primjer za disk iz našeg primjera dobit ćemo ovaj rezultat:

Hynix 128GB MLC SATA 6Gbps M.2 2280 Internal Solid State Drive (SSD) Mfr P/N HFS128G39TND-N210A

U datoteci su upute koje podatke treba unijeti u redak kojim prijavljujemo novi disk.

Ako želite pratiti kako se disk u računalu zagrijava dok radite, iskoristite naredbu watch.

$ sudo watch -n 20 hddtemp /dev/sda
Every 20,0s: hddtemp /dev/sda                                        nb-aco: Thu Nov 28 12:52:04 2019
/dev/sda: HFS128G39TND-N210A: 36°C

Dobit ćemo novo očitanje svakih 20 sekundi.  Ali što ako želimo nadzirati temperaturu diskova i kad nismo prisutni?

Iskorist ćemo mogućnost da hddtemp pokrenemo kao daemon, što će nam dobro doći kad sumnjamo da se diskovi u serveru pregrijavaju.

$ sudo hddtemp -d

Daemon će primati konekcije na portu 7634 ako mu se drugačije ne naredi. Da bi provjerili temperaturu diskova na udaljenom računalu bit će se dovoljno telnetom spojiti na IP adresu računala i port, pa ćemo dobiti očitanje baš kao na lokalnom računalu.

$ telnet 192.168.1.11 7634

Možete koristiti i netcat:

$ nc 192.168.1.11 7634

Ako želite redovito pratiti koliko se diskovi zagrijavaju možete hddtemp daemonu reći da očitanja sprema u syslog, tako što ćete dodati parametar --syslog=n, gdje je n interval zapisivanja u sekundama.

Ako ste dodavali nove diskove u bazu dok hddtemp radi kao daemon, morat ćete ga restartati da bi ponovo učitao bazu.

Zanimljiva je i mogućnost da u slučaju pregrijavanja diska iz crontaba pokrenemo skriptu koja će pokrenuti shutdown. Jednu je takvu s nama podijelio Vivek Giti, možete je skinuti s ovog linka.

Prenosimo je malo izmjenjenu:

#!/bin/bash
# Purpose: Shutdown server if disk temp crossed $ALERT_LEVEL
# Author: Vivek Gite {https://www.cyberciti.biz/}, under GPL v.2.x
# -----------------------------------------------------------------
HDDS="/dev/sda /dev/sdb /dev/sdc /dev/sdc /dev/sdd"
HDT=/usr/sbin/hddtemp
LOG=/usr/bin/logger
DOWN=/sbin/shutdown
ALERT_LEVEL=60
for disk in $HDDS
do
  if [ -b $disk ]; then
        HDTEMP=$( ${HDT} --numeric ${disk} )
        if [ $HDTEMP -ge $ALERT_LEVEL ];
        then
           $LOG "System going down as hard disk \"$disk\" temperature ($HDTEMP) crossed its limit."
           sync;sync
           $DOWN -h 0
        fi
  fi
done


Skriptu prilagodite tako što ćete u njoj navesti diskove u vašem serveru i zadati kritičnu temperaturu (ALERT_LEVEL) nakon koje se računalo gasi. Normalna radna temperatura tvrdog diska je 25-40 C, prihvatljiva 40-50, a preko toga se skraćuje radni vijek diska. Prema tome odredite svoj ALERT_LEVEL. Prije shutdowna skripta pokreće naredbu sync, da se počisti privremena memorija, odnosno da se podaci spreme u datoteke u kojima se trajno čuvaju.

Da bi skriptu pokrenuli svakih deset minuta, dodajte u /etc/crontab ovaj redak:

*/10 * * * * /root/bin/naziv-vaše-skripte.sh

Toliko o praćenju radne temperature diska. Kako nadzirati temperaturu procesora? O tome u narednom članku.


Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)