华为在线式UPS2000-A-1kVA不买snmp卡,用自带串口连接allinone+黑群晖实现通信关机教程-超长图文
前言:华为UPS2000A系列分为两种类型:一是标机standard backup time、二是长机long backup time。
UPS 产品型号官方更详细的型号讲解如下:



大家想了解更详细官方参数可以查看华为官方文档:https://support.huawei.com/enterprise/zh/data-center-facility/ups2000a-pid-256604979
为啥我选个这个玩意呢,主要还是当时一是看闲鱼冲动看到说机子全新是客户留下没用过的,卖450后面加50包邮拿下,而且对比山特的TGBox850快500了,还是后背式,
(后背式ups默认是接市电输出不带稳压功能;在线式是通过整流升压电路在通过逆变器到负载端,也就是带稳压功能,无论市电浮动都是输出220v)
,然后一冲动就买下了。现在有点后悔是风扇有点吵,跟笔记本开狂暴模式差不多,嗡嗡叫
,准备换个低转速风扇了;还有一点是功耗稍微有点高,开机稳定下来约28w左右,这主要是给电池充电占部分,官方手册写的1kVA款充电电流1A,电池组是2个12v9ah串联组成24v9ah的,这么一算俯冲充电大概24w左右了,而且开机后是一直给电池浮充的不能关闭,可能也是安全保障吧。
官方图也是标的28w,也印证了这点。
相关电气参数配上我的环境:PVE8.1.4加黑群晖arpl-10.4版,硬件:n6000es+8g内存+两pdd买的东芝 14t mg08和一块14年的希捷1t老盘(当年初中第一台电脑硬盘,陪我度过初中,高中,大学,到现在工作
)
闲鱼的硬盘笼和背板188
华为的dcdc降压模块给硬盘供电
贴着华为标的光宝LITEON PS-2751-7H 750w csps服务器电源,闲鱼40
之前大火的n6000es 抖音380不带电源拿下,加上佳翼jms585 pdd80
ups本体好了废话讲到这,直接入主题:
https://zhuanlan.zhihu.com/p/431529913
首先配上大佬驱动适配链接,也是看到这篇文章后我才买的华为这款ups理由,没有这适配只能乖乖买500大洋的snmp卡
,当然你也可以完全参考这篇文章去配置,作者也是十分详细的讲解到每一环节,我剩下补通一下小白配置的关键点吧。
数据线链接ups背后的usb tybe-b口到你的主机上,我的pve默认是Debian底层所以可以直接配置,如果是esxi要安装虚拟个linux环境,什么Debian和Ubuntu这些都行,记得要直通usb给它们。
然后在pve shell下敲dmesg -d查看:
xr_serial 1-1.2:1.1: xr_serial converter detected
usb 1-1.2: xr_serial converter now attached to ttyUSB0
如果有显示xr_serial代表驱动识别到,如果没有驱动或者系统不支持就显示cdc_acm字样:如果你是esxi没有直通usb给linux也是显示如此。(新款ups可能显示ch341字样,因为换芯片了)
cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
3.接下来安装依赖库:
apt install libmodbus-dev
apt install pkgconf
apt install nut
还有以下一些库:(前面的apt install我就不打了)
make,autoconf,automake,gcc,build-essential,libtool
4.编译 UPS2000 驱动
使用git获取nut代码库:
git clone https://github.com/networkupstools/nut.git --depth=1
进入代码目录:
cd nut/
生成autotools构建文件:
./autogen.sh
配置编译选项:
./configure --with-modbus
--with-user=nut --with-group=nut
--datadir=/usr/share/nut
--sysconfdir=/etc/nut
--includedir=/usr/include
--with-statepath=/run/nut
--with-pidpath=/run/nut
--with-altpidpath=/run/nut
--with-drvpath=/lib/nut
--with-udev-dir=/lib/udev
--with-systemdsystemunitdir=/lib/systemd/system
--with-systemdshutdowndir=/lib/systemd/system-shutdown
手工编译:
# 单独编译 include 目录
cd include
make
cd ..
# 单独编译 commons 目录
cd common/
make
cd ..
# 单独编译 huawei-ups2000 驱动
cd drivers
make huawei-ups2000
此时能看到编译好的 huawei-ups2000 可执行文件:
ls -l huawei-ups2000
-rwxrwxr-x 1 user user 362872 Sep 19 09:54 huawei-ups2000
复制 huawei-ups2000 到 NUT 工作程序库:
在 /lib/nut 目录(Debian)下应该能看到许多驱动程序,建议mobaxterm的自带图形管理文件夹查看更方便(如果没有找到可以查看此作者详细讲解的位置,链接在上面)
cp huawei-ups2000 /lib/nut
至此驱动完整就基本完成了,剩下是配置在pve和黑群晖下查看ups信息。
1.首先cd /etc/nut/ 里面
此时看到几个.conf结尾文件,就些就是nut客户端和服务端的配置文件了。
2.进入nut.conf文件,在最后插入,主要别加#,或者在#后面加,这是注释,不执行的。
MODE=netserver
3.进入usp.conf文件,在最后插入:
maxretry = 3
[ups] #名字不建议改,改后黑群晖可能认不出
driver = huawei-ups2000
port = /dev/ttyUSB0 #USB0需要你查看你的USB端口号是多少,用dmesg -d查看,USB1就改成1
desc = "Huawei"
pollinterval = 1
ignorelb
override.battery.charge.low = 20 #20代表剩余20就开始执行脚本关机,可以随意改
4.进入upsd.conf文件,在最后加入:
LISTEN 0.0.0.0 3493
5.进入upsd.users文件,在最后插入:
[monuser]
password = secret
upsmon master
6.进入upsmon.conf文件,在后面插入:
RUN_AS_USER root
MONITOR ups@localhost 1 nutuser password master
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYCMD /usr/sbin/upssched
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
7.进入upssched.conf文件,在后面插入:
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock
# 断电使用电池开始计时30秒,计时后,执行upssched-cmd脚本,带shutdown_all参数
AT ONBATT * START-TIMER shutdown_all 30
# 来电后,停止shutdown_all计时
AT ONLINE * CANCEL-TIMER shutdown_all
# 来电后,执行脚本,带start_all参数
AT ONLINE * EXECUTE start_all
# 低电量,执行脚本,带shutdown_self参数
AT LOWBATT * EXECUTE shutdown_self
8.在此文件夹下新建一个名为 upssched-cmd.sh 的关闭虚拟机的脚本:
创建完后记得chmod +x upssched-cmd.sh 给这脚本赋予执行权限
#! /bin/sh
case $1 in
shutdown_self)
#关闭所有
upsmon -c fsd
;;
shutdown_all)
pvesh create /nodes/pve/qemu/100/status/stop #改成你自己的虚拟机号
pvesh create /nodes/pve/qemu/101/status/stop #改成你自己的虚拟机号
#可以继续自己按照上面格式添加你自己的
;;
start_all)
#开启所有
pvesh create /nodes/pve/qemu/100/status/start #改成你自己的虚拟机号
pvesh create /nodes/pve/qemu/101/status/start #改成你自己的虚拟机号
#可以继续自己按照上面格式添加你自己的
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
9.设置自动启动:
systemctl enable nut-driver nut-server nut-monitor
10.重启nut进程:
systemctl restart nut-server nut-client nut-driver
11.最后输入:
upsc ups@localhost
此时能看到ups的全部参数了,至此到处结束了
能看到ups的全部参数
5.关于usb设备权限问题,该问题可能导致重启后因为权限不足无法连接ups。
可以查考以下链接:https://blog.csdn.net/qq_46107892/article/details/123229674
6.还有关于黑群晖7.1版本的问题:现在版本下设置自定义时间后只能进入安全模式,黑群晖并不会关机,黑群晖也不会断开内部存储器,毕竟是黑群晖肯定不能像白裙那样断开硬盘。
所以我还是建议像我这样设置一个时间,而且这个时间最好看你ups续航时间,如果担心就设置2分钟左右,这样就断电启动ups两分钟后黑群晖自动关机,剩下pve就按照你设置的20%电时关闭pve,不然pve关机时可能没法让直通给黑裙的硬盘正常关机了。
如果选与服务器设置时间此选项,好像只能跟随编写的脚本关机,脚本关黑群晖虚拟机比较慢,好像也会让硬盘关机,请自行测试
。

设置完后,然后使用 SSH 软件,sudo -i 以root 用户登录群晖,修改 /usr/syno/bin/synoups 文件,找到 UPSSafeMode () ,在最后面加上一行 poweroff。
添加poweroff,并注释上一句,如果没有此句就不要管7.至此已经完全结束,华为ups2000a系列已经完全驯服,不用花500买snmp卡当大冤种了
,最后附上我参考配置的链接:
https://blog.csdn.net/ytmayer/article/details/131153293
https://www.yii666.com/blog/23714.html
https://blog.cyida.com/2023/2JD7SH7.html
http://www.heyihu.com/NAS/3445.html
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
Synchronizing state of nut-server.service with SysV service with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nut-server
Failed to enable unit: Unit file nut-driver.service does not exist.
不知道是啥问题
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
Failed to enable unit: File /usr/lib/systemd/system/nut-driver: Invalid argument
校验提示文案
校验提示文案
校验提示文案
校验提示文案
Failed to enable unit: File /usr/lib/systemd/system/nut-driver: Invalid argument
校验提示文案
校验提示文案
Synchronizing state of nut-server.service with SysV service with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nut-server
Failed to enable unit: Unit file nut-driver.service does not exist.
不知道是啥问题
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案