单UPS支持多nas设备

2020-08-22 19:39:38 62点赞 465收藏 67评论

追加修改(2020-08-24 08:38:09):
关于那两个脚本,我这边上传到网盘了,有需要的自取链接 提取码: 4wyk 自己修改powerfail2对应的路径


前言

第一次投稿,排版混乱敬请原谅,单UPS支持多nas设备 非常感谢各路大神给的灵感及方法单UPS支持多nas设备

家里原来有个黑群晖,为了数据安全买了一个ups,型号为 APC的BK650,

这款ups基本上算是很多人的选择了,兼容性不错,连上群晖能够自动识别并实现断电通知单UPS支持多nas设备

但这款ups有个问题,它是通过usb线通知nas的,并不是snmp之类的网络协议,只能通知连接的设备,若只有一台nas,或者是同品牌的nas到是没啥大问题,不过有两台以上的不同品牌(系统)的nas就会出现不能通信的情况。

然而我就购买了一台qnap,现在问题来了,单UPS支持多nas设备 这两台设备总有一台不能连上ups,导致ups耗完电直接断电,失去了保护的意义

现在的需求就是在断电时能够让两台(或更多)的设备能够安全的关机,经过一段时间摸索,基本上实现了,大概有两种方法单UPS支持多nas设备

PING网关

这是一种比较简单的方法,也算是比较容易的,基本思路是做一个定时任务,不断地ping网关,ping不通的话就认为已经断电,然后执行关机命令,这种方法网关不能连接到ups上。

站里已经有人实现过了,不过他用的qnap

非管理型UPS如何实现停电后NAS的自动关机脚本注:本文只适用于威连通的NAS,理论上来讲也是可以拿去其他LINUX内核的NAS下使用,但是具体的脚本内容还是需要做些修改。另外本文只是作为生活中的一点经验积累,如果有问题还请高手解答。自从有了NAS后,就一直在想着给NAS配置一个后备电源,网上和张大妈家能找到最多的莫过于施耐德APCBK650-CAi_GuiGui| 45 评论39 收藏337查看详情


我这边写下群晖的用法,利用群晖自己的定时任务,单UPS支持多nas设备 脚本稍微有些改动

首先我们有两个脚本文件,powerfail1 和powerfail2

powerfail1脚本

powerfail1脚本内容powerfail1脚本内容

该脚本做了几件事

1. 根据设定的时间间隔执行ping命令,并获取ping命令的返回值

2. 判断ping返回的信息,如果正常,不做其他事

3. 如果返回数据不正确,则在指定时间后执行powerfail2脚本

powerfail2脚本如下

powerfail2脚本内容powerfail2脚本内容

powerfail2脚本做了几件事

1. 再次尝试ping网关,目的是防止网络波动导致异常关机

2. 判断ping返回的信息,如果正常,不做其他事

3. 如果不正常,则执行关机操作

将上述两个脚本文件拷贝进nas,路径自选

ssh进入群晖,找到刚才添加的文件,chmod+x 添加执行权限

进入群晖管理界面,控制面板-任务计划-新增-计划的任务-用户自定义脚本

管理界面管理界面

编辑任务编辑任务

随意输入名字,注意不能有中文,选择计划选项,设置每天的每一分钟运行一次(可根据具体情况调整)

计划信息计划信息

选择任务设置,在用户自定义脚本里输入刚才上传的脚本绝对位置,我的脚本放在第一块共享硬盘的power文件夹中,所以路径为/volume1/power/powerfail,其中powerfail为脚本名

自定义脚本自定义脚本

注意powewrfail脚本中的powerfail2的路径要与实际路径一致

路径路径

然后就可以拔掉网线测试下了,一般1-3分钟内会关机,这就基本实现了需求

该方法比较简单,只需要两个脚本即可完成,事实上这种方式适用很多场景,例如有的ups根本没有通信功能,只要有ping命令和定时任务就这种方式就可以,缺点在于所有判断都是靠ping实现的,遇到网络波动,或不小心取下网线、或网关断电等都会导致nas关机,虽然我们在脚本里面加了二次检查,能够避免部分情况。


NUT

NUT即Network UPS Tools,单UPS支持多nas设备 也是目前比较通用的ups网络通信软件,分为服务端和客户端

好消息是包括qnap和群晖都用的是nut实现的网络间断电通知,单UPS支持多nas设备 坏消息是他们用的名字和密码不一样,导致两者之间不能通信单UPS支持多nas设备

所以基本的思路是通过修改某一方的nut配置实现两者间的通信,最终达到目的,这一思路在群晖和其他nas系统比如unraid、omv上比较好实现,思路就是安装nut,配置好用户名密码符合群晖的要求即可,站里也有人实现了群晖和unraid共用ups,例如

NAS教程:群晖+UPS+UNRAID+NUT不断电系统,单UPS支持双NAS小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外50金币奖励。追加修改(2020-01-2519:39:44):更新、更正一下:1.输入(UNRAID-UPSslaveusername,password)的地方,是为了其他副机可以通过本副机通知关闭电源用的2.Runtimeleft-剩余BLZERO| 110 评论81 收藏1k查看详情


不知道是威联通折腾的人少还是什么,qnap在这方面的文章就比较少了单UPS支持多nas设备 ,然而前段时间453bmini降价,就入了一个,现在问题来了,我需要在这两个品牌之间实现断电通知单UPS支持多nas设备

事实上我之前按照前面的方式已经试过了,并且能够正常使用,然而用着总是有些不爽。。。有时候重启个路由nas都能关机。。。。

所以就花了点时间折腾了下NUT单UPS支持多nas设备

思路很明确,就是修改某个nas的NUT配置,这里我的威联通的白的,不想对系统做过多修改,所以就修改黑裙了

首先在qnap接入ups,在管理界面找到控制台-外接设备-ups

威联通ups设置威联通ups设置

启用网络不间断电源服务器,这一步是让qnap这边成为nut的服务器

下面将群晖或其他需要加入的设备添加进下面的地址列表中,这儿实际上也是一个访问控制,如果对应的ip没有加入,另一边的client就连不上

然后应用即可,qnap这边算是完成了单UPS支持多nas设备

然后进入群晖的管理界面

控制面板-硬件和电源-不断电系统

选择启用ups支持,类型选择synology不断电系统服务器

等待时间自己选择

ip地址输入刚才的qnap的ip

群晖ups设置群晖ups设置

应用即可,这里会提示无法创建联机,先不管单UPS支持多nas设备

ssh进入群晖,

cd /usr/syno/etc/ups/

/usr/syno/etc/ups/ 这个路径是群晖的nut配置路径

可以看到有ups.conf、upsd.conf、upsd.users、upsmon.conf 等文件

群晖nut配置文件群晖nut配置文件

按照nut官网解释

具体各文件大致作用如下(我的理解,不完全准确,看了半天,头都看晕了)单UPS支持多nas设备

ups.conf 配置驱动

upsd.conf 配置ups服务

upsd.users 配置ups服务的用户

upsmon.conf 配置ups的监控程序

这里我们将群晖作为客户端,只需要修改upsmon.conf即可单UPS支持多nas设备

使用vim或其他编辑器打开upsmon.conf

upsmonupsmon

找到MONITOR 这一行,大概在87行左右的位置

刚才我们在群晖管理页面上操作的结果就是向这个配置文件中添加了这一行,这句话是添加了一个监听的ups服务器

格式:MONITOR ups@{UPS 服务器地址} {可用 UPS 数量} {用户名} {密码} {设备模式}

这里第一个坑出现了,大部分ups的服务器以ups开头(包括群晖),然而qnap不是,他是以qnapups开头。。。。单UPS支持多nas设备

所以这一行改为

MONITOR qnapups@192.168.99.10 1 admin 123456 slave

解释下,qnapups@为固定开头,后面的ip的服务秀地址,1是数量,admin是qnap的用户名,123456是密码 slave是指作client模式

实际上这儿能看出来,群晖默认的是

MONITOR ups@192.168.99.20 1 monuser secret slave

用户名为monuser,密码为secret

如果以群晖为服务器,其他客户端就修改为上面这个就行单UPS支持多nas设备

然后保存退出

执行upsc qnapups@192.168.99.10

这个是检测nut服务器网络是否正常,网络正常的话能看到一串输出

正常输出正常输出

这实际上就是qnap作为服务器提供的ups信息

如果出现错误单UPS支持多nas设备

错误输出错误输出

就需要检查下网络,或这qnap管理界面的配置是否将群晖加入通知ip列表中

然后就可以了吗?

。。。。。并不行单UPS支持多nas设备

实际上修改配置之后是需要重启生效的,然而你在群晖的管理界面开关一次试下,你会发现仍然不行,查看upsmon.conf 发现MONITOR配置仍然是

MONITOR ups@192.168.99.10 1 monuser secret slave

这就很蛋疼了,不重启不能应用,重启后恢复原样。。。。。感觉走进了死胡同单UPS支持多nas设备


本以为行不通时,追踪发现群晖重启upsmon服务是通过

/bin/sh /usr/syno/etc/rc.sysv/ups-net.sh stop/start 来执行的

直接找到该服务,发现位于

/usr/syno/etc.defaults/rc.sysv/ups-net.sh

vim打开ups-net.sh,

单UPS支持多nas设备

很明显是个服务脚本

这就比较好办了单UPS支持多nas设备 ,稍微看下

服务信息服务信息

如图,大概在48与60行处,能看到salve开启的动作,通过sed向配置里写入MONITOR信息

那应该就是这儿了,修改为

qnapups@${UpsmonServer} 1 admin 123456 slave

其余不变,保存退出

现在我们到群晖界面重启ups支持,查看下upsmon.conf

upsmon.confupsmon.conf

发现已经自己变成了qnap的地址了,这下就不需要每次进来都配置了,并且能够生效

然而界面上还是

界面界面

还是没成功吗?

在群晖的服务器查看下日志

sudo cat /var/log/messages

日志信息日志信息

能够发现已经连接上了单UPS支持多nas设备

再ssh进入qnap,输入命令

upsc -c qnapups@127.0.0.1

单UPS支持多nas设备

得到一个ip,这个ip就是群晖的ip,说明已经连接上了

从日志来看的话应该是已经成功了,让我们试下呢

断开ups电源,qnao、群晖收到提醒

qnap收到提醒qnap收到提醒

群晖收到提醒群晖收到提醒

1分钟(我设定的60秒)后,群晖进入安全模式

大功告成单UPS支持多nas设备

了吗?

并没有完全成功,我们可以看到,群晖默认的是进入安全模式,也就是界面上说的卸载所有硬盘,但系统还是在运行,知道ups没电就突然断电关机。。。。单UPS支持多nas设备

这就不符合我们的初衷,虽然说硬盘卸载了,但突然断电关机还是挺吓人的,那有什么办法呢

百度一下已经有人给出了答案

我这边大概写下流程

重启后还是去查看日志

sudo cat /var/log/messages

搜索ups,能看到这些

单UPS支持多nas设备

说明是synoups这个程序输出的信息,找到这个程序

位置/usr/syno/bin/synoups

按字符串Server is going to Safe Mode. 搜索

单UPS支持多nas设备

大概在141行左右

可以看到在进入到安全模式

单UPS支持多nas设备

我们要做的就是替换为关机命令即可

注释掉那几句,添加poweroff,保存

再次测试,成功关机。。。。。撒花单UPS支持多nas设备

重启后再次查看日志

单UPS支持多nas设备

自动连接nut服务器成功,所以成功搞定,一劳永逸单UPS支持多nas设备

至于界面上为什么还是显示未连接就不太清楚了,可能通过额外的心跳查询的?暂时没空弄了,反正目的达到了,以后有空在折腾吧

以上在我的黑群晖6.1.7,qnap4.4.3上测试通过,白群晖应该也行

至于另外的系统的nas就更简单了,通过仓库或编译安装nut,然后配置upsmon.conf的服务器为qnap,添加被通知的服务器的ip,重启服务,搞定,想要接几台就接几台。


展开 收起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1792元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

2049元起

ZSpace 极空间 Z4 4盘位 NAS存储 黑色 (J4125 8GB)

ZSpace 极空间 Z4 4盘位 NAS存储 黑色 (J4125 8GB)

2584元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

QNAP 威联通 TS-453Dmini 4盘位NAS(J4125、8GB)

QNAP 威联通 TS-453Dmini 4盘位NAS(J4125、8GB)

暂无报价

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

3599元起

极空间私有云Z4Pro 性能版 8核16G内存 四盘位Nas网络存储服务器家庭个人云【配4T希捷酷狼硬盘】珍珠白

极空间私有云Z4Pro 性能版 8核16G内存 四盘位Nas网络存储服务器家庭个人云【配4T希捷酷狼硬盘】珍珠白

4299元起

TERRAMASTER 铁威马 F4-424 四盘位 NAS存储(Intel Celeron N95、8GB)黑色

TERRAMASTER 铁威马 F4-424 四盘位 NAS存储(Intel Celeron N95、8GB)黑色

2499元起

HUAWEI 华为 新品华为家庭存储nas家用网络存储主机扩容储存备份文件同步共享

HUAWEI 华为 新品华为家庭存储nas家用网络存储主机扩容储存备份文件同步共享

1999元起

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

1899元起

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

799元起

HIKVISION 海康威视 Mage20 2盘位NAS (4GB)

HIKVISION 海康威视 Mage20 2盘位NAS (4GB)

567元起

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

1846元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1849元起

Synology 群晖 DS918+ 四盘位NAS(J3455、4GB)

Synology 群晖 DS918+ 四盘位NAS(J3455、4GB)

暂无报价
67评论

  • 精彩
  • 最新
  • 关键的不是还要路由器或者交换机接ups吗?你停电了没网怎么连接ip呢? [喜极而泣]

    校验提示文案

    提交
    通过网络通知肯定要啊 [汗]

    校验提示文案

    提交
    像我这种路由器离nas很远的这种情况下还是有局限性的,而且我的bk650在unraid上经常失联 [哭泣]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 还有PING网关这个是不是网关路由不能插UPS

    校验提示文案

    提交
    ping网关这个网关不能插ups的。。。脚本那推荐的那个文章里有。。稍微改了下,有需要的话我后面上传吧 [汗]

    校验提示文案

    提交
    我是软路由直接接交换机再接别的设备,那我直接把交换机插别的上了这样路由有点也PING不通了,还有需要你的脚本大佬

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 群晖就这点东西不愿意做好,不知道在想什么!ups对应的是休眠,可真是思路清奇。ups里多做几个框框给用户自己填不行么?问问,ssh的那个工具叫什么软件?我一直用的putty。

    校验提示文案

    提交
    MobaXterm

    校验提示文案

    提交
    其实休眠卸载硬盘更好,因为关机的话有可能结束进程时间长或者卡住导致在关机过程中ups电池已经耗尽却还没完成关机,而且关机过程也会大量访问磁盘,这时突然断电磁盘伤害更大

    校验提示文案

    提交
    收起所有回复
  • 你好,问下我是在pve虚拟机上装的nut,我应该修改upsmon.conf 哪个参数来实现多少分钟后自动关机。我看了英文说明比较蒙圈,只能按默认参数设置ups低电量自动关机。

    校验提示文案

    提交
    我记得ups关机指令用的/sbin/shutdown -h +0 ,想设置延时就改后面的0就行了。。。单位貌似分钟

    校验提示文案

    提交
    谢谢大佬,追问一下。这样改触发条件低电量的时候延时关机还是直接延时关机?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 两台群晖之间很方便

    校验提示文案

    提交
    同品牌的都很简单的 [观察]

    校验提示文案

    提交
    收起所有回复
  • sed写入信息可以讲一下么 [皱眉]

    校验提示文案

    提交
    啥意思?sed就是linux编辑文本文件的命令。。。群晖系统获取web面板里面的设置信息通过sed向脚本里面插入,我们做的就是替换调他插入的默认配置。。。。

    校验提示文案

    提交
    收起所有回复
  • 最近遇到个问题,不知道LZ能否帮忙看下,群晖A通过USB连接UPS并设置为网络UPS服务器,群晖B去连接它,刚开始是正常的,但是只要A重启,B就连不上A,后来发现只要A重启uspd.conf文件内容就变成空的,此时如果把A的UPS选项禁用重新打开一下就好了,不知是什么问题

    校验提示文案

    提交
    没遇到过。。。感觉像是bug吧。。。还是有服务会重置uspd.conf?有交换试下么?吧做主,A做从

    校验提示文案

    提交
    不知道啥问题,写了个脚本,主的那台每次重启自动重启ups-usb,暂时没啥问题

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 参考你的帖子,执行到“群晖监听到UPS断电”这里,监听成功了。
    后面黑群就连不上了,怎么破?

    校验提示文案

    提交
    额。。。什么叫连不上了 [观察]

    校验提示文案

    提交
    解决了。
    两台NAS都停电关机后,下次开机先开 黑群,再开QNAP就能访问到。

    校验提示文案

    提交
    收起所有回复
  • [大囧]
    全部照教程来
    然后最后一步读log的时候内容是
    2021-01-10T10:11:23+08:00 Synology upsmon[28086]: Startup successful
    2021-01-10T10:11:23+08:00 Synology upsmon[28088]: Login on UPS [qnapups@192.168.1.51] failed - got [ERR ACCESS-DENIED]
    2021-01-10T10:11:28+08:00 Synology upsmon[28088]: UPS [qnapups@192.168.1.51] connected
    然后威联通里输入upsc -c qnapups@127.0.0.1也没有任何提示
    接下来该如何操作?

    校验提示文案

    提交
    我和你类似,我不知道什么读log文件,前面都好了,但是在威联通里输入upsc -c qnapups@127.0.0.1也没有任何提示,你log是怎么找的,我没找到

    校验提示文案

    提交
    我看到了access denied...你qnap那边有没有把群晖的ip加入通知啊?没加入的话链接不上的

    校验提示文案

    提交
    还有9条回复
    收起所有回复
  • QNAP的IP通知里,是否只需要添加群晖的IP地址?还需要把QNAP自己的IP地址添加进去吗

    校验提示文案

    提交
    添加被通知设备的ip,按我的应该是群晖的ip

    校验提示文案

    提交
    那么设置就是和你完全一样的了,为何会多一行报错,怪了

    校验提示文案

    提交
    收起所有回复
  • 疑惑的问题来了:/usr/syno/etc/ups/ 这个目录下面并没有4个文件,只有synoups.conf。。。

    校验提示文案

    提交
    是不是版本问题,这个是6.1的,6.3看另外一篇文章 [观察]

    校验提示文案

    提交
    我是7.0,哈哈,的确没这些文件。。。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 我按照大神操作的,观察服务那里都能取到威联通ups状态,但是在messgae里服务启动不成功。报service_initjob_action.c:27 initjob start failed. 还有一行是ups_info_set.c:351 failed to start ups-net。大神这种问题怎么处理?

    校验提示文案

    提交
    没遇到过,群晖版本问题?你是哪个版本?

    校验提示文案

    提交
    收起所有回复
  • 大神,群晖上那个“无法与网络不断电系统服务器创建联机”的提示消不掉?我用命令upsc qnapups@威联通IP可以获取信息,但是群晖上的那句提示语一直弄不好。

    校验提示文案

    提交
    搞不掉。。。这个是群晖通过另外方法识别到的 [皱眉]

    校验提示文案

    提交
    收起所有回复
  • 按照大神的方法,能链接上威联通的UPS,断电也收到通知,但是不会自动关机,黑裙6.2.3.
    原语句是:
    $SYNOBOOTBIN --set-safe-shutdown
    # we should hook synopoweroff not only reboot
    /usr/syno/sbin/synopoweroff -fr
    按照大神方法,修改成:
    $SYNOBOOTBIN --set-safe-shutdown
    # we should hook synopoweroff not only reboot
    # /usr/syno/sbin/synopoweroff -fr
    poweroff
    断电后进入安全模式,恢复供电,不会重启,好郁闷啊

    校验提示文案

    提交
    不应该啊。。。从6.x到7.x这个命令都可用,你确认下是不是命令写错了?或者命令位置不对?可以拷贝命令手动执行看会不会关机

    校验提示文案

    提交
    折腾了一个晚上,还是不成功,最后还是先用命令助手成功了,但是那个延迟参数不知道怎么设置,有点复杂

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 刚好用得到 多谢楼主 [小眼睛]

    校验提示文案

    提交
  • 刚好解决我的问题,赞

    校验提示文案

    提交
  • 正需要!!!

    校验提示文案

    提交
  • 很及时啊 非常感谢

    校验提示文案

    提交
  • 来电能自动开机吗?

    校验提示文案

    提交
  • 脚本在哪下载啊

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
465
扫一下,分享更方便,购买更轻松