1.在ESXI中直通UPS给TrueNAS虚拟机

1.1 ESXI直通UPS给TrueNAS虚拟机

首先需要先插入USB设备到服务器上,接着在ESXI中进行操作;在ESXI中,选择TrueNAS虚拟机,新增USB设备,选中UPS设备。

image-yqpr.png

如下是我的UPS设备(APC的BK650M):

image-lkiv.png

1.2 在TrueNAS虚拟机中开启UPS服务

接着,进入TrueNAS中进行操作,选择"System"-"Services":

image-w5ma.png

选择UPS服务,点击右侧的更多配置UPS:

image-9ccc.png

进行如下的配置(这里的Driver尽可能选择自己的设备的驱动,如果找不到的话,那么选择一个后缀有usbhib的驱动也行):

image-udze.png

接着保存之后,开启UPS服务+开机自启动服务。

image-epe9.png

接着,在SSH终端中执行upsc ups命令,可以查看到UPS设备的详细信息。

truenas% upsc ups
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 96
battery.mfr.date: 2001/01/01
battery.runtime: 3213
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.7
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
device.model: Back-UPS BK650M2_CH
device.serial: 9B2522A03956
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: APC HID 0.98
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
input.sensitivity: low
input.transfer.high: 278
input.transfer.low: 160
input.voltage: 222.0
input.voltage.nominal: 220
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.load: 9
ups.mfr: American Power Conversion
ups.mfr.date: 2025/05/29
ups.model: Back-UPS BK650M2_CH
ups.productid: 0002
ups.realpower.nominal: 390
ups.serial: 9B2522A03956
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d

通过以上的步骤,就完成了UPS直通给TrueNAS虚拟机。

2.在ESXI中接入TrueNAS的UPS服务

ESXI接入UPS服务,依赖开源项目NutClient-ESXI

2.1 在ESXI中允许社区软件安装

依次选择"主机"-"管理"-"安全和用户"-"接受级别",将接受级别调整为"社区"。

image-svns.png

2.2 在ESXI中开启SSH服务

依次选择"主机"-"操作"-"服务"-"启动Secure Shell(SSH)",开启SSH服务。SSH服务在每次机器重启时都会重置为关闭状态,每次开机都需要重新开启SSH服务。

image-snkx.png

2.3 在ESXI中安装NutClient

在本机下载NutClient,并上传到ESXI的/tmp目录下:

# 下载NutClient
wget https://github.com/rgc2000/NutClient-ESXi/releases/download/2.7.0/NutClient-ESXi-2.8.3-2.7.0-offline_bundle.zip
# 将NutClient压缩包上传到ESXI服务器的/tmp下
scp NutClient-ESXi-2.8.3-2.7.0-offline_bundle.zip root@192.168.11.100:/tmp

# ssh登录ESXI服务器
ssh root@192.168.11.100

SSH登录ESXI服务器之后,使用如下的命令安装NutClient(注意换成自己的版本的压缩包文件)。

[root@exsi:/tmp] esxcli software vib install -d /tmp/NutClient-ESXi-2.8.3-2.7.0-offline_bundle.zip
Installation Result
   Message: Operation finished successfully.
   VIBs Installed: Margar_bootbank_upsmon_2.8.3-2.7.0
   VIBs Removed: 
   VIBs Skipped: 
   Reboot Required: false
   DPU Results: 

可以使用如下的命令升级NutClient:

esxcli software vib update -d /tmp/NutClient-ESXi-2.8.3-2.7.0-offline_bundle.zip

可以使用如下的命令关闭NutClient

esxcli software vib remove -n upsmon

2.4 在ESXI中配置UPS服务信息

接着,进入ESXI管理页面,在"管理"-"高级设置"中搜索Nut,有以下的这些配置信息。

image-zsgq.png

我们主要关注配置如下的UPS的几个配置:

# ups名称, 格式参考ups@192.168.11.105
UserVars.NutUpsName=ups@192.168.11.105
# ups的用户名, 根据之前在TrueNAS当中配置的进行填写
UserVars.NutUser=xxx
# ups的密码,根据之前在TrueNAS当中配置的进行填写
UserVars.NutPassword=xxx
# 在 NUT 检测到低电量后,延迟多少秒再关闭 ESXI主机,典型值:60 到 300 秒, 建议值:120(避免瞬时误判,也留一点时间写入缓存)
UserVars.NutFinalDelay=120
# 说明:当 UPS 切换到电池供电时,等待多少秒后执行关机。
#	•	如果设置为 0,只有在检测到“低电量”才关机。
#	•	如果设置为大于 0,例如 300,则当 UPS 进入电池模式 5 分钟后就关机(不等低电量事件)。
# 建议保留为 0,只在电池快耗尽才关机,避免小断电误触。
UserVars.NutOnBatteryDelay=0

在完成上面的配置之后,在ESXI的服务中找到NutClient的服务。

image-ev9j.png

启动NutClient服务,并开启NutClient的开机自启动服务:

image-6j4f.png

接着,使用SSH登录ESXI机器,输入命令/opt/nut/bin/upsc ups@192.168.11.105尝试获取UPS设备的信息,和我们在TrueNAS上获取到的信息一致。

[root@exsi:/tmp] /opt/nut/bin/upsc ups@192.168.11.105
battery.charge: 100
battery.charge.low: 96
battery.mfr.date: 2001/01/01
battery.runtime: 3213
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.7
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
device.model: Back-UPS BK650M2_CH
device.serial: 9B2522A03956
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: APC HID 0.98
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
input.sensitivity: low
input.transfer.high: 278
input.transfer.low: 160
input.voltage: 224.0
input.voltage.nominal: 220
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.load: 8
ups.mfr: American Power Conversion
ups.mfr.date: 2025/05/29
ups.model: Back-UPS BK650M2_CH
ups.productid: 0002
ups.realpower.nominal: 390
ups.serial: 9B2522A03956
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d