1. 为什么你需要NUT:一台UPS守护多台设备的智慧方案
如果你和我一样,家里或者工作室里不止一台NAS设备,比如一台UnRaid负责媒体库和虚拟机,另一台可能跑着TrueNAS或者黑群晖处理重要数据备份,那你肯定也纠结过UPS的问题。给每台设备都配一台不同断电源?那成本可就太高了,而且管理起来也麻烦。更常见的情况是,我们只有一台性能不错的UPS,它通过USB线连接到了其中一台主机上。那么问题来了:当市电中断,只有那台直接连接UPS的主机能收到关机指令,其他设备怎么办?它们会像突然被拔掉电源一样“啪”地一声断电,这对硬盘和数据来说简直是灾难。
这就是Network UPS Tools,也就是我们常说的NUT,大显身手的时候了。简单来说,NUT是一套开源的工具集,它能让一台连接了UPS的电脑(我们称之为主服务器)通过网络,把UPS的状态信息(比如是否在市电、电池电量、剩余续航时间)广播给网络里的其他设备(从客户端)。当市电断开,主服务器开始倒计时关机时,所有从客户端也会同步收到指令,按照预设的顺序安全关闭,实现“一呼百应”的协同关机。这样一来,你只需要一台UPS,就能保护整个小型服务器集群里的所有设备。
我当初搭建这套系统,就是因为一次意外的停电。当时我的UnRaid主机安然关机,但旁边那台跑着数据库的旧电脑直接断电,导致文件系统损坏,花了大半天时间才修复。自那以后,我就下决心要搞定NUT。实测下来,这套方案不仅稳定可靠,还能让你在UnRaid的Web界面上直接看到UPS的详细状态图表,比系统自带的简单UPS设置功能强大得多。接下来,我就手把手带你完成在UnRaid上配置NUT,实现多设备共享UPS的全过程。
2. 前期准备:理清思路与检查清单
在开始点击安装按钮之前,我们得先把家里的“网络地形图”画清楚,这能避免后面配置时一头雾水。整个NUT网络的架构其实很清晰,主要分为三种角色:主服务器、从客户端以及UPS本身。
首先,你需要确定哪台设备作为主服务器。最直接的选择就是那台通过USB线直接连接UPS的UnRaid主机。这台机器将负责与UPS直接通信,并运行NUT的upsd(服务器守护进程)和upsdrv(驱动)服务。其次,网络里其他需要被保护的设备,比如另一台UnRaid、一台Windows电脑、一台Linux服务器或者一台群晖NAS,它们都将作为从客户端。这些设备会运行upsmon(监控客户端)服务,通过网络从主服务器获取UPS状态。
这里有一个非常重要的概念叫监听模式。在NUT的配置里,主服务器需要监听一个网络端口(默认是3493),以便从客户端能够连接进来。很多新手配置失败,问题都出在防火墙或者IP地址设置上。所以,请拿出笔或者打开记事本,记下以下信息:
最后,检查你的UPS是否在NUT的兼容列表里。绝大多数通过USB连接的常见品牌UPS,如APC、山特、CyberPower等,都能被很好地支持。你可以在Network UPS Tools的官方网站找到详细的硬件兼容性列表。通常,usbhid-ups这个通用驱动就能搞定大部分现代USB UPS。准备工作做足,后面的操作就会像搭积木一样顺畅。
3. 在主UnRaid上安装与配置NUT插件
万事俱备,现在我们开始在直接连接UPS的那台UnRaid主机上操作。首先,打开你的UnRaid Web界面,进入 “应用” 页面。在搜索框里输入 “Network UPS Tools” 或者简写 “NUT”。你应该会看到一个由 Rysz 或 desertwitch 维护的插件,名字就是 “Network UPS Tools (NUT) for UNRAID”。没错,就是它,点击安装。这个插件是原版NUT插件的一个现代化重构版本,更新更频繁,我实测下来稳定性也更好。
安装完成后,别急着去插件设置页面。我们需要先关闭UnRaid系统自带的UPS服务,避免两者冲突。进入 “设置” -> “UPS设置”,将 “启用UPS服务” 这个选项设置为 “否”,然后点击应用。这样,系统自带的apcupsd服务就会停止,把UPS的控制权完全交给NUT。
接下来,进入 “设置” -> “NUT设置”,这里就是我们的主战场了。界面看起来选项不少,但别担心,我们一步步来。
第一步:基础服务开关与模式选择
- 启动Network UPS Tools服务:毫无疑问,选择 “是”。
- NUT模式:既然这台机器直接连着UPS,那它就是老大,所以选择 “网络服务器(主模式)”。这个模式下,本机既运行驱动与UPS通信,也作为服务器广播状态。
第二步:驱动与UPS连接配置
- 驱动:这是关键。对于绝大多数通过USB连接的UPS,下拉选择 “usbhid-ups” 即可。这是最通用的USB HID驱动。如果你的UPS比较老,用的是串口(COM口),可能需要选择blazer_ser或megatec等驱动,具体请参考NUT官网的兼容性列表。
- 端口:如果使用USB,这里通常留空,系统会自动检测。如果是串口,则需要填写类似/dev/ttyS0(对应COM1)这样的设备路径。
- UPS名称:填写你之前想好的名字,比如 my_ups。记住它,从客户端要靠这个名字来认亲。
第三步:网络服务器设置
- 监听地址:为了让网络里的其他设备能连上来,这里不能只监听本地。建议设置为 0.0.0.0,表示监听所有网络接口。如果你担心安全问题,可以设置为UnRaid主机的具体IP,如 192.168.1.100。
- 监听端口:保持默认的 3493 即可。
- 从模式用户名/密码:这里设置从客户端连接时使用的凭证。例如,用户名设为 slaveuser,密码设一个强密码。务必记下这个密码,从客户端配置时需要一模一样地填进去。
第四步:关机与高级选项
- 电池运行时间后关闭:这是最重要的安全参数之一。意思是UPS切换到电池供电后,等待多少分钟再触发关机流程。这个时间必须小于你的UPS在满载下的实际续航时间。比如你的UPS在连接所有设备后能坚持15分钟,那么这里可以设置为10分钟,给关机流程留出充足的缓冲时间。千万不要设得比实际续航长,否则电用光了还没关完机就尴尬了。
- 关闭UPS:建议设置为 “是”。这样当所有设备安全关机后,NUT会尝试发送命令让UPS也关闭输出,彻底省电。不过这个功能需要UPS本身支持,大部分型号都支持。
- 其他选项:如“允许从本地访问”、“允许从远程访问”等,保持默认开启即可。
全部设置完成后,滚动到页面顶部,点击那个绿色的 “应用” 按钮。稍等几秒钟,如果配置正确,你会在页面顶部看到UPS的状态信息,比如“在线”、“电池电量:100%”等。同时,在页面下方的“NUT详情”区域,会显示从UPS读取到的各种详细数据,如输入电压、负载功率等。恭喜你,主服务器已经配置成功了!
4. 配置其他UnRaid设备作为从客户端
现在,轮到网络中的其他UnRaid设备了。假设我们有另一台UnRaid主机(IP为192.168.1.101),它也需要在停电时安全关机。在这台机器上,我们同样需要安装 “Network UPS Tools (NUT) for UNRAID” 插件,步骤和刚才一模一样。
安装完成后,同样先到系统自带的 “设置” -> “UPS设置” 里,把 “启用UPS服务” 关掉(设为“否”)。然后进入 “设置” -> “NUT设置”。
这里的配置就和主服务器有区别了,因为这台机器不直接连接UPS。
- 启动Network UPS Tools服务:选择 “是”。
- NUT模式:这里要选择 “网络客户端(从模式)”。这个模式下,本机不会尝试驱动UPS,而是作为一个监控客户端运行。
- NUT主服务器IP:填写主服务器的IP地址,也就是我们第一台UnRaid的地址 192.168.1.100。
- UPS名称:必须和主服务器上设置的完全一致,比如 my_ups。
- 从模式用户名/密码:填写在主服务器上设置的那组凭证,例如用户名 slaveuser 和对应的密码。
- 电池运行时间后关闭:这个时间建议设置得比主服务器稍短一点。例如,主服务器设为10分钟关机,这里可以设为9分30秒或9分钟。目的是让从客户端比主服务器稍早一点开始关机,确保在主服务器断电前,所有从属设备都已经完成关机流程,避免出现主服务器先关了、从客户端收不到指令的尴尬情况。
- 监听端口、驱动等选项,在从模式下可以留空或保持默认,因为本机不直接管理UPS。
配置完成后,点击“应用”。如果一切顺利,你同样能在页面顶部看到从主服务器同步过来的UPS状态,比如“在线(主服务器:192.168.1.100)”。这就表示连接成功了!这台从属UnRaid现在已经加入了NUT网络,能够接收主服务器发出的关机指令。
5. 扩展应用:让Windows、Linux与群晖也加入守护网络
你的家庭服务器生态里可能不只有UnRaid,或许还有一台常年开着的Windows台式机做下载机,或者一台跑着Ubuntu的服务器,甚至是一台群晖NAS。别担心,NUT的客户端覆盖非常广泛,它们都能被纳入这个统一的保护伞下。
在Ubuntu/Debian Linux上配置NUT客户端:
通过SSH连接到你的Linux机器,安装NUT客户端软件包:
sudo apt update
sudo apt install nut-client
安装完成后,需要编辑两个配置文件。首先是 /etc/nut/nut.conf,将运行模式改为网络客户端:
MODE=netclient
然后是关键的 /etc/nut/upsmon.conf 文件。找到 MONITOR 配置行(如果没有就添加一行),格式如下:
MONITOR my_ups@192.168.1.100 1 slaveuser your_password slave
请将 my_ups、192.168.1.100、slaveuser 和 your_password 替换成你主服务器上的实际设置。最后,启动并启用服务:
sudo systemctl start nut-client
sudo systemctl enable nut-client
在Windows上配置NUT客户端:
Windows用户可以选择官方命令行版本或图形化工具。对于官方版本,你需要从Network UPS Tools官网下载Windows二进制包。安装后,配置文件位于 C:\\Program Files (x86)\\NUT\\etc\\,修改 nut.conf 和 upsmon.conf 的方式与Linux类似。更推荐新手使用 WinNUT 这个图形化客户端,它配置起来更直观。安装后,在设置中填入主服务器IP、UPS名称、用户名和密码即可,软件会自动在后台以服务运行。
在群晖NAS上配置:
群晖DSM系统内置了UPS支持,配置起来最简单。进入 “控制面板” -> “硬件和电源” -> “UPS”。
点击应用后,群晖会显示“已连接”,并可以读取到UPS状态信息。
把所有设备都配置好后,你就构建了一个以UnRaid NUT服务器为核心的多设备UPS守护网络。无论哪台设备,都能在电力中断时有序地、安全地关闭。
6. 实战测试与排错指南
配置完了不测试,就像买了保险从不看条款一样,真到出事时心里没底。我们来进行两次关键的测试:一次安全的手动模拟测试,一次真实的断电演练(可选,但建议)。
安全模拟测试(强烈推荐):
这个测试不会真的拔掉电源线,而是通过命令让NUT主服务器模拟“电力故障”状态,触发整个关机链条。在你的主服务器UnRaid上,打开“终端”(在Web界面右上角)。
输入以下命令:
upsmon -c fsd
这个命令会立即向所有监控此UPS的客户端(包括主服务器自己)发送一个“强制关机”信号。你会看到,所有配置好的从客户端(另一台UnRaid、Windows、Linux等)会立刻开始执行关机流程,紧接着主服务器自身也会关机。执行此命令前,请确保所有设备上没有未保存的重要工作。如果所有设备都按预期关机,那么恭喜你,配置成功了!这是验证NUT网络是否通畅、配置是否正确的最直接方法。
常见问题与排错:
从客户端连接失败,状态显示“连接错误”或“无法访问”。
- 检查防火墙:这是最常见的原因。确保主服务器UnRaid的3493端口在防火墙中是开放的。如果你在路由器或主服务器上设置了防火墙规则,需要允许TCP端口3493的入站连接。
- 检查IP和凭证:再三确认从客户端配置中填写的主服务器IP、UPS名称、用户名和密码,必须与主服务器设置完全一致,包括大小写。
- 查看日志:在UnRaid的NUT设置页面底部,或通过SSH连接到UnRaid查看 /var/log/nut/ 目录下的日志文件(如 upsd.log, upsmon.log),里面通常会有详细的错误信息。
主服务器无法识别UPS,驱动报错。
- 检查USB连接:尝试更换USB接口,或者拔插一下USB线。在UnRaid的“工具”->“系统日志”中,查看是否有关于USB设备识别的信息。
- 确认驱动:访问NUT官网的硬件兼容性列表,确认你的UPS型号推荐使用的驱动。usbhid-ups是通用驱动,但某些老型号可能需要特定的驱动如 blazer_usb。
- 权限问题:极少数情况下,可能需要确保NUT服务用户有访问USB设备的权限。在UnRaid的NUT插件中,通常已经处理好。
关机顺序混乱或部分设备未关机。
- 调整关机延时:确保从客户端的“电池运行时间后关闭”设置比主服务器的时间短。例如,主服务器设10分钟,从客户端设9分钟,给从客户端留出足够的关机时间。
- 检查网络延迟:在复杂的网络环境中,轻微的延迟可能导致指令不同步。确保所有设备在同一个局域网段,网络通畅。
UPS关机后无法自动开机。
这是一个常见的误解。NUT主要负责安全关机,而不是自动开机。设备能否在电力恢复后自动启动,取决于每台设备主板BIOS/UEFI中的设置。你需要进入每台设备的BIOS,找到“电源管理”或类似选项,开启 “AC Power Loss Restart” 或 “After Power Failure” 并设置为 “Power On”。这样,当市电恢复、UPS重新输出电力时,设备就会自动启动了。
完成测试和排错,你的多设备UPS守护网络就真正达到了生产可用的状态。你可以安心了,下次再遇到停电或者电压不稳,你的整个数字家庭核心设备都会像训练有素的士兵一样,有条不紊地执行保护流程,最大程度地保障数据安全。
