Temperatura dysku twardego (hddtemp)
Spis treści
Obecnie dyski twarde nie są potrzebne do prawidłowego działania komputera. Mając sporo pamięci operacyjnej oraz system live, możemy bez problemu korzystać z takiego sprzętu. Niemniej jednak, systemy live są nieco ograniczone. Najdotkliwszą ich wadą jest brak zapisywania wprowadzanych zmian. W pewnych przypadkach ta cecha może być bardzo pożądana ale jeśli chodzi o przeciętnego użytkownika, to chciałby on raczej mieć możliwość zapisu swojej pracy. Dlatego też zewnętrzny magazyn danych w postaci dysku twardego nie prędko wyjdzie z użytku. Te urządzenia, jak i większość tych, które podłączamy do naszego komputera, wydzielają ciepło. Temperatura jest wrogiem numer 1 w przypadku maszyn i musi stale być monitorowana, tak by czasem nie doszło do przegrzania sprzętu. Dyski HDD mają ten problem, że im wyższa jest temperatura, tym obszar magnetyczny się bardziej rozszerza, a to powoduje błędy odczytu i zapisu. Podobnie jest ze zbyt niską temperaturą, gdzie ścieżki i sektory ulegają skurczeniu. Taki dysk musi pracować w odpowiednich warunkach termalnych. W tym wpisie postaramy się ustalić aktualną temperaturę dysku oraz spróbujemy ją monitorować, tak by wiedzieć czy czynnik temperaturowy nie zagraża czasem dyskom podpiętym do naszego PC.
Narzędzie hddtemp
W linux'ie do pomiaru temperatury dysku wykorzystuje się z reguły narzędzie hddtemp. Jest ono
dostępne w oficjalnym repozytorium debiana w pakiecie o tej samej nazwie, zatem nie powinno być
problemów z jego instalacją. Ten pakiet nie ma usługi pod systemd, przynajmniej w przypadku
debiana, i jest odpalany za pośrednictwem skryptu init. Konfiguracja dla tego skryptu trzymana jest
zaś w pliku /etc/default/hddtemp
. Rzućmy zatem okiem na ten plik:
RUN_DAEMON="true"
DISKS="/dev/sda"
DISKS_NOPROBE=""
INTERFACE="127.0.0.1"
PORT="7634"
DATABASE="/etc/hddtemp.db"
SEPARATOR="|"
RUN_SYSLOG="0"
OPTIONS=""
Wyjaśnienie użytych opcji:
RUN_DAEMON
uruchamia demonahddtemp
.DISKS
określa, które dyski mają być monitorowane.DISKS_NOPROBE
to przeciwieństwoDISKS
.INTERFACE
odpowiada za adres, a raczej za interfejs, na którym będzie nasłuchiwał demonhddtemp
. Standardowo jest to 127.0.0.1 . Można także wpisać 0.0.0.0 i wtedy demon będzie nasłuchiwał na każdym dostępnym interfejsie.PORT
definiuje port. Domyślnie jest to 7634.DATABASE
określa plik bazy danych. Domyślnie/etc/hddtemp.db
.SEPARATOR
określa jaki separator zostanie użyty przy rozdzielaniu konkretnych pól w wyjściuhddtemp
.RUN_SYSLOG
ustawia logowanie temperatury w logu systemowym. Wartość jest podawana w sekundach i jeśli ustawiona na "0", logowanie jest wyłączone.OPTIONS
ustawia dodatkowe opcje.
Usługa dla systemd
W przypadku korzystania z systemd, możemy pokusić się o napisanie dla tego init'u odpowiedniej
usługi. Nie jest to oczywiście wymagane, bo systemd bez problemu potrafi odpalać skrypty init ale
też nic nie stoi na przeszkodzie, by taką usługę sobie zrobić. Tworzymy zatem plik
/etc/systemd/system/hddtemp.service
i dodajemy w nim tę poniższą treść:
[Unit]
Description=Hard drive temperature monitor daemon
Documentation=man:hddtemp(8)
[Service]
Type=simple
ExecStart=/usr/sbin/hddtemp /dev/sda \
--daemon \
--foreground \
--listen=127.0.0.1 \
--port=7634 \
--file=/etc/hddtemp.db \
--separator=| \
--unit=C \
-4
[Install]
WantedBy=multi-user.target
Użyte opcje są mniej więcej takie same co w przypadku skryptu init, za wyjątkiem -4
. Ta opcja
sprawia, że demon hddtemp
będzie nasłuchiwał jedynie w protokole IPv4. Niech nas też nie zmylą
opcje --daemon
oraz --foreground
, gdyż demon odpowiada za nasłuchiwanie na określonym adresie i
porcie, a nie za działanie usługi w tle. W przypadku systemd nie ma też potrzeby, by usługa sama
fork'owała się. Dlatego korzystamy z opcji --foreground
i tę kwestię pozostawiamy samemu init'owi.
Monitorowanie temperatury
Mamy zatem demona działającego w tle. By podejrzeć aktualną temperaturę, musimy wysłać zapytanie pod adres, który został określony wyżej, przykładowo:
# hddtemp /dev/sda
/dev/sda: WDC WD2500BEKT-60A25T1: 41°C
W tym przypadku, temperatura dysku /dev/sda
wynosi 41 stopni. Oczywiście nie będziemy w ten sposób
jej monitorować, bo do tego celu są odpowiednie narzędzia.
Temperatura dysku w conky
Conky to tekstowy monitor systemu, który zwykle jest wyświetlany na pulpicie. Posiada on też
odpowiednie opcje od temperatury dysku. Wymagana jest jednak poprawna konfiguracja demona
hddtemp
. By ta temperatura zwracana przez hddtemp
została wyświetlona w conky
, musimy do
jego pliku konfiguracyjnego dopisać ${hddtemp /dev/sda}˚C
. Temperatura dysku w conky prezentuje
się mniej więcej tak:
Monitorowanie temperatury w monitorix
Monitor systemu conky
daje nam jedynie możliwość obserwowania zmian temperatury w czasie
rzeczywistym. Nie mamy jednak żadnej historii dotyczącej jej zmian. Istnieje za to narzędzie
monitorix, które jest w stanie monitorować nie tylko stan temperatury dysku twardego ale
również całą masę innych parametrów. Na potrzeby tego artykułu ograniczymy się jedynie do
temperatury dysku. Trzeba jednak zaznaczyć, że w debianie nie ma pakietu monitorix i nie damy rady
go zainstalować z oficjalnego repozytorium. Na stronie projektu jest za to pakiet .deb
,
którą możemy bez problemu dociągnąć i zainstalować ręcznie. Alternatywnie zawsze możemy taki
pakiet .deb zrobić samodzielnie.
Konfiguracja sprowadza się do edycji pliku /etc/monitorix/monitorix.conf
, gdzie przechodzimy do
sekcji grafów ( graph_enable
) i włączamy hddtemp
, przykładowo:
...
<graph_enable>
...
hptemp = y
...
Zapisujemy zmiany i restartujemy usługę. Monitor systemu jest dostępny z poziomu przeglądarki
internetowej pod adresem :8080/monitorix/
. Wykres temperatury wygląda mniej
więcej tak:
Obserwując go możemy w bardzo prosty sposób wywnioskować czy dyski w naszych komputerach mogą ulec przegrzaniu w wyniki zbyt wysokiej temperatury i czy już najwyższy czas, by rozkręcić laptopa i go nieco przeczyścić.