delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

06 May 2011

配合 APC BE550G UPS 的 apcupsd 配置

APC BE550G 是一种廉价的UPS,支持以 USB 线通知被保护的系统或查询状态。

在 FreeBSD 上可以用 apcupsd 来配合 USB 通知使用。

去年大河发生过一次停电事故,所以买了一个 UPS 来配合自己的机器;今天大河又来了一次大约90分钟的停电,算是完成了对 UPS 的完整测试。


UPSCABLE usb
UPSTYPE usb
DEVICE
POLLTIME 60
LOCKFILE /var/spool/lock
SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run
NOLOGINDIR /var/run
ONBATTERYDELAY 6
BATTERYLEVEL 8
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 127.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 1024
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
FACILITY DAEMON
SENSITIVITY H
WAKEUP 60
LOWBATT 02
SELFTEST 336

上述设置中比较重要的:

  1. 采用USB接口
  2. 每60秒轮询一次UPS状态
  3. POWERFAIL和NOLOGIN文件放到/var/run(实际上并不需要)
  4. 等待6秒才开始真正的ONBATTERY操作:如果电源只是短暂地发生瞬断则不做反应。
  5. 当停电导致电池剩余容量低于8%时,立即执行关机操作。
  6. 当停电导致剩余容量低于3分钟时,立即执行关机操作。
  7. 禁止按掉电时间为关机判断条件。
  8. 每5分钟(300s)警告一次登录的用户系统发生掉电。
  9. 首次掉电后1分钟(60s)告知登录的用户发生掉电。
  10. 禁止在掉电时阻止用户登录。
  11. 禁止apcupsd关闭电源。
  12. 启用NIS服务(提供让munin收集的UPS数据)。
  13. NIS服务监听127.0.0.1:3551。
  14. 在 /var/log/apcupsd.events 中记录"事件"。
  15. UPS在供电恢复后等待60秒再恢复对设备的供电。
  16. 每两周进行一次自检。

其他一些数据:

  • 目前的UPS负载大约是20%-30%(110V,大约0.9A),在使用电池时大约可坚持20分钟;
  • 充电到UPS认为充满大约需要8个小时;
  • 这款UPS在未发生掉电的时候返回的负载值是0;