Skip to content

给 HomeLab 续命:2025 年如何为你的 NAS 和软路由配置 UPS 断电保护

毛佳国

在折腾 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(客户端/服务端) 设计的:

  1. NUT Server (服务端/主节点):把 UPS 的 USB 线插在那台永远保持在线的 24 小时开机的核心机器上(比如你的 PVE 宿主机或者 TrueNAS)。在此安装 NUT 的 Server 端,核心机器负责读取 UPS 电量,并向全内网广播:“当前在使用电池组!”
  2. 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 吧。

上一篇
旁路由的终极奥义:用 Macvlan 和 OpenWrt 打造不拖垮主网的超级网关
下一篇
不仅只会 git commit:2025 年你需要掌握的 Git 高阶急救指南