Lazy loaded image
折腾本腾
[PVE]配置UPS自动关机教程
00 分钟
2025-1-18
2025-11-27
type
status
date
slug
summary
tags
category
icon
password
URL

/etc/nut/nut.conf前言

本文采用PVE7.4系统和山特TG-BOX800作为演示使用,其他设备配置可能略有差异,请提前将PVE换好国内源。

连接UPS

将数据线两端分别连接PVE主机和UPS,在PVE的shell中执行
返回的结果中应有“UPS”字样

安装NUT

配置NUT

查看UPS设备硬件信息

复制下方的UPS信息
如果有port = "auto",则删去bus = "001",然后在最后追加三行
ignorelb表示忽略UPS传来的低电量状态值,默认的低电量值为20,这里设置成倒数第二行的80,最后一行表示不启用电池估算运行剩余时间,因为这个可能不太准。
最后修改完应该像下图这样
打开/etc/nut/ups.conf,将上述内容添加到末尾,然后Ctrl+X,Y保存
然后运行下述命令,正常的话不应该报错
打开/etc/nut/nut.conf
将最后一行改为或添加为下述来设置成主机模式
然后Ctrl+X,Y保存。
打开/etc/nut/upsd.conf
将最后一行改为或添加为下述,来配置监听地址和端口(NUT默认主从通信端口是3493)
然后Ctrl+X,Y保存
打开/etc/nut/upsd.users
将最后一行改为或添加为下述,来配置用户名(示例中为root)和密码(示例中为123321),设置成什么都可以,只要记住就行。另外如果想和威联通NAS做主从联动的话,用户名改为admin,密码改为123456
然后Ctrl+X,Y保存

启动NUT

然后查看UPS状态
返回一大串内容:
主要看battery.charge表示当前电量,battery.charge.low表示低电量阀值,battery.type表示电池类型

自动关机

upsmon是NUT的监控程序,通过upsmon.conf配置upsmon。
打开/etc/nut/upsmon.conf
将内容改为
然后Ctrl+X,Y保存
MONITOR后面按序分别是:UPS标识,NUT主机地址,1表示UPS数量,之前设计的NUT用户名和密码(master表示最后执行动作)
SHUTDOWNCMD定义当UPS监测到严重事件(如电池电量低)且需要立即关闭系统时,应该执行的关机命令。优先级比下面的NOTIFYCMD低,默认执行的命令是/sbin/shutdown -h +0
NOTIFYCMD指定一个脚本的路径,该脚本在UPS状态发生变化时(如从在线状态变为电池供电状态,或电池电量达到某个阈值)被调用,可以执行各种操作,比如记录日志、关闭虚拟机等。
NOTIFYCMD的触发条件比SHUTDOWNCMD更广泛,它可以在UPS的多种状态变化时被调用,这些变化可能并不需要关闭系统,比如电池电量低到某个程度就关闭某个虚拟机之类的。这里通常指定为upsmon的辅助程序upssched
NOTIFYMSG表示事件消息,当发生事件时,upsmon会发出相应文本信息。ONLINE是正常市电状态,ONBATT是市电断电电池供电状态,LOWBATT是市电断电电池供电且电量低状态,FSD是“forced shutdown in progress”强制关机状态,%s代表UPS标识+地址。
NOTIFYFLAG表示当事件发生时,upsmon做出相应的处理,后面SYSLOG表示写入syslog日志,WALL指的是发送消息给系统上所有用户,EXEC表示会执行第四行的NOTIFYCMD。
打开/etc/nut/upssched.conf
修改内容为
然后Ctrl+X,Y保存
当upsmon.conf相应位置有EXEC关键词时,upsmon会调用upssched,去执行另一个脚本文件upssched-cmd。
CMDSCRIPT规定upssched-cmd脚本的路径和文件名。PIPEFN是计时器文件,LOCKFN是临时文件,这两个文件要放在一个文件夹。
AT命令是事件执行的动作,AT后面是状态词,START-TIMER/CANCEL-TIMER分别是开始和终止计时器,power-off是upssched-cmd中定义的动作,30表示延时30秒执行动作。
AT ONBATT * START-TIMER power-off 30这句表示当断电电池供电开始后30秒,执行power-off动作。
AT ONLINE * CANCEL-TIMER power-off这句表示断电后计时器未完成的这段时间内如果市电恢复则停止计时器不再执行power-off动作。
打开/etc/nut/upssched-cmd
如果/etc/nut/upssched-cmd这个文件不存在,那么就手动创建一个。
写入内容:
然后Ctrl+X,Y保存
power-off是事件定义,名称可以自定,要跟upssched.conf对应。
/usr/sbin/upsmon -c fsd是关机命令,可以关闭本机,并通知UPS关机,也可以定义各种事件执行的动作,除了关机,还可以用PVE的qm命令操作虚拟机开关机之类的。

给予权限并启动upsmon

应当返回以下信息:
NUT主机配置完成!断电测试一下能否自动关机吧。
阅读剩余
本文https://www.frostfox.cn/pve/2024/pve-ups.html由FrostFox创作,版权归作者所有,未经允许不得转载。
本文中所有的内容均以发布当天信息为参考,日后若有变更请以最新信息为准。
THE END
上一篇
虚拟机磁盘大小扩容后调整存储空间 - 硬件讨论 飞牛私有云论坛 fnOS
下一篇
AKile监控面板 Monitor 教程(cf page前端+主控端+被控端) - 笨猫博客

评论
Loading...