在折腾 HomeLab 的圈子里,有一句用无数硬盘尸体和惨痛教训换来的至理名言:“不上 UPS 的 NAS,就是在裸奔。”
很多人花了上万元组装了性能顶级的软路由、NAS 和各类服务器,用了最坚固的企业级硬盘,配了最豪华的 RAID 阵列,觉得自己万无一失了。 然后在一个雷雨交加的夏夜,小区突然停电两秒钟再来电,随着“咔嗒”几声金属撞击的脆响,几十万张照片和所有的心血瞬间灰飞烟灭。
因为机械硬盘在高速读写时发生突然断电,磁头会因为失去悬浮力而瞬间砸在盘片上,造成物理划伤(著名的“磁头拍盘”)。而在 2025 年,购买一台能够守护你全家机器的 UPS(不间断电源),其实只需要一两顿饭钱。
什么是 UPS?为什么要买带通讯线的?
UPS 内部就是一块大铅酸电池或锂电池,加上逆变器。市电正常时它旁路供电并自己充电;停电瞬间,它在几毫秒内将电池里的直流电逆变成 220V 交流电,顶上缺口。
但对于 HomeLab 来说,纯粹只给几分钟电的 UPS 毫无意义(比如你正好出门上班了,电池 15 分钟后耗尽,依然是突然断电)。 你必须买一根带有 USB 通讯线的 UPS(比如最经典的 APC 或山特部分型号)。
这根线插到你的主服务器(NAS 或 PVE/TrueNAS)上,当停电发生时,UPS 会给服务器发一条微信:“兄弟,我不行了,电池还剩 30%,你赶紧收拾东西准备跑路。” 然后服务器会立即执行安全的关机脚本(把内存里的数据写回硬盘、卸载阵列、平稳关机)。
局域网联动神兵:NUT (Network UPS Tools)
如果你家里只有一台机器,直接把 USB 插上去,大部分现代 NAS(群晖、威联通、TrueNAS)在电源设置里打个勾就能自动识别。
但如果你有:一台 PVE 虚拟化主机、一台独立的群晖、还有一个跑着 OpenWrt 的软路由呢?UPS 的 USB 只有一根,插给谁?
这就轮到 NUT (Network UPS Tools) 登场了。在 2025 年,这套开源方案依然是家用多节点电源管理的究极答案。
它的架构是基于经典的 C/S(客户端/服务端) 设计的:
- NUT Server (服务端/主节点):把 UPS 的 USB 线插在那台永远保持在线的 24 小时开机的核心机器上(比如你的 PVE 宿主机或者 TrueNAS)。在此安装 NUT 的 Server 端,核心机器负责读取 UPS 电量,并向全内网广播:“当前在使用电池组!”
- NUT Client (客户端/从节点):在同局域网的其他所有机器(软路由、群晖、树莓派)上,配置 NUT Client 并指向主节点 IP。当主节点喊出“快没电了,大家准备关机!”时,其他小弟节点就会监听这道圣旨,开始默默地干掉各自的进程,自行关机。最后主节点自己也优雅地闭目养神。
配置思路极简实战
以 Debian 宿主机作为主节点为例,其实也就是装个大管家:
apt install nut
然后配置它的门卫文件 /etc/nut/ups.conf 告诉系统是用什么牌子的驱动:
[ups]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS"
最后在守护进程里(upsd.users)创建一个通信密码,这样就算完成了。
剩下的就是去你的各个从节点(无论是 GUI 界面的群晖,还是黑乎乎的其它 Linux 终端),填入主节点的 IP 地址和密码,勾选“联动关机”即可。
这套体系在停电时极其具有赛博朋克的悲壮美感 —— 当整栋楼陷入黑暗,只有你家的那个角落依然闪烁着微弱的网络指示灯。而在接下来的几十分钟内,你的各个微型机柜设备就像一支训练有素的军队,在收到总部的最后撤退命令后,按部就班、悄悄地、安全地熄灭所有的呼吸灯。
别再在裸奔中度日了,赶快去买一台带 USB 通讯的 UPS 吧。