🥳 作为一名长期折腾 ESXi 环境的爱好者,今天必须给大家分享一个重磅好消息——一款专为 AMD Zen4、Zen5 平台打造的 ESXi Fling 伪 IPMI 散热驱动终于要和大家见面了,亲测实用,赶紧码住!
相信很多用消费级主机搭建 ESXi 环境的朋友都有过同样的困扰:咱们常用的主机(比如热门的铭凡 MS-A2),不像企业级硬件那样默认搭载智能平台管理接口(IPMI),没法直观读取 CPU 温度等硬件运行状态,运维起来总觉得少了点保障。
好在,ESXi Fling 瑞昱网卡驱动的开发者文超,最近研发出了一款伪 IPMI 散热驱动,专门解决 AMD Zen4、Zen5 平台的这一痛点。几周前文超分享了他的研发成果,我第一时间上手测试,发现这款驱动真的能精准读取 CPU 温度,而且即将作为全新 ESXi Fling 项目正式发布,必须给大家安利一波!
这款驱动的使用体验很友好,安装后不仅能在 vSphere 管理界面直接查看 CPU 温度数据,咱们还能通过 ESXCLI 命令调取原始传感器指标,方便做更细致的监控,具体命令如下,直接复制就能用:
esxcli hardware ipmi sdr list一、驱动兼容版本(亲测可用)
我在自己的 ESXi 主机上测试了多个版本,目前这款驱动完美适配以下版本,大家可以对照自己的环境选择,不用担心兼容性问题:
ESX 9.1
ESX 9.0.x 全系列
ESX 8.0 Update 3
二、驱动下载步骤(附避坑提醒)
驱动是免费的,需要通过 Broadcom 支持门户下载,步骤很简单,不过有个小细节要提醒大家,下载前需要注册一个 Broadcom 账号,免费注册即可,具体步骤如下:
第一步:打开 Broadcom 支持门户(BSP),完成账号注册并登录(注册流程很简单,填写基本信息就能完成);
第二步:登录后,进入免费下载专区(https://support.broadcom.com/group/ecx/free-downloads),这里要重点提醒:千万别用共享邮箱账号或邮件分发列表(PDL)登录,亲测会提示风险,而且这也是违反网站使用条款的;
第三步:在免费下载专区里,找到 Flings 分类页面(https://support.broadcom.com/group/ecx/productdownloads?subfamily=Flings&freeDownloads=true),进去后就能找到这款 AMD Zen4/Zen5 IPMI 散热驱动,点击下载即可。
三、驱动安装步骤(超详细,新手也能会)
驱动采用离线安装方式,我一步步测试过,操作很便捷,大家跟着做就能成功,具体步骤如下:
第一步:将下载好的驱动离线安装包(压缩包格式)上传到你的 ESXi 主机,建议上传到根目录,后续执行命令更方便;
第二步:登录 ESXi 主机终端,执行以下命令,记得把命令里的压缩包路径改成你实际上传的路径(我这里给的是默认示例路径):
esxcli software component apply -d /VMware-amd-zen-ipmi_thermal_910.1.0.0005-5vmw.803.0.0.24022510.zip第三步:命令执行完成后,重启 ESXi 主机,驱动就能生效了,重启后就能在 vSphere 界面看到 CPU 温度了。
四、驱动卸载步骤(按需操作)
如果后续需要卸载驱动,步骤也很简单,同样需要重启主机生效,具体操作如下:
第一步:登录 ESXi 主机终端,执行以下卸载命令,直接复制执行即可:
esxcli software component remove -n smntemp第二步:执行完命令后,重启 ESXi 主机,就能完成卸载了。
五、测试验证及反馈建议
据我了解,这款驱动已经由多名内部测试人员在多款搭载 Zen4/Zen5 处理器的铭凡 MS-A2 设备上完成了验证,稳定性有保障。我自己也在铭凡 MS-A2 上测试过,温度读取精准,没有出现异常。
如果大家在其他 AMD Zen4、Zen5 平台上部署成功,欢迎在评论区留言分享你的设备型号;如果遇到使用问题,也可以在评论区交流,一起解决问题、完善这款驱动。
六、适配更多 AMD 设备(进阶技巧)
这款驱动目前主要依赖两项硬件标识信息:AMD 系统管理端口的 PCI 设备 ID(通常设备地址为 0000:00:18.3)和 CPU ID(用于识别 CPU 家族及型号)。由于测试设备有限,目前驱动只硬编码适配了部分机型,但咱们可以手动扩展适配其他 AMD 平台。
安装驱动后,执行以下全套命令,就能手动扩展适配,亲测有效,命令直接复制执行即可:
lspci -v | grep -A2 '0000:00:18.3' | grep '1022' | awk '/Class/{gsub(":","",$3);print "regtype=native,bus=pci,id="$3"..............,driver=smntemp"}' | tee /etc/vmware/default.map.d/smntemp_extra.map kill -SIGHUP $(pidof vmkdevmgr) esxcli hardware ipmi sdr list以下是目前驱动已兼容的 Zen4/Zen5 设备型号,大家可以对照自己的设备查看是否兼容,若有未列出的适配机型,欢迎留言告知,后续驱动更新会默认纳入支持:
PCI/CPU ID,架构,CPU 家族型号
1022:14e3,Zen 4,Raphael(拉斐尔)
1022:14e3,Zen 4,Granite Ridge(花岗岩岭)
1022:14f3,Zen 4,Phoenix(凤凰)
1022:16fb,Zen 5,Strix Point(猛禽点)
1022:124b,Zen 5,Krackan
1022:12bb,Zen 5,Strix Halo(猛禽光环)
七、传感器数据调取方式(批量监控必备)
如果大家需要批量获取多台 ESXi 主机的硬件健康传感器数据,除了前面提到的 ESXCLI 命令,还可以通过 vSphere API 编写程序实现,我整理了两种常用方式,代码都已测试可用,大家按需选用。
方式一:PowerCLI 脚本实现
适合习惯用 PowerShell 的朋友,脚本可以批量获取指定集群内所有 ESXi 主机的传感器数据,包括温度、状态等信息,直接复制脚本修改集群名称即可使用:
$cluster = "VCF-Mgmt-Cluster" $vmhosts = Get-Cluster -Name $cluster | Get-VMhost Write-Host foreach($vmhost in $vmhosts | Sort-Object -Property Name) { $healthSubSys = Get-View $vmhost.ExtensionData.ConfigManager.HealthStatusSystem $sensorReadings = $healthSubSys.Runtime.SystemHealthInfo.NumericSensorInfo $results = @() foreach($sensorReading in $sensorReadings) { $tmp = [pscustomobject] [ordered]@{ Id = $sensorReading.id Sensor = $sensorReading.Name Status = $sensorReading.HealthState.Key Reading = $sensorReading.CurrentReading Units = $sensorReading.baseUnits Categories = $sensorReading.SensorType LastUpdate = $sensorReading.TimeStamp } $results += $tmp } Write-Host -ForegroundColor Cyan "ESX: $($vmhost.name)" $results | Format-Table -AutoSize }方式二:VI JSON API 脚本实现
适合用 bash 脚本的朋友,同样可以批量获取指定集群内主机的传感器数据,大家根据自己的 VC 环境修改脚本中的参数即可:
VC="vc01.vcf.lab" VC_USERNAME='administratorat[at]vsphere[dot]local' VC_PASSWORD='VMware1!VMware1!' VC_API_RELEASE='8.0.0.0' VMHOST_CLUSTER_NAME="VCF-Mgmt-Cluster" VCREST_API_SESSION_ID=$(curl -k -s -u "${VC_USERNAME}:${VC_PASSWORD}" -X POST "https://${VC}/api/session" | jq -j) CLUSTER_MOREF=$(curl -k -s -H "vmware-api-session-id: ${VCREST_API_SESSION_ID}" -X GET "https://${VC}/api/vcenter/cluster?names=${VMHOST_CLUSTER_NAME}" | jq -r '.[0].cluster') SESSION_MANAGER_MOID=$(curl -k -s https://$VC/sdk/vim25/${VC_API_RELEASE}/ServiceInstance/ServiceInstance/content | jq -j .sessionManager.value) VIJSON_API_SESSION_ID=$(curl -k -s -o /dev/null -D - "https://$VC/sdk/vim25/${VC_API_RELEASE}/SessionManager/$SESSION_MANAGER_MOID/Login" -H 'Content-Type: application/json' -d "{\"userName\":\"${VC_USERNAME}\", \"password\": \"${VC_PASSWORD}\"}" | awk 'BEGIN {FS=": "}/^vmware-api-session-id/{print $2}') curl -k -s \ -H "vmware-api-session-id: ${VCREST_API_SESSION_ID}" \ "https://${VC}/api/vcenter/host?clusters=${CLUSTER_MOREF}" \ | jq -r '.[] | "\(.name) \(.host | sub("host-"; ""))"' \ | while read -r name id; do echo "Host: $name (ID: $id)" curl -ks \ -H "vmware-api-session-id: ${VIJSON_API_SESSION_ID}" \ "https://$VC/sdk/vim25/${VC_API_RELEASE}/HostHealthStatusSystem/healthStatusSystem-${id}/runtime" \ | jq '.systemHealthInfo.numericSensorInfo[] | { id, name, health: .healthState.key, currentReading, baseUnits, sensorType, timeStamp }' done总的来说,这款 AMD Zen4/Zen5 IPMI 散热驱动真的解决了消费级主机搭建 ESXi 环境的一大痛点,操作简单、稳定性强,无论是新手还是资深玩家都能轻松上手。大家赶紧下载测试,有任何体验和适配心得,欢迎在评论区一起交流~