前段时间升级了一下机柜里的服务器,替换掉了一台旧的 Dell 服务器,换上了这台 R730。但是无奈于噪音的袭扰,搁置了一段时间。我在这台机器上目前安装了一块 Intel Xeon E5-2630v3 芯片以及一张改过散热的 NVIDIA Tesla P4 计算卡。结果就是散热风扇全速开启。因此不得不在另外一台 7x24 开机的机器上部署一个脚本用于每隔三十分钟自动设定一次风扇转速。
一、前置任务 IPMI 与 IDRAC
使用 ipmitool
的前提是开启了 IPMI 管理权限以及确保 IDRAC网口介入网络。
在开启权限之后,进入到路由器的页面,给予这个 IDRAC 网口一个固定的 IP 地址。
二、安装 ipmitool 管理工具
在 Ubuntu 上安装 ipmitool 工具非常方便,只需要输入下面的指令即可:
shell
sudo apt install ipmitool
三、自动化脚本
步骤 1: 风扇转速设定脚本
首先,我们将需要定时执行的命令保存到一个 shell 脚本文件中。创建一个名为 ipmitool_script.sh
的文件,并添加以下内容:
shell
#!/bin/bash
# 脚本执行的命令
ipmitool -I lanplus -H {Your IDRAC IP Address} -U {Username} -P {Password} raw 0x30 0xce 0x00 0x16 0x05 0x00 0x00 0x00 0x05 0x00 0x01 0x00 0x00
ipmitool -I lanplus -H {Your IDRAC IP Address} -U {Username} -P {Password} raw 0x30 0x30 0x01 0x00
ipmitool -I lanplus -H {Your IDRAC IP Address} -U {Username} -P {Password} raw 0x30 0x30 0x02 0xff 0x08
# 最后一位 0x08 是十六进制的风扇转速
# 检查上一个命令是否成功执行
if [ $? -eq 0 ]; then
echo "Script executed successfully."
else
echo "Script failed to execute."
fi
然后,给这个脚本文件赋予执行权限:
shell
chmod +x ipmitool_script.sh
步骤 2: 创建系统服务
接下来,我们将创建一个 systemd 服务来管理这个脚本的执行。
- 创建一个新的 systemd 服务文件:
shell
sudo nano /etc/systemd/system/ipmitool.service
- 将以下内容添加到服务文件中:
shell
[Unit]
Description=IPMI Tool Script Service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/your/script/ipmitool_script.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target
请将 /path/to/your/script/ 替换为你的脚本实际所在的目录。
步骤 3: 设置定时任务
为了每隔30分钟执行一次脚本,我们可以使用 systemd.timer 来实现。
- 创建一个新的定时器文件:
shell
sudo nano /etc/systemd/system/ipmitool.timer
- 将以下内容添加到定时器文件中:
shell
[Unit]
Description=Run IPMI Tool Script every 30 minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=30m
Unit=ipmitool.service
[Install]
WantedBy=timers.target
步骤 4: 启动服务和定时器
- 启用并启动服务:
shell
sudo systemctl enable ipmitool.service
sudo systemctl start ipmitool.service
- 启用并启动定时器:
shell
sudo systemctl enable ipmitool.timer
sudo systemctl start ipmitool.timer
步骤 5: 检查状态
使用以下命令检查服务和定时器的状态:
shell
sudo systemctl status ipmitool.service
sudo systemctl status ipmitool.timer
这样,就可以实现服务器在开机后每30分钟执行一次风扇调速的脚本的需求了。