外观
接入 UPS:NUT 插件
完成后,市电中断时 NAS 能在 UPS 电池耗尽之前自己干净地关机,并给你发邮件;来电后,你也能在仪表盘上看到电池状态。
先说清楚 UPS 的作用:它给你的是几分钟的缓冲时间,让系统有机会正常关机,不是让 NAS 在停电时一直跑下去。没有 UPS 的 NAS 突然断电,轻则要做文件系统检查,重则损坏数据,RAID 和 Btrfs、ZFS 这类冗余手段防不了断电造成的损坏,它们不是备份,见备份策略。选型和容量估算见UPS 与供电。
插件信息
| 项 | 内容 |
|---|---|
| 包名 | openmediavault-nut |
| 来源 | 官方插件,底层是 Network UPS Tools(NUT) |
| OMV 8 状态 | 截至 2026-10-22 的官方软件源(synchrony)为 8.0.8-1,要求 openmediavault 8.5.11 或更高 |
| 菜单位置 | 服务 → UPS(Services → UPS)、诊断 → 服务 → UPS(Diagnostics → Services → UPS)、诊断 → 性能统计 → UPS(Diagnostics → Performance Statistics → UPS) |
| 依赖 | nut、udev |
准备
- 买的 UPS 要有 USB 数据口,用一根 USB 线连到 NAS。只接电源线、不接数据线,NAS 就不知道停电了。
- 在 NUT 的硬件兼容列表里查你的型号,看支持哪个驱动。插件默认配置的是最常见的 USB HID 驱动。
- 把 NAS 和硬盘柜接到 UPS 的备电插座上。路由器和交换机也接上,这样停电时网络还在,邮件才发得出去。不要把激光打印机之类的大功率设备接在 UPS 上。
安装与配置
打开
系统 → 插件(System → Plugins),检查新插件,安装openmediavault-nut。菜单没出现时,在浏览器里硬刷新(Ctrl+Shift+R)。打开
服务 → UPS,填写表单:字段 说明 已启动 默认关闭,要勾选 模式(Mode) 单机版(Standalone):UPS 直接接在这台机器上,默认;网络版(Netclient):连到别处的 NUT 服务器 标识符(Identifier) UPS 的名字,默认 ups。只能用字母、数字、下划线和连字符,不能叫default注释 备注 驱动配置指令 仅单机版。默认是两行: driver = usbhid-ups和port = auto,适合大部分 USB 接口的 UPS。其他型号查 NUT 文档的 ups.conf关机模式(Shutdown mode) 见下一节,默认 UPS 使用电池供电 关机计时器(Shutdown timer) 秒,默认 30,至少 1 远程监控 见下面「多台设备共用一个 UPS」 保存,点黄色提示条上的 应用。
验证通信
先确认 NAS 和 UPS 能说上话,再谈别的:
打开
诊断 → 服务 → UPS(Diagnostics → Services → UPS),页面显示 UPS 的各项参数,有刷新按钮。或者在 OMV 的 shell 里,以 root 身份运行(只读命令),标识符用你填的那个:
shupsc <标识符> upsc <标识符> ups.status upsc <标识符> battery.charge upsc <标识符> battery.runtimeups.status常见的值:OL表示市电正常,OB表示正在用电池,LB表示电池电量低。battery.runtime是 UPS 估算的剩余秒数,电池老化后会偏乐观,不要全信。不同型号的 UPS 报告的变量不一样,有的没有battery.runtime。
读不到数据时,先检查 USB 线、驱动配置和 UPS 的 USB 通信是否开启,见本篇的常见问题。
插件还提供 诊断 → 性能统计 → UPS 的图表和两个仪表盘小部件(UPS 的电池和信息),见仪表盘、系统信息与性能统计。
什么时候关机
关机模式决定倒计时从哪一刻开始,关机计时器决定倒计时多长。按插件生成的配置:
| 关机模式 | 过程 |
|---|---|
| UPS 使用电池供电(默认) | 一转到电池供电就开始倒计时,并在系统日志里写一条含 Shutdown imminent in N seconds 的记录。倒计时结束前来电,就取消关机;倒计时结束,就发起关机 |
| UPS 电池电量低 | 转到电池时只通知,等 UPS 自己报告电池电量低,再开始倒计时,其余同上 |
另外,UPS 自己发出强制关机(FSD)信号时会立即关机。关机命令是 /sbin/shutdown -h +0。
默认设置意味着:市电中断超过 30 秒,NAS 就会关机,哪怕 UPS 还剩很多电。 如果你的 UPS 续航比较长、停电多是几十秒的小波动,可以把计时器调大,但是要满足:
计时器 + NAS 完整关机所需的时间,必须明显小于 UPS 在你这台 NAS 的实际负载下的续航,并且留出电池老化的余量。
续航要自己测,别用标称值。想要不浪费电池容量,用「电池电量低」模式的话,要知道 UPS 报「电量低」时通常只剩很短时间,计时器就更不能设长。
多台设备共用一个 UPS
一个 UPS 只有一根 USB 线,只能接一台机器。这台机器做服务器,其他机器做客户端:
- 服务器上用单机版,勾选 远程监控 的 已启动,设置用户名和密码。插件会让 NUT 服务监听 TCP 3493 端口。
- 其他 OMV 上用网络版,填 网络版主机名(服务器的地址)、网络版用户名、网络版密码,标识符填服务器上 UPS 的名字,电源值一般是 1。
- 服务器和客户端各自按自己的计时器关机。建议让客户端比服务器先关,所以客户端的计时器设得短一些。
插件没有提供对这个通信加密(TLS)的选项,端口只应该在可信的局域网里开放,不要暴露到公网,见远程访问。
NAS 如果是 Proxmox 虚拟机,一种做法是在 PVE 宿主机上跑 NUT 服务器,OMV 虚拟机用网络版连宿主机,让宿主机统一关机。
通知邮件
UPS 事件会写进系统日志,在 诊断 → 系统日志(Diagnostics → System Logs)的 系统日志 里搜 upssched-cmd,能看到「市电中断」「正在关机」「关机已取消」这类记录。
要收邮件,先配置好邮件通知,再到 系统 → 通知 → 事件(System → Notification → Events)里勾选 UPS。邮件主题形如「UPS notification from 主机名」。
测试断电
真实测试会让 NAS 关机
- 影响范围:下面的测试会让 UPS 转电池,NAS 会在计时器到时真的关机,所有服务中断。配置错了还会造成意外关机。
- 前置条件:选一个不赶时间的时段,没有备份、scrub、同步在跑,没有人在用共享;确认主板 BIOS 里「来电后自动开机」的行为,否则关机后要靠人去按电源键。
- 怎么回退:测试中途想中止,在倒计时结束前把 UPS 接回市电即可取消关机。已经关机的,按电源键开机。
- 先测通信:上一节的
upsc能读到数据,ups.status是OL。 - 测「来电取消」:拔掉 UPS 的电源线(不是 NAS 的),看
upsc <标识符> ups.status变成OB,系统日志里出现关机提示;在倒计时结束前把电源线插回,日志里应出现「Shutdown cancelled」。 - 测真正的关机(可选,但强烈建议做一次):拔掉 UPS 的电源线,等计时器结束,NAS 应该干净地关机。再接回市电,看 NAS 会不会自己开机,不会的话去 BIOS 里找「Restore on AC Power Loss」之类的选项,设置成来电后开机。
- 测试之后看一眼系统日志和邮件,确认事件都记录了。
电池维护
- UPS 的电池会老化,几年后续航会明显缩短。NUT 在电池需要更换时会通知,之后大约每 12 小时再提醒一次(
RBWARNTIME的默认值是 43200 秒)。 - 每季度看一次电池电量,每年做一次实测续航。
- 搬动或更换 UPS 后,重新做一遍上面的测试。
检查结果
upsc <标识符>有输出,ups.status是OL。诊断 → 服务 → UPS页面能刷新出数据,仪表盘上能看到 UPS 小部件。- 做过一次「来电取消」测试,日志里有对应记录。
- 收到过一封 UPS 通知邮件(或者你明确知道它没配置)。
- 你知道你的 UPS 在这台 NAS 的负载下能撑多久,并且计时器明显小于它。
常见问题
upsc 读不到数据。 检查 USB 线是否接在数据口;在 shell 里 dmesg -T | tail -n 30 有没有识别到 USB 设备;驱动配置是否适合你的型号;有的 UPS 要在面板上开启 USB 通信。
保存时提示标识符无效。 只能用字母、数字、下划线、连字符,且不能是 default。
一停电 NAS 就关机,UPS 还有很多电。 这是默认的「UPS 使用电池供电」加 30 秒的组合,按上面的方法调整关机模式和计时器。
NAS 关机后,UPS 一直在响或不断电。 UPS 在系统关机后是否断电,由 NUT 和 UPS 的型号共同决定,插件为它配置了关机标志文件。如果影响使用,查你的型号在 NUT 文档里的说明。
网络版连不上服务器。 检查服务器的 远程监控 是否开启,用户名和密码、标识符是否对得上,防火墙是否放行 TCP 3493。
参考资料
- 插件源码:openmediavault-nut,关机逻辑见
srv/salt/omv/deploy/nut/files/下的etc-nut-upssched_conf.j2和usr-bin-upssched-cmd.j2。 - NUT 官方文档:ups.conf、upsmon.conf、硬件兼容列表。