检测服务器何时使用UPS电池运行


24

我有一个家庭服务器(HP Proliant ML310 G4),大约一个月前从雇主那里购买的。该服务器运行Debian Linux,我几乎将其用于所有方面。我可以避免这样做,因为我的需求不是很高,因此在任何给定时间服务器很少会承受重负载。该服务器有一个2 TB RAID1阵列(带有一个热备用),由mdadm管理,我用于通过Samba通过网络共享文件。我正在使用不在阵列中的较小硬盘驱动器来运行操作系统。

我通过小型255瓦UPS为服务器供电,因为我需要它承受较小的电源波动而不会停机。这一点非常重要,因为突然的不正常关机(由电源下降或停电引起)会损坏RAID阵列,这种情况已经发生过一次了。

如果发生电源故障,我估计UPS的电源只有10-15分钟。可能还有更多,但我不想自动假设有。这足以解决持续几分钟或更短时间的停电。但是,如果电源关闭了几个小时,我需要服务器在UPS电源出现故障之前自动正确关闭自身。在这种情况下,这有望防止RAID完整性下降。

这种事情在笔记本电脑b / c上很容易,因为它具有内置传感器来确定何时使用电池供电,但是据我所知,这台服务器不是这样。我有一个不寻常的网络设置,其中DSL调制解调器与路由器分开。路由器也在UPS上,这使我可以通过笔记本电脑进行SSH接入,并在发生电源故障时关闭服务器。不幸的是,这只有在我当时在那里时才有效。我需要一个无论是否参与干预始终有效的解决方案。

由于我的DSL调制解调器不在UPS上,因此如果断电,它将与其他所有设备一起掉线。之所以这样设置,是因为我对如何解决此问题有一个想法:我正在考虑编写一个脚本来对google.com或其他一些高流量/高可用性网站进行ping操作。如果ping成功完成,则服务器将继续运行。如果ping失败(因为调制解调器已关闭),脚本将认为电源已关闭,并会告诉服务器关闭。我将脚本添加到Cron并使其每5分钟运行一次。希望这将使服务器有足够的时间在UPS没电之前关闭。

在麻烦编写脚本之前,我想知道是否有更好的方法来完成所需的工作。在此先感谢您的帮助。


15
您不应ping外部站点,而应ping DSL调制解调器的IP。
LawrenceC

1
@ultrasawblade ...听起来像一个答案,闻起来像一个答案...这是一个答案!
Pureferret 2014年

1
正如@ultrasawblade所提到的,从不依赖外部资源进行内部设置。例如,如果您的Internet突然失败,则您将失去连接,并且服务器将关闭。如果Google.com出于任何原因决定更改其名称,则您的服务器将关闭。如果使用IP对其进行ping操作,并且该特定服务器场发生故障,则服务器也将发生故障。任何外部来源都是如此。除非您100%确定必须在其他服务器可用时打开服务器,否则由于任何原因您都不希望依赖该其他服务器。
Nzall 2014年

这些答案对您没有帮助吗?
戴夫2014年

Answers:


34

有一种古老但行之有效的方法:使用旧的模拟调制解调器。这是怎么

  • 通过串行端口将调制解调器连接到服务器(例如ttyS0)
  • 不将调制解调器的电源插入UPS,而直接插入市电
  • 不要将任何东西插入调制解调器的电话线

现在每隔几秒钟发送一次轮询调制解调器,ATZ[Enter]并期望OK[Enter]-如果调制解调器没有应答,您可能会认为它没有电,这意味着UPS处于电池供电状态。

编辑

要点是,如果您的Internet连接由于其他原因而断开,则服务器将无法正常关闭。

编辑2

从评论:

  • 当然,您应该保持某个状态从一个检查到下一个检查,只有在N个检查失败后才关闭。我没有提到这一点,因为它适用于所有可能的检查,而不仅仅是调制解调器
  • 使用调制解调器和使用与网络相关的任何东西之间的区别是,将发生网络连接的暂时丢失:如果您重新启动交换机,则不想被“登录失败,USV上的服务器”困扰或重新配置VLAN。以我的经验,串行线功能强大。

1
很好的答案,但是我建议在它真正关闭之前对其进行几次检查以增加安全性。(这样您就不必在5分钟的电源不足期间关闭),而且我认为ping通三明治也就足够了(在您的网络之外什么也没有)。
HTDutchy 2014年

@HTDutchy看到我的编辑!
Eugen Rieck 2014年

我知道,但由于他可能没有串行连接,或者旧的调制解调器挂在内部硬件的ping上,这将是下一个最好的选择。并且如果该开关将停止工作,则服务器仍然会出现故障。
HTDutchy 2014年

22

ups通常带有USB或COM1连接器。将其连接到服务器后,即可开始监视UPS。

在Windows环境中,没有安装软件,消息已被注册,它将为您关闭服务器。我不知道这在Linux上如何工作,但是我敢打赌有些软件可以与您的UPS进行接口。


我只是检查了我的UPS,不幸的是它没有这样的东西。它仅具有8个电源插头(电池上4个,无电池4个)以及电话线的输入和输出插孔。
Will Kraft 2014年

27
然后获得可以与计算机通信的UPS。
Ramhound 2014年

@Ramhound这可能不是一个选择,UPS可能会非常昂贵,并且有更便宜的方法。

我不同意还有其他方法可以检测到您是否正在使用电池供电,甚至无法检测到水平
Ramhound 2014年

1

如果您使用的是Debian,请尝试使用NUT(网络UPS工具)。我使用NUT来执行您在Synology NAS(运行busybox)和运行Ubuntu 12.04 LTS的家庭网络服务器上所描述的功能。出于与您相同的原因,我已通过USB将NAS插入USB到UPS,这可能会丢失所有文件。

我相信螺母守护程序会每秒查询UPS以确定状态。当UPS处于电池模式时,可以将其配置为正常关闭或先等待X分钟,依此类推。您还可以将多个客户端设置为连接到服务器上运行的nut守护程序。因此,您的服务器也可以告诉网络上的多台PC正常关闭。对于关机执行,您可以以特定的方式为关机服务提供自己的脚本,或者,如果我没记错的话,可以使用仅调用shutdown -h的内置脚本。

NUT网站

有更好的网站来查找信息,但我现在不记得他们了。配置可能会很麻烦,但是如果您要谈论的是可能丢失RAID,请检查一下!根据您的需要,您可能不需要整个NUT套件,您也许可以只使用UPSMON部分。我认为您可以在Ubuntu软件包“ nut-client”中获得此功能。

还有一个适用于Windows的NUT客户端,但是在Windows上,最好使用PowerChute之类的东西或类似的东西。


如前所述,OP的UPS似乎无法与计算机通信,没有USB或网络。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.