[시스템] lm_sensors 를 통한 하드웨어 점검

lm_sensors 는 CPU 온도, 마더보드 온도, 팬 상태, 전압등의 시스템의 상황을 실시간으로 알수

있는 유틸리티입니다. (오버클럭커들이나, 열악한 환경의 서버등에서는 아주 유용하겠지요?)

저는 lm_sensors를 주로 cpu, 비디오 카드의 오버클럭 후에 온도등 하드웨어 상태를 보기 위해

사용했으며, 모니터링은 소프트웨어 뿐만 아니라 액정 판넬, LED등의 사용등 하드웨어 해킹을 즐기는

분들에게도 유용합니다.

의외로 이 패키지에 대해 모르는 분들이 많은것 같아 소개하는 수준에서 간단하게 썼습니다.

– 지원하는 센서 디바이스

가지고 있는 하드웨어가 지원되는지 일단 http://www2.lm-sensors.nu/~lm78/support.html에서

확인해 봅니다. 자신의 하드웨어 디바이스를 알지 못한다면 패키지 설치후 인식 유틸리티를 사용할수도 있습니다.

제가 테스트해본 마더보드와 칩셋은 다음과 같으며, 커널 2.2.x, 2.4.x 에서 모두 잘 작동했습니다.

기가 바이트 6BXD (w83781), Abit BH6 (LM79), Abit KT7 (via686a), Nforce2

– 소스 구하기

필요한 패키지는 다음 두가지이며, 모두 http://www2.lm-sensors.nu/~lm78/download.html

에서 구하실수 있습니다.

kernel v2.5, v2.6에는 이미 i2c 드라이버가 포함되어 있으므로 lm_sensors만 받으신 후

make user; make user_install 해서 라이브러리와 유틸리티만 컴파일/설치 하시면 됩니다.

또한, sysfs를 사용하므로, /sys 디렉토리를 만든후 fstab에 “sysfs /sys sysfs defaults 0 0″를 추가합니다.

참고 : http://bbs.kldp.org/viewtopic.php?p=127786

i2c

lm_sensors

– 설치 하기

설치 방법은 커널을 패치하는 방법과 독립적인 모듈 로딩방식이 있는데 저는 커널 소스를 건드리고

싶진 않아서 후자를 택했습니다.

먼저 i2c 를 풀어 make ; make install 해주면 필요한 모듈과 헤더파일들이 인스톨 됩니다.

역시 lm_sensors 도 make ; make install 해주면 커널 모듈들이 인스톨 됩니다.

이때 커널 모듈들은 모두 /lib/modules/2.x.x/misc/ 에 인스톨 되며 모듈 의존성 검사를 위해

depmod -a 를 일단 실행해 줍니다.

이 센서 모듈들이 제대로 작동하기 위한 디바이스 파일을 만들어 주기 위해 lm_sensors 소스 디렉토리의

prog/mkdev/mkdev.sh 스크립트를 실행합니다.

하드웨어에 맞는 모듈을 알아내기 위해 역시 lm_sensors 소스 디렉토리의 prog/detect/sensors-detect

를 실행하면 센서 하드웨어를 인식하여 다음과 같이 필요한 모듈의 목록을 표시해줍니다.

다음은 제 박스에서의 결과로 마더보드는 abit KT7 입니다.

#—-cut here—-

# I2C adapter drivers

modprobe i2c-isa

# I2C chip drivers

modprobe via686a

#—-cut here—-

To make the sensors modules behave correctly, add these lines to either

/etc/modules.conf or /etc/conf.modules:

#—-cut here—-

# I2C module options

alias char-major-89 i2c-dev

#—-cut here—-

위의 결과를 참고해 필요한 모듈과 센서 core 모듈등이 부팅될때 로딩되도록 /etc/rc.d/rc.local 에 넣어줍니다.

modprobe i2c-core

modprobe i2c-isa

modprobe i2c-proc.o

modprobe via686a

lm_sensors 2.6.0 이후부터는 sensors.o 모듈이 없어지고, i2c-proc.o 로 바뀌었습니다.

alias char-major-89 i2c-dev 는 /etc/modules.conf 에 추가합니다.

이제 정상적으로 작동하는지 테스트해 보려면 필요한 모듈을 모두 로드한후에 prog/sensors/sensors

를 실행해봅니다.

이것의 설정 파일은 소스 트리의 etc/sensors.conf.eg 인데 이것을 /etc/sensors.conf 로 복사해

주면 되며, 내용 그대로 사용하여도 대부분의 칩셋에서 문제없이 결과값을 보여줍니다.

[ home@root ]./sensors

via686a-isa-6000

Adapter: ISA adapter

Algorithm: ISA algorithm

CPU core:  +1.81 V  (min =  +1.79 V, max =  +2.18 V)  

I/O:       +3.30 V  (min =  +2.95 V, max =  +3.62 V)  

+5V:       +4.94 V  (min =  +4.47 V, max =  +5.07 V)  

+12V:     +12.10 V  (min = +11.03 V, max = +12.16 V)  

CPU Fan:  6136 RPM  (min = 3000 RPM, div = 2)          

P/S Fan:     0 RPM  (min = 3000 RPM, div = 2)          

SYS Temp: +27.7 C     (limit = +60 C,  hysteresis = +50 C)

CPU Temp: +38.8 C     (limit = +60 C,  hysteresis = +50 C)

현재 제 시스템은 듀론 800을 1G로 오버한것인데 사실 40도가 넘으면 좀 불안해지기 시작합니다.

( need water cooling 🙂

– 응용 프로그램들

lm_sensors 패키지에는 sensors 이외에 몇가지 유용한 것들이 들어있습니다. prog/daemon/healthd.sh 는

sensors가 sensors.conf 에 설정된 값(최대 온도, 최저 팬 rpm등)을 참고해 ALARM 메세지를

보여주는 것을 이용한 간단한 쉘 스크립트입니다.

또한 sensord 는 주기적으로 하드웨어 센서 정보를 읽어서 로그를 남겨주는 데몬입니다.

다음 스크립트는 주기적으로 sensors를 실행시켜 시스템이 비정상일때 시스템을

shutdown 시키는 간단한 데몬입니다.

#!/bin/bash

PATH=”/bin:/usr/bin:/usr/local/bin:${PATH}”

ADMIN_EMAIL=”root@localhost”

while true

do

sleep 15

if [ -n “`sensors | grep ALARM`” ]

then

    sensors | mail -s “**** Hardware Health Warning ****”  $ADMIN_EMAIL

    shutdown -h now

    sleep 600

fi

done

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.