一键登录 更安全快捷
邮箱登录
我已阅读并接受 用户协议 隐私政策

首发|ESXi 8.0 U3/9.0专属AMD Zen4/Zen5官方IPMI温度监控驱动

🥳 作为一名长期折腾 ESXi 环境的爱好者,今天必须给大家分享一个重磅好消息——一款专为 AMD Zen4、Zen5 平台打造的 ESXi Fling 伪 IPMI 散热驱动终于要和大家见面了,亲测实用,赶紧码住!

相信很多用消费级主机搭建 ESXi 环境的朋友都有过同样的困扰:咱们常用的主机(比如热门的铭凡 MS-A2),不像企业级硬件那样默认搭载智能平台管理接口(IPMI),没法直观读取 CPU 温度等硬件运行状态,运维起来总觉得少了点保障。

amd-ryzen-ipmi-temperature-diver-for-esx-scaled.png

好在,ESXi Fling 瑞昱网卡驱动的开发者文超,最近研发出了一款伪 IPMI 散热驱动,专门解决 AMD Zen4、Zen5 平台的这一痛点。几周前文超分享了他的研发成果,我第一时间上手测试,发现这款驱动真的能精准读取 CPU 温度,而且即将作为全新 ESXi Fling 项目正式发布,必须给大家安利一波!

这款驱动的使用体验很友好,安装后不仅能在 vSphere 管理界面直接查看 CPU 温度数据,咱们还能通过 ESXCLI 命令调取原始传感器指标,方便做更细致的监控,具体命令如下,直接复制就能用:

esxcli hardware ipmi sdr list

amd-ryzen-ipmi-temperature-diver-for-esx-0-scaled.png

一、驱动兼容版本(亲测可用)

我在自己的 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 脚本实现

amd-ryzen-ipmi-temperature-diver-for-esx-1.png

适合习惯用 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 脚本实现

amd-ryzen-ipmi-temperature-diver-for-esx-2.png

适合用 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 环境的一大痛点,操作简单、稳定性强,无论是新手还是资深玩家都能轻松上手。大家赶紧下载测试,有任何体验和适配心得,欢迎在评论区一起交流~

用户留言 User Comments