NAS 系统
NAS 接 UPS 断电自动保护实战:USB 通讯、NUT 网络供电监控与停电安全关机
2026年10月19日
NAS 接 UPS 实现停电自动安全关机与供电监控
NAS 接 UPS 断电自动保护实战:USB 通讯、NUT 网络供电监控与停电安全关机
摘要:NAS 最怕突然断电——RAID 阵列降级、文件系统元数据损坏、未写完的写入丢失,严重时整套存储直接掉盘。本文用一台几百元的 UPS 配 USB 通讯,配合群晖/飞牛自带功能或开源 NUT,实现“市电中断 → 撑到安全阈值 → 自动有序关机”,并延伸到多设备联动断电,把意外停电对数据的伤害降到最低。
为什么 NAS 必须配 UPS
机械硬盘在读写时磁头悬浮在盘片上方,突然掉电会让磁头紧急归位,长期如此增加坏道概率;更危险的是文件系统层面:btrfs/ext4 的日志还没落盘,阵列便处于“脏”状态,来电后需长时间 fsck 或阵列重建,期间再断电就可能丢数据。企业级经验是“Storage 必须接 UPS”,家庭和小企业 NAS 同样适用——一台 500–1000 元的后备式 UPS 足以让 2–4 盘位 NAS 撑 10–30 分钟,足够触发自动关机。
UPS 选型与三种通讯方式
- 后备式(Off-line):性价比高,断电瞬间切换,适合桌面 NAS。注意标称“多少 W”是功率,要看电池容量(VA×0.6 左右才是实际可用瓦时)。
- 通讯接口决定自动化能力:
- USB HID:绝大多数 APC、山特、雷迪司支持,插上 Linux 即识别为
/dev/hidraw*,无需驱动即可读电量。 - 网口 SNMP:机房级 UPS(如 APC Smart-UPS),通过网络读状态,适合多设备集中管理。
- 串口/干接点:老设备,需配线缆,今已少见。
- USB HID:绝大多数 APC、山特、雷迪司支持,插上 Linux 即识别为
本文以最普遍的 USB HID 为主线。
方案 A:群晖 / 飞牛自带 UPS 支持
群晖 DSM 路径:控制面板 → 硬件和电源 → 不断电系统。把 UPS 的 USB 线插到 NAS,系统会自动识别型号。关键设置:
- 勾选“启用 UPS 支持”;
- “安全模式”阈值:建议设为“UPS 电量低于 15% 或断电 5 分钟”再关机,避免短暂停电误关机;
- 勾选“网络 UPS”,可让同网段其他设备把这台当 UPS 服务器。
飞牛 fnOS 在 系统设置 → 电源 → UPS 同样支持 USB 自动识别与断电关机。对单台 NAS,这是最省事的选择,10 分钟搞定。
方案 B:用 NUT 在任意 Linux NAS 接管 UPS
如果你的 NAS 是 Debian/Ubuntu 或飞牛的底层 Linux,想更可控,用开源 NUT(Network UPS Tools)。
安装:
sudo apt install nut nut-client nut-server
编辑 /etc/nut/ups.conf 定义设备:
[myups]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS BX"
编辑 /etc/nut/upsd.conf 允许监听:
LISTEN 0.0.0.0 3493
编辑 /etc/nut/upsd.users 建用户:
[monuser]
password = yourpass
upsmon = slave
[admin]
password = adminpass
actions = SET
instcmds = ALL
编辑 /etc/nut/upsmon.conf:
MONITOR myups@localhost 1 monuser yourpass slave
SHUTDOWNCMD "/sbin/shutdown -h +0"
启动并测试:
sudo systemctl enable --now nut-server nut-monitor
upsc myups@localhost
能看到 battery.charge、input.voltage、ups.status: OL(在线)即成功。
停电安全关机:阈值、延时与顺序
NUT 默认在 ups.status 变 OB(On Battery,离网)时并不立刻关机,需在 upsmon.conf 配 NOTIFYCMD 或用 upssched 做延时。典型策略:
- 断电 2 分钟内 市电恢复 → 不动作;
- 超过 5 分钟 仍离网,或电量 < 20% → 执行
SHUTDOWNCMD; - 关机前先停 Docker 服务、卸载存储池,再关系统,避免写入中断。
这样短暂停电(如跳闸)不会误关,真正长时间停电才安全落盘。
网络 UPS:多设备联动关机
家里若还有软路由、迷你主机、PoE 交换机,可让它们都当 NUT 客户端,指向 NAS 这台 NUT 服务端(MONITOR myups@nas-ip 1 ... master)。市电一断,所有设备按同一阈值有序关机;来电后 BIOS 设“断电恢复自动开机”即可批量复活。这是小企业“单 UPS 保多设备”的低成本方案。
常见坑
- 误关机:阈值设太低或没延时,跳闸一下就关;一定加
upssched延时。 - 电池老化:铅酸电池 2–3 年衰减,用
upsc看battery.runtime,低于额定一半就换。 - 假在线:UPS 插了 USB 却被识别成普通 HID,检查
lsusb与driver是否匹配。 - Hypervisor:若在 PVE/ESXi 上跑 NAS 虚拟机,要让宿主机先优雅关虚拟机再关机,可用 NUT 的
EXECUTE脚本调virsh shutdown。
小结
给 NAS 配 UPS 不是“锦上添花”而是“底线保护”。单台设备用群晖/飞牛自带功能 10 分钟搞定;想统一管理多设备,NUT 是免费且强大的方案。核心是三点:识别 UPS、设好延时阈值、关机前有序停服务。把这套配好,以后跳闸停电你都能睡个安稳觉。