【浪潮sm5212 m4服务器自动修改风扇转速以降低噪音】
- 前言
- 开始折腾
-
- 研究方案
- 改进方案
- 开始实现
-
- 1、BIOS配置IPMI接口地址
- 2、实现服务器自己访问BMC系统
- 3、实现python脚本来自动修改风扇转速
- 4、把运行脚本的命令加入开机自启
- 题外话
前言
前段时间想升级一下家里的 HP T610 瘦客户机,但是由于瘦客户机本身cpu焊死,内存条上限较低等原因,无法升级,除非整套包括主板一起更换,但如此做就等于重新组一套新的了,所以干脆网购了一套云厂商淘汰下来的浪潮sm5212 m4服务器
处理器 | 支持两颗E5-26xx V3V4处理器 | 一颗E5-2680 V4(14核28线程) |
内存 | 支持16根DDR4内存(单根最高64G) | 两条32G DDR4 ECC服务器内存条 |
硬盘 | 12个3.5寸硬盘接口 支持SATA/SAS/SSD | 西数蓝盘 1TB |
扩展槽 | 2个X16 1个X8 PCIE接口 半高挡片 | 2个X16 1个X8 PCIE接口 半高挡片 |
阵列卡 | 板载3008阵列卡 | 板载3008阵列卡 |
网卡 | 板载双口千兆 / BMC远程管理口(IPMI接口) | 板载双口千兆 / BMC远程管理口 |
电源 | 支持550w 双电源 | 550w 单电源 |
踩坑: 1、在组装的过程中,由于我是只装了一个CPU,所以要注意CPU安装的位置,要安装在电源那一侧,否则开不了机 2、我第一次安装使用的统信的家庭版镜像,发现安装了后怎么也进不去系统,后面换成了ubuntu系统,一次就成功了,装机推荐工具ventor,推荐理由:轻便简洁无广告并且易使用
开始折腾
研究方案
那服务器一开机那风扇声简直跟战斗机一样,很是影响日常生活,用手机分贝测试软件测试有80分贝左右,于是我在开机观察了一下CPU温度后,试着拔掉了三个风扇(总共4个尼得科的风扇),只保留正对着CPU的风扇,实测风扇温度稳定在30°,由此可见一台风扇足以压得住,这时声音小一些了但依然有60多分贝,还是很吵,于是我就开始百度解决方案,经过一番搜索,找到一个靠谱的方案,通过主板的IPMI接口访问BMC系统,然后去修改风扇的转速,把转速从100%改成10%,风扇声音瞬间就下去了,效果显著,放在卧室都完全不影响睡眠的程度,但是该方案有个缺点就是服务器不能断电,断电后就需要使用笔记本用网线连接服务器IPMI接口去手动修改风扇转速,这显然不合理。于是再去百度一番无果,只能自己研究想办法了。
改进方案
经过冥思苦想,我突然灵光一现,如果用一根网线一端插服务器网口,一端插服务器IPMI接口是否可以实现自己控制自己呢?说干就干,一番操作下去发现果然可以,那么现在要解决的问题就是让服务器开机后自己去访问BMC接口,然后修改风扇转速,我马上用postapi去请求接口来调整转速,总共三个接口(第一步请求登录接口拿到授权token,第二步携带token去修改风扇转速为可调整,第三步修改风扇转速为10%),测试一番有效果,然后我再去把上面三个步骤用shell脚本来实现,但由于个人的shell脚本水平有限,实现起来很是困难,卡在第二步搞不下去,然后我转换思路改用python,因为大多数发行版linux系统都是默认安装了Python解释器的,于是就有了以下Python脚本(本人不会Python,下面代码是自己现学现写的,有什么错误或需要优化的地方还请各位不吝赐教)
开始实现
1、BIOS配置IPMI接口地址


Station IP address | BMC的IP | 192.168.2.100 |
Subnet mask | 子网掩码 | 255.255.255.0 |
Router IP address | 网关 | 192.168.2.1 |
网关设置应避免使用192.168.1.1等地址,因为会与路由器网关冲突
配置BMC(IPMI)的用户和密码 浪潮的默认用户和密码都是admin 如果不是可以修改
保存配置
注明:本博客以上方法借鉴这篇文章配置
完成上面步骤就已经可以把笔记本和IPMI接口用网线连接起来,即可通过笔记本访问BMC管理系统了
插入网线后给笔记本有线网卡配置ip分配方式为静态,设置ip地址为192.168.2.2,子网掩码255.255.255.0,网关192.168.2.1,再打开浏览器访问192.168.2.100即可访问到BMC管理系统,在里面就可以设置风扇转速。
2、实现服务器自己访问BMC系统
连接配置好后可以在服务器系统里面用浏览器访问BMC管理系统(192.168.2.100)
3、实现python脚本来自动修改风扇转速
python脚本如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import http.client
import re
import socket
import time
dic = {
\’username\’: \’admin\’,
\’password\’: \’admin\’,
\’ip\’: \’192.168.2.100\’,
\’speed\’: \’1\’, # 需要调整的转速
\’maxConnectivityTest\’:100, # 超时重连的最大次数
\’fans\’:[\”0\”, \”1\”, \”2\”, \”3\”, \”4\”, \”5\”, \”6\”, \”7\”] # 需要调整转速的风扇端口 一共8个端口 0~7 (一般默认插的是 0,2,4,6)
}
评论前必须登录!
注册