![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yM3UWY0IzYxgDN3UmMwMDMwkDO2kzY2MmY0kTNxEDO28CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
目前我的机柜中有3台主机,其中两台都是NAS系统。为了避免意外断电导致损失,一台UPS电源是必不可少的。而一台UPS想要控制3台主机自动断电关机,则需要UPS服务器负责与UPS设备通讯,使所有主机在UPS电池即将耗尽时通知其关机。这就是NUT的作用了。你可能以前没有听说过它,但是几乎所有平台都有它的身影。Linux,Windows,MAC OS,ESXi都有对应的客户端支持。
NUT支持的UPS品牌与型号可以到官网查询:
https://networkupstools.org/stable-hcl.html
我目前所用的UPS是华为的UPS2000-G-1KRTS,机架式,输出容量1kVA。同时这是一台在线式的UPS,也就是说它不管电网电压是否正常,负载所用的交流电压都要经过逆变电路,经过AC/DC、DC/AC两次变换后再供给负载,可以提供高质量的正弦波交流电输出给设备。当然缺点就是电源经过两次的转换会有损耗。
这台UPS的系统效率为88%。但由于是家用,入户电源波动并不是很大。因此为了提高效率平时用的都是ECO模式,电源波动在设置的ECO模式范围内时,UPS内的逆变器不启动,电源经过旁路直接输出供电,这时的效率就可以接近100%了。如果电源波动较大时则会自动切换到逆变模式保证各个设备的正常供电。以下是各个工作模式的说明:
由于NUT对于华为UPS只支持SNMP驱动,并不支持普通的USB。因此我又添加了一张SNMP卡,通过SNMP协议实时掌握UPS的状态:
SNMP 卡
SNMP 卡
下面主要介绍基于SNMP协议的NetworkUPSTools的安装与配置:
1. 服务器端的安装:
sudo apt update
sudo apt install nut nut-snmp
稍等片刻NUT就安装好了。
2. 服务器端的配置:
(1)UPS驱动的配置
由于我这个使用的是SNMP驱动,需要NUT的服务器端通过网络访问UPS的SNMP卡,因此需要配置一下UPS的SNMP协议。首先登录UPS:
进去以后找到配置-SNMP:
按照上图红框中的设置,读共同体和写共同体相当于访问SNMP的密码,我这里就不修改了。
(2)配置NUT服务器端。首先配置的是nut.conf,这个文件主要是配置NUT的类型,因为是作为服务器端,因此我们这里设置MODE=netserver.
sudo nano /etc/nut/nut.conf
然后按ctrl+o保存,ctrl+x退出。
(3)配置驱动。
sudo nano /etc/nut/ups.conf
中括号中的内容[huawei]是你给你自己的UPS取的名字。
driver是驱动名称,根据你的UPS型号设置。我这里为snmp-ups
port是snmp卡的IP地址
community是共同体名称。因为要控制UPS关机,因此这里是有写权限的共同体名称。
snmp_version是snmp协议版本,不同版本认证方式不同
desc是可选描述内容。
配置完成后保存退出。
(4)设置nut服务器端监听地址:
sudo nano /etc/nut/upsd.conf
在LISTEN 127.0.0.1 3493下增加一行nut服务器本机的IP地址:
保存退出。
启动服务进程:
sudo upsd
如果载入成功的话会看到输出:
listening on 127.0.0.1 port 3493
listening on 192.168.5.32 port 3493
Connected to UPS [huawei]: snmp-ups-huawei
(5)检查UPS运行参数(此处的huawei是你刚才给UPS取的名字):
sudo upsc huawei
正常情况会看到输出:
battery.charge: 100.00
battery.current: 214748364.70
battery.runtime: 2333.00
battery.voltage: 27.30
device.mfr: Huawei
device.model: UPS2000A
device.serial: 0000000000000000
device.type: ups
driver.name: snmp-ups
driver.parameter.pollinterval: 2
driver.parameter.port: 192.168.5.19
driver.parameter.snmp_version: v1
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: huawei MIB 0.1
driver.version.internal: 0.97
input.bypass.frequency: 50.00
input.bypass.L1-N.voltage: 230.30
input.bypass.L2-N.voltage: 0.00
input.bypass.L3-N.voltage: 0.00
input.frequency: 50.00
input.L1-N.voltage: 230.40
input.L2-N.voltage: 0.00
input.L3-N.voltage: 0.00
input.phases: 3
output.frequency: 50.00
output.L1-N.voltage: 230.40
output.L1.current: 1.20
output.L1.power: 0.20
output.L1.power.percent: 28.00
output.L1.realpower: 0.00
output.L2-N.voltage: 0.00
output.L2.current: 0.00
output.L2.power: 0.00
output.L2.power.percent: 0.00
output.L3-N.voltage: 0.00
output.L3.current: 0.00
output.L3.power: 0.00
output.L3.power.percent: 0.00
output.phases: 3
output.power.nominal: UNKNOWN
ups.firmware: V2R1C1SPC40
ups.id: UPS2000A
ups.mfr: Huawei
ups.model: UPS2000A
ups.serial: 0000000000000000
ups.status: OL ECO
ups.test.result: UNKNOWN
ups.time: 1604661508.00
此时说明你的UPS驱动已经设置完成。
(6)设置upsmon的用户,也就是客户端用于登录此server端的用户名密码:
sudo nano /etc/nut/upsd.users
方括号里的是用户名,下边的是密码,修改好以后保存退出。
重新载入刚才修改的配置:
sudo upsd -c reload
(7)设置upsmon的MONITOR指令:
sudo /etc/nut/upsmon.conf
最后一行加入:
MONITOR huawei 1 nut nut master
其中huawei是ups的名称,两个nut分别为刚才设置的用户名和密码。由于本机是直接控制UPS的服务器端,因此最后为master。
保存关闭。
(8)启动upsmon
sudo upsmon
至此服务器端已设置完毕,下边设置客户端:
1. UnRAID
(1)在UnRAID的APP商店里搜索NUT安装:
(2)安装完成后到settings里设置NUT的参数:
(3)根据自己的情况设置参数:
最后点击apply应用设置并启动NUT客户端。启动后可以看到客户端可以正常读取服务器端各种UPS参数:
同时也可以在首页看到UPS的主要参数:
到此为止UnRAID的NUT就设置完成了。
2. ESXi的NUT客户端设置:
(1)首先下载NUT的ESXi客户端:
http://rene.margar.fr/downloads/NutClient-ESXi500-1.3.0.tar.gz
(2)登录ESXi,打开SSH:
(3)通过winscp或者Bitvise SSH Client登录ESXi,将刚才下载的文件上传到/tmp中。然后运行:
cd /tmp
tar -xzvf NutClient-ESXi500-1.3.0.tar.gz
./upsmon-install.sh
过一会儿就会有安装尤其的提示:
Installation Result
Message: Operation finished successfully.
Reboot Required: false
VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.1.1
VIBs Removed:
VIBs Skipped:
(4)打开ESXi页面进行配置:
设置以下键的值:
UserVars.NutUpsName UPS名称
UserVars.NutUser upsd.users中定义的用户名
UserVars.NutPassword upsd.users中定义的密码
UserVars.NutFinalDelay UPS电池电量低时延时几秒启动关机程序
(5)设置好之后启动NUT客户端:
(6)设置NUT客户端随ESXi启动:
至此ESXi客户端安装配置完成。