在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM