pve/esxi超微服务器主板IPMI风扇调速的尝试
本帖最后由 gasment 于 2023-7-26 16:44 编辑有使用超微服务器主板组NAS的同学应该对这个风扇调速深恶痛绝
ipmi里默认只有三种相当简陋的策略,效果不是热死就是吵死
翻到github里有老分享了个调速脚本,尝试自己实现一下,特此记录~
ipmi 风扇调速,主要途径是发送特定raw数据给ipmi模块,这个网上分享很多了,这里简单总结下:
第一种是固定百分比:
raw 0x30 0x45 0x01 0x01 #代表Full模式
raw 0x30 0x70 0x66 0x01 0x00 0x32 #这里倒数第二个数组0x00,代表zone0(一般CPUFAN为zone0,SYSFAN为zone1)最后一组数据0x32,32为16进制,
转10进制代表50%
raw 0x30 0x70 0x66 0x01 0x01 0x41 #这里倒数第二个数组0x01,代表zone1,最后一组数据0x41,41为16进制,转10进制代表65%
这里有个坑:16进制数据最好不要选带字母的,比如转速60%为0x3c,这样的带字母数据,ipmi系统好像不会生效
实现方式:
1、ESXI
可以参考https://www.cnblogs.com/ispace/p/17261196.html,现已支持esxi8,本人实测可以实现固定转速
但是esxi很多命令工具都不齐,温控脚本未能实现
2.pve
首先当然是安装ipmitool,apt-get update之后apt install ipmitool
在pve8.0.3下,本人尝试ipmitool 发送raw命令,出现报错,降级到7.3问题解决
pve7.3下固定转速的命令
ipmitool raw 0x30 0x45 0x01 0x01 #必要步骤,先调到全速模式,防止ipmi自带策略干扰
ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x32 #cpu风扇调速为50%,数值根据上面的说明自定义
ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x32 #系统/机箱风扇调速为50%,数值根据上面的说明自定义
ipmitool sensor list | grep FAN #查看当前转速数据
pve7.3下的自动调速脚本(如果其他版本运行ipmitool raw固定转速无问题,当然也适用其他版本):
自动调速也是基于温度检测+发送raw的形式,所以需要安装ipmitool的同时,也需要安装lm-sensors
1、运行apt install lm-sensors -y,等待安装完成后,运行sensors,查看检测到的数据
由于superio被ipmi接管了,所以大概率检测不到额外数据(运行sensors-detect也查不到新的,还会把系统整个卡死)
有基本的CPU温度,另外还有M.2固态的温度
2、下载github老哥分享的调速脚本https://github.com/DrSpeedy/ipmi_fancontrol-ng
脚本默认raw数据不是超微的,需要修改下
首先在大概第73行,raw数据替换成超微的,如图
然后,大概226行这个全速的raw数据也一样换过来
接下来,根据自己风扇的实际转速,调整CPU温度与转速百分比的关联
最后,将脚本本体和.services文件上传pve,按照github说明,部署程服务就可以开机自动运行了(当然可以手动运行下,看看效果再部署服务)
附加题:
CPU温度自动调速了,那硬盘散热呢?
举一反三的你,应该已经想到了,硬盘风扇接到sysfan,修改获取的温度源,对应修改zone1的转速不就哦了
用lm-sensors检测硬盘温度,我之前在一块z170m上实现了(需要编译模块挺蛋疼的),由于我应经把sata控制器全都直通出去了,实际情况不明了
如果lm-sensor行不通,也可以尝试hddtemp工具,安装hddtemp,运行hddtemp /dev/sd? ,即可列出所有检测到的硬盘温度
在脚本中使用hddtemp作为温度源,涉及到字符截取处理的命令,这个我小白不会
但是sensors中检测到了m2固态的温度,稍微观测下,在我的机器上,m2的温度大概会比机械盘高出个5度左右,以m2为温度源的话,大概调下对应转速也能凑合了
脚本修改m.2为温度源也相对简单,在大概116行,修改获取的关键词即可(我这有两个Composite来自两个m.2,后面我会只保留一个m.2给pve使用)
大概就是这样了,又长又臭的文,只做了一个抛砖引玉~
页:
[1]