我已经安装了一台Proline 650 UPS(串行)
额外的细节:UPS与一个12v SLA电池串联。 (在NUT兼容列表中没有列出,但在编译NUT扫描程序后,发现它与blazer_ser驱动程序一起工作,看起来工作正常,如果我离开ups-monitor,运行服务器时会自动closures一直在电池电源30秒或一分钟或任何操作系统:Debian 7 Wheezy硬件是一个单一的,低功耗无头i5服务器与1 3.5“硬盘。
大约5分钟后,UPS自动closures,而报告的电池容量仍然是65%(这可能是估计容量下,因为我刚刚安装了一个新的电池),NUT报告电池电压为12.1v卸下负载。 无论是否由服务器轮询,无论是轻载还是空载,UPS在大约5分钟后都会自动closures。 (我在一些testing过程中直接通过线路电源为服务器供电,以避免UPS进行节能时意外断电)
我期望NUT每隔几秒查询一次UPS的状态更新,UPS会认识到有一台计算机依赖于它,但是UPS并不聪明。 UPS将服务器显示为最大输出容量的12%,似乎认为是“空载”。 在UPSclosures负载后,电池端子(单个12v电池)的电压的空载电压约为12.6v,表明它仍然几乎充满电。
这种自我断电行为在NUT文档中被称为energy_saving (battery.energysave)。
blazer_ser驱动似乎没有提供一种方法来禁用energy_saving。 这看起来很疯狂,没有办法保持UPS负载输出。 UPS如何被宣传为提供x电量但过早closures,没有简单的方法来纠正软件中的行为?
这是我的状态输出
$ upsc [email protected] 电池电量:100 电池电压:13.60 battery.voltage.high:13.00 battery.voltage.low:10.40 battery.voltage.nominal:12.0 device.type:ups driver.name:blazer_ser driver.parameter.pollinterval:2 driver.parameter.port:/ dev / ttyS0 driver.version:2.6.4 driver.version.internal:1.55 input.current.nominal:3.0 input.frequency:50.1 input.frequency.nominal:50 input.voltage:221.0 input.voltage.fault:221.0 input.voltage.nominal:220 output.voltage:221.0 ups.beeper.status:启用 ups.delay.shutdown:30 ups.delay.start:180 ups.load:12 ups.status:OL 温度:25.0 ups.type:离线/在线交互
我也跑upsrw -u admin -p mypass -s -l nutdev1但是没有upsrw -u admin -p mypass -s -l nutdev1或类似的选项。 只有像beeper.toggle(testing,按预期工作)和其他基本的东西。 有一个即时卸载选项。 有用。 有一个选项的负载,我试图反复调用它希望延迟能量倒计时,但它没有工作。 还有closures禁用选项,这也没有帮助。
欢迎任何build议。 我想到了一些我不喜欢的东西:
upscmd -u upsadmin1 -p mypass nutdev1 battery.energysave Unexpected response from upsd: ERR CMD-NOT-SUPPORTED 这似乎是一个简单的软件解决scheme,这就是为什么我问。
================
根据BillThor的build议,我更新了我的upsmon.conf文件:
$ grep -v'^#'/etc/nut/upsmon.conf MONITOR [email protected] 1 foo2 bar2 master MINSUPPLIES 1 SHUTDOWNCMD“/ usr / bin / logger假关机” POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 死亡15 POWERDOWNFLAG / etc / killpower NOTIFYFLAG ONLINE SYSLOG + WALL NOTIFYFLAG ONBATT SYSLOG + WALL NOTIFYFLAG LOWBATT SYSLOG + WALL NOTIFYFLAG FSD SYSLOG + WALL NOTIFYFLAG COMMOK SYSLOG + WALL NOTIFYFLAG COMMBAD SYSLOG + WALL NOTIFYFLAGclosuresSYSLOG + WALL NOTIFYFLAG REPLBATT SYSLOG + WALL NOTIFYFLAG NOCOMM SYSLOG + WALL NOTIFYFLAG NOPARENT SYSLOG + WALL RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5
我打开了UPS(没有线路电源)3次,而没有充电。 电池容量和电压没有变化。 状态LB从未发生。 这里是系统日志
Dec 2 07:08:00 t upsmon [2000]:启动成功 Dec 2 07:08:00 t upsd [1942]:用户[email protected]到UPS [nutdev1] 12月2日07:08:30 t upsmon [2002]:电池上的[email protected] UPS 12月2日07:13:34 t blazer_ser [1939]:与UPS的通信丢失:状态读取失败! Dec 2 07:13:36 t upsd [1942]:UPS的数据[nutdev1]陈旧 - 检查驱动程序 12月2日07:13:40 t upsmon [2002]:民意调查UPS [[email protected]]失败 - 数据陈旧 12月2日07:13:40 t upsmon [2002]:UPS与[email protected]通信丢失 12月2日07:13:45 t upsmon [2002]:民意调查UPS [[email protected]]失败 - 数据陈旧 12月2日07:13:50 t upsmon [2002]:民意调查UPS [[email protected]]失败 - 数据陈旧 12月2日07:13:55 t upsmon [2002]:民意调查UPS [[email protected]]失败 - 数据陈旧 Dec 2 07:13:55 t upsd [1942]:客户端[email protected]设置UPS上的FSD [nutdev1] 12月2日07:13:55 t upsmon [2002]:执行自动断电关机 12月2日07:13:55 t upsmon [2002]:自动注销和关机程序 12月2日07:14:00logging器:假closures 12月2日07:17:31 t blazer_ser [1939]:与UPS的通信重新build立 Dec 2 07:17:31 t upsd [1942]:UPS [nutdev1]数据不再陈旧 12月2日07:22:38 t blazer_ser [1939]:与UPS的通信丢失:状态读取失败! Dec 2 07:22:40 t upsd [1942]:UPS [nutdev1]的数据陈旧 - 检查驱动程序 12月2日07:25:23 t blazer_ser [1939]:与UPS的通信重新build立 Dec 2 07:25:23 t upsd [1942]:UPS [nutdev1]数据不再陈旧 Dec 2 07:29:54 t upsd [1942]:即时命令:[email protected]在nutdev1上执行了shutdown.stop 12月2日07:29:55 t blazer_ser [1939]:instcmd:命令[shutdown.stop]处理 Dec 2 07:30:17 t upsd [1942]:即时命令:[email protected]在nutdev1上执行了shutdown.stop 12月2日07:30:18 t blazer_ser [1939]:instcmd:命令[shutdown.stop]处理 Dec 2 07:30:25 t upsd [1942]:即时命令:[email protected]在nutdev1上执行了shutdown.stop 12月2日07:30:26 t blazer_ser [1939]:instcmd:命令[shutdown.stop]处理 Dec 2 07:30:31 t blazer_ser [1939]:与UPS的通信丢失:状态读取失败! Dec 2 07:30:33 t upsd [1942]:UPS [nutdev1]的数据陈旧 - 检查驱动程序 12月2日07:31:32 t blazer_ser [1939]:与UPS的通信重新build立 Dec 2 07:31:32 t upsd [1942]:UPS [nutdev1]数据不再陈旧
正如你所看到的,我试图通过运行这个命令来清除FSD标志/状态(这个命令可以立即成功closures负载,或者切换蜂鸣器) upscmd -u upsadmin1 -p mypass nutdev1 shutdown.stop但是,不清楚FSD状态。
这里有一些状态信息(我删除了不相关的行)
#07:08:30之后拔掉线路电源后立即执行此操作 $ upsc [email protected] 电池。充电:69 电池电压:12.20 ups.delay.shutdown:30 ups.delay.start:180 ups.load:0 ups.status:OB ** $ date && upsc [email protected]** Tue Dec 2 07:11:29 EST 2014 电池电量:65 电池电压:12.10 ups.delay.shutdown:30 ups.delay.start:180 ups.load:0 ups.status:OB #除了ups.status以外,这些字段中没有一个改变了整个时间 ** date && upsc [email protected]** 2014年12月2日星期二07:12:29 电池电量:65 电池电压:12.10 ups.status:OB $ date && upsc [email protected] 星期二12月2日07:18:26东部时间2014年 电池电量:65 电池电压:12.10 ups.status:FSD OB 温度:25.0 还有几个,都是一样的,最后呢 ** $ date && upsc [email protected]** Tue Dec 2 07:30:28 EST 2014 电池电量:65 电池电压:12.10 ups.status:FSD OB $ date && upsc [email protected] 星期二12月2日07:31:11东部时间2014年 错误:数据陈旧
这些是我的UPS支持的即时命令
** upscmd -u upsadmin1 -p mypass -l nutdev1 ** UPS支持的即时命令[nutdev1]: beeper.toggle - 切换UPS蜂鸣器**工作** load.off - 立即closures负载**工程** load.on - 立即开启负载**似乎什么都不做** shutdown.return - closures电源并在电源恢复时返回 shutdown.stayoff - 关掉负载并保持closures状态 shutdown.stop - 停止正在进行的关机**不会阻止关机或移除FSD标志** test.battery.start - 开始电池testing test.battery.start.deep - 开始深度电池testing test.battery.start.quick - 开始快速电池testing test.battery.stop - 停止电池testing
现在我已经尝试了更多的可能性。 我试着运行test.battery.start.quick重新校准电池,有35%的负载。 它在电池上运行了一两分钟,然后切换回线路电源。 然后我有两个更多的想法。 我试着禁用了蜂鸣器,希望UPS能够继续工作,但是5分钟后它就按照惯例closures了。 然后我有另一个想法。 我拉了电源插头,然后跑了test.battery.start,希望我可以无限期地运行“电池testing”。 但5分钟后,UPS STILLclosures。
基本上这个UPS是closures的好,而不是其他的。 我会得到另一个UPS。
除非在upssched.conf中使用命令, upssched.conf NUT应该等到UPS报告电池电量不足后再closures。 检查确保你没有安排在那里。
一旦NUT开始关机,它会在超时后触发UPS回收。 这是为了确保在UPS电量耗尽之前恢复供电,服务器恢复正常运行。 时间在upsmon.conf指定为upsmon.conf 。
您可能需要启用upsmon.conf所有事件的所有通知的日志logging。 这可能使您能够确定为什么系统即将closures。 这些是我使用的设置:
NOTIFYFLAG ONBATT SYSLOG+WALL NOTIFYFLAG ONLINE SYSLOG+WALL NOTIFYFLAG FSD SYSLOG+WALL NOTIFYFLAG SHUTDOWN SYSLOG+WALL NOTIFYFLAG LOWBATT SYSLOG NOTIFYFLAG REPLBATT SYSLOG NOTIFYFLAG COMMOK SYSLOG NOTIFYFLAG COMMBAD SYSLOG+WALL NOTIFYFLAG NOCOMM SYSLOG+WALL NOTIFYFLAG NOPARENT SYSLOG+WALL
如果NUT根据计时器脚本closures,这就是我期望在日志中看到的那种线。 看起来UPS在5分钟后停止通信,并且NUT正在进行最后的FSD(强制关机)。 这是我想要它做的。 五分钟应该足够长,以表明电力不太可能快速返回。
Dec 2 07:13:55 t upsd[1942]: Client [email protected] set FSD on UPS [nutdev1]
我会期望NUT使用shutdown.return来发信号UPS关机。 一旦电源恢复,这将导致UPS重新启动,如果在关机完成之前恢复供电,请立即关机。
我期望ups.delay.shutdown和ups.delay.start是UPS关机重启周期的可调参数。 ups.delay.shutdown应该允许服务器完成closures周期的时间,并且可能需要增加。 ups.delay.start应该是电源恢复后电源稳定的时间。 在施加负载之前,还允许电池充电一段时间。
通常情况下,在关机之前,您不希望将电池电量降到最低。 你想有足够的电池通过另一个周期或两个,以防止电力再次下降。