在Linux下使用UPS电源与监控程序配置

为了防止异外断电对台式机中的机械硬盘造成物理损伤以及丢失正在编辑的数据,我最近搜索调研了UPS电源。挑选的主要依据是相比于台式机的平均运行功率,UPS电源功率应留出一定的裕度。同时,要有能够在Linux系统下监测电源状态、并当电池耗尽后自动执行脚本程序的软件工具。最终,我购买了施奈德的后备式UPS电源APC BK650M2

图 1 施奈德后备式UPS电源APC BK650M2

虽然施奈德官方提供的PowerChute软件只支持Windows系统,但Linux下亦有apcupsd可以使用。该软件以守护进程的方式运行,通过串行数据通信的方式(串口或USB)实时获取UPS电源信息,包括当前外部输入电压、负载功率、电池电量等。当电池电量低于指定值时,会自动运行脚本程序/etc/apcupsd/apccontrol,以实现电脑系统的自动关闭或任何用户指定的操作。

UPS电源与电脑连好后,根据apcupsd说明文档,我们首先使用lsusb命令检查Linux系统是否能检测到已连接的UPS电源。

$ lsusb | grep Uninterruptible
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

确认能够找到设备后,编辑apcupsd的配置文件/etc/apcupsd/apcupsd.conf,将其中UPSCABLEUPSTYPE两项均设为usb

UPSCABLE usb
UPSTYPE usb

因为台式机与UPS电源之间是通过USB通讯的,所以需要注释掉配置文件中的串口设置部分:

DEVICE /dev/ttyS0

接下来,设置一下当外部失去电力转为UPS供电后,电池剩余多少电量时电脑自动执行脚本程序/etc/apcupsd/apccontrol。我这里的设置条件是“电池电量小于5%或仅够支持3分钟”。

# When the battery level is <= 5%, shutdown the computer.
BATTERYLEVEL 5
# When the remaining power can only last 3 minutes, shutdown the computer.
MINUTES 3

/etc/apcupsd/apccontrol中的doshutdown部分,我将原先的关闭系统指令替换为使系统进入睡眠状态。这样一来,等供电恢复后重新开机,则可以回到之前的工作状态。

;;
doshutdown)
echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
# /usr/local/bin/scripts/umount_disks.sh
# echo "Veracrypt disks have been umounted!"
# ${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"
echo "System will enter into hibernation!"
systemctl hibernate
;;

至此,可以启动apcupsd系统服务了。

$ sudo /etc/init.d/apcupsd start

该服务启动后,除了正常的UPS电源实时监测外,还会在本机的3551端口上开启一个Web服务器。我们可以在命令行终端使用apcaccess命令来获得电源的运行状态。其中的主要参数为:

  • LINEV:线电压

  • LOADPCT:负载占比

  • TIMELEFT:电池剩余维持时间

  • LOTRANS:最低容许输入电压

  • HITRANS:最高容许输入电压

  • BATTV:电池输出电压

  • NOMPOWER:额定功率

$ sudo apcaccess status
APC : 001,036,0870
DATE : 2021-09-03 13:09:29 +0800
HOSTNAME : [YOUR-HOST-NAME]
VERSION : 3.14.14 (31 May 2016) debian
UPSNAME : [YOUR-UPS-NAME]
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2021-09-03 13:03:24 +0800
MODEL : Back-UPS BK650M2-CH
STATUS : ONLINE
LINEV : 226.0 Volts
LOADPCT : 20.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 29.9 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : Low
LOTRANS : 160.0 Volts
HITRANS : 278.0 Volts
ALARMDEL : 30 Seconds
BATTV : 13.5 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : OK
STATFLAG : 0x05000008
SERIALNO : 000000000000
BATTDATE : 2001-01-01
NOMINV : 220 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 390 Watts
FIRMWARE : 294803G -292804G
END APC : 2021-09-03 13:09:39 +0800

 

posted @ 2021-11-21 16:37  皮波迪先生  阅读(4257)  评论(0编辑  收藏  举报