扫描二维码关注官方公众号
返回列表 发布新帖

[讨论/分享] pve/esxi超微服务器主板IPMI风扇调速的尝试

4262 0
发表于 2023-7-26 16:40:37 | 查看全部 阅读模式

来吧兄弟,一起玩一起讨论!

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 gasment 于 2023-7-26 16:44 编辑

有使用超微服务器主板组NAS的同学应该对这个风扇调速深恶痛绝
ipmi里默认只有三种相当简陋的策略,效果不是热死就是吵死
1.png
翻到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.png
   2、下载github老哥分享的调速脚本https://github.com/DrSpeedy/ipmi_fancontrol-ng
         脚本默认raw数据不是超微的,需要修改下
         首先在大概第73行,raw数据替换成超微的,如图
          3.png
         然后,大概226行这个全速的raw数据也一样换过来
         4.png
        接下来,根据自己风扇的实际转速,调整CPU温度与转速百分比的关联
         5.png
        最后,将脚本本体和.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使用)
6.png

大概就是这样了,又长又臭的文,只做了一个抛砖引玉~

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

淘宝小店

邀请码

VIP会员

微信客服

公众号

微信群

投诉/建议联系

support@gebi1.cn

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2024 隔壁网 版权所有 All Rights Reserved. 粤ICP备14056481号-1
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表