|
|
|
|
|
|
|
[Original]
[Print]
[Top]
|
本文适用对象:拥有一定的硬件基础、Linux基础、主板有温度传感器、热爱钻研的linux爱好者
本文作者及版权:Copyleft under Free Documentation License (FDL) by elcoud e.cloud@163.com
本文适用版本:适用于任何Linux发行版,建议使用2.6内核
现在的主板一般都带有温度传感器和风扇转速传感器,尤其对于7X24服务器来说,实时监控这些数据是非常重要的!
2.6版本的内核支持常见的绝大多数主板传感器,传感器的驱动也是一般的kernel module形式。不过需要一个软件来把这些信息读出来并且加以监测,这个软件就是lm_sensors (http://www.lm-sensors.nu/)
名词解释:
SMBus: "System Management Bus" 系统管理总线,它是一个“双线、低速、串行通讯总线”,用于基本的系统健康传感器数据传输,它是I2C标准总线的一个特殊实现(以上翻译自)" target="_blank">http://www.lm-sensors.nu/[/url])
简要的讲,SMBus就是专门给传感器设备用的总线,它是I2C总线规则的一个特殊实现(这有点类似于XML是SGML的特殊实现,或者 Framerelay是X.25的一个特殊实现)。I2C是传感器设备的工业标准,不光只使用于PC,同样适用于很多工业领域。我们常见的主板基本上都是使用SMBus总线的传感器设备。在他们出现以前,传感器是基于ISA总线的设备。
绝大多数发行版都带有lm_sensors软件包,但是在安装的时候几乎都没有对传感器进行配置,因此它并不会奏效。所以我们需要手工配置一下传感器。 lm_sensors软件包提供了一个非常好的命令:sensors-detect,它类似win中软件常见的“下一步”模式,引导你配置好传感器,并且能够自动检测出你的主板使用的那种传感器硬件!在向导中绝大多数问题你都可以直接回答“yes”,只有一处需要你自己选择一下,就是某些传感器同时支持 ISA总线和SMBus总线(PCI总线)的访问模式,如果是这种情况的话,你选择哪种工作方式。在这里他的提示说ISA模式会快一些,不过传感器不是用来传数据的,快一点慢一点我觉得无所谓。而且如果使用ISA模式的话还要装载ISA总线的内核模块,这对于现在绝大多数新机器来说是完全额外的模块,因此我们选择smbus模式。自动检测完成以后,sensors-detect最后会提示你做一些粘贴和复制一个启动脚本,不要搭理它!因为绝大多数发行版自带的lm_sensors软件包都已经替我们做好了这些工作了。最后他会自动修改/etc/sysconfig/lm_sensors文件,注意这个文件很重要,这里面列出了你的传感器需要的内核模块,也就是传感器的驱动程序,这个在系统启动中会自行加载的。如果不能自动加载的话,你再按照上面 sensors-detect最后提示给你的那些内容粘贴到相应的文件中去。我当时的做法是把sensors-detect最后输出的那一段东西复制到一个临时文件中去,全部配好以后重启动系统,看看一切正常,则把临时文件删除。如果不正常,则可以根据临时文件里面的步骤操作。
传感器硬件配置好以后要重起lm_sensor服务:service lm_sensors restart
重起以后运行命令:sensors
这时应该看到类似的输出:
eeprom-i2c-0-52
Adapter: SMBus I801 adapter at d800
Memory type: DDR SDRAM DIMM
Memory size (MB): 512
eeprom-i2c-0-50
Adapter: SMBus I801 adapter at d800
Memory type: DDR SDRAM DIMM
Memory size (MB): 512
adm1027-i2c-0-2e
Adapter: SMBus I801 adapter at d800
ERROR: Can't get alarm mask data!
V1.5: +1.497 V (min = +1.42 V, max = +1.58 V)
VCore: +1.336 V (min = +0.00 V, max = +0.00 V) ALARM
V3.3: +3.352 V (min = +3.13 V, max = +3.47 V)
V5: +5.182 V (min = +4.74 V, max = +5.26 V)
V12: +11.875 V (min = +11.38 V, max = +12.62 V)
CPU_Fan: 2846 RPM (min = 4000 RPM) ALARM
CPU: +34.00°C (low = +10°C, high = +50°C)
Board: +20.00°C (low = +10°C, high = +35°C)
Remote: -128.00°C (low = +10°C, high = +35°C) ALARM FAULT
CPU_PWM: 255
Fan2_PWM: 255
Fan3_PWM: 77
这就表明你的主板传感器已经可以正常运作了!
你可能看到上面有一些报警参数设置的不合适,这些参数都在配置文件:/etc/sensors.conf 里面,这个文件很大,因为包含所有他支持的传感器,你要找到你的硬件相对应的那一节,修改里面的设置。比如我上面的硬件就是:adm1027这个型号。 lm_sensors软件包里面含有非常丰富的文档,针对于每个传感器型号都有,文档中含有配置例子和解释。
一般来讲,我们主要利用“三剑客”awk,sed,grep来过滤sensors命令的输出,可以得到我们关心的某个数据,将此脚本作为crontab任务定时运行,就可以实时监测我们的系统健康状况了。如果使用perl或者python等脚本,还能够实现较为复杂的实时响应。lm_sensors- devel这个包还包含C语言用的API头文件,呵呵,这后面的东西,就靠大家自己来发挥了:)
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
|