部分内容参考借鉴天帝的文章:使用storcli64工具查看lsi阵列卡卡温度
https://club.fnnas.com/forum.php?mod=viewthread&tid=13354
有兴趣的可以去看看
以下是我的ALL in one主机配置:
主板:微星 MPG Z490M GAMING EDGE WIFI
CPU:QTB0(很稳定,功耗低,已经稳定运行2年半左右)
内存:金百达银爵32G*2
M2硬盘:东芝512G(系统盘)+西数2T(直通飞牛)
固态硬盘:2*480g(直通群晖)
机械硬盘:4*东芝mg08 16T
阵列卡:Dell H740P(直通飞牛)
电源:TT sfx750W白金版
机箱:在一块五花肉定制的8盘位NAS机箱

5月份定制的机箱终于在7月初收到了,于是立即着手将原机箱(**超人k88)中的配件拆除,并组装到新机箱中,经过2-3个小时的时间终于组装完毕,之后又将系统重新安装了一遍,先是安装PVE作为底层系统,在PVE中安装2个LXC容器,分别跑Lucky和docker,之后安装了群晖和飞牛以及一台Win10,目前运行一切正常。
虽然机箱有风道设计,家用环境中静音为主,风速没调太大,导致阵列卡温度过高,为了防止阵列卡烧毁,于是在阵列卡上用扎带绑了一个4cm小风扇对着吹。虽然有风扇了,但是不知道阵列卡的具体温度是多少,心里还是不太放心,就想着如果能看到阵列卡的温度信息就好了,可是飞牛系统中虽然可以识别到阵列卡,但是无法读取到阵列卡的温度信息。于是就把目光转到博通的阵列卡管理软件(Storcli64)上,经过上网查询摸索,成功实现在飞牛系统下读取阵列卡温度信息以及硬盘温度。
展示下效果:

下面说一下具体实现方式
1、获取Storcli64软件
进入博通官网下载,打开链接:https://www.broadcom.com/site-search?page=1&per_page=100&q=storcli,找到最新版本的Storcli,新版的对阵列卡识别范围应该更广些,可以识别并管理Dell的H740P、LSI的阵列卡,理论上使用相同芯片设计的都支持。
打开网站后滚动页面到最底下,将每页显示个数从10调整到100

然后向下找到MR 7.33版本,此版本发布于2025年5月19日,截止到发稿前是最新的版本

下载完成后解压压缩包,得到Unified_storcli_all_os.zip文件

然后再次解压,得到以下文件

2、安装到飞牛中
打开终端软件,这里演示的是XTerminal软件,其他的如finalShell、SecureCRT、MobaXterm都是可以的
首先在飞牛中开启SSH功能

其次到XTerminal软件中点击+服务器按钮,添加一台SSH服务器


完成后点击创建,并连接到飞牛系统中,进系统后输入sudo -i命令回车,再输入飞牛用户的密码,切换到root用户

之后将步骤1中的Ubuntu文件下的3个文件上传到飞牛的tmp目录中,全选这三个文件,并拖动到左侧tmp文件夹上

点击确定

上传完毕之后,在命令窗口中输入
dpkg -i /tmp/storcli_007.3306.0000.0000_all.deb
后回车安装Storcli64软件,之后再做一个软连接方便以后运行storcli64
输入
ln -s /opt/MegaRAID/storcli/storcli64 /usr/bin/storcli64
后回车
3、查询阵列卡温度
输入
storcli64 /c0 show temperature | grep ROC | awk '{print $4}'
输出的55即是阵列卡温度

4、查询硬盘温度
首先确定阵列卡组建的逻辑磁盘在系统中的名称,在命令窗口中输入
lsblk
查看编号名称,我这里是sdb

之后查询物理硬盘在阵列卡中对应的编号,在命令窗口中输入
storcli64 /c0 show
c0代表的是第一个阵列卡,如果有第二个阵列卡,查询第二个阵列卡上的物理硬盘编号,这里使用c1代替,以此类推;
在输出的结果中找到类似如下信息,其中的DID值就是物理硬盘在阵列卡上的编号,我这里是将硬盘间隔放的,所以是0、2、4、6,如果你的硬盘是按照顺序接的这里的编号应该是连续的0、1、2、3. . .

之后输入以下命令查询编号0硬盘smart信息中的温度信息
smartctl -a -d megaraid,0 /dev/sdb | grep Temperature_Celsius
其中megaraid,0代表的是编号0硬盘,如果是查询编号2硬盘就改为megaraid,2

这里输出的40就是阵列卡中编号0硬盘的温度
5、批量输出结果,结果可视化优化
每次通过命令查询温度还是比较繁琐的,于是想到将命令合并成一个可执行脚本,会方便很多,于是有了以下的脚本内容,首先创建一个文件,文件名取为temp.sh
nano temp.sh
然后将以下内容填入temp.sh文件中
temps=()
for i in 0 2 4 6; do
temp=$(smartctl -a -d megaraid,$i /dev/sdb | grep Temperature_Celsius | awk '{print $10}')
temps+=("硬盘$i: $temp度")
done
roc=$(storcli64 /c0 show temperature | grep ROC | awk '{print $4}')
# 统一输出
printf "%s\n" "阵列卡:${roc[@]}度"
printf "%s\n" "${temps[@]}"
保存并退出按ctrl+o、回车保存,ctrl+x退出
然后给temp.sh可执行权限
chmod +x temp.sh
之后再想查看阵列卡温度和机械硬盘温度,可以输入以下命令查看
./temp.sh
输出内容如下:

至此可以方便的查看阵列卡以及机械硬盘的温度了,全文结束。