Proxmox ve(PVE)配合UPS实现停电自动关机

文章介绍了如何在Linux系统中安装和配置apcupsd,用于监控和管理UPS设备。步骤包括安装apcupsd,修改配置文件以设置通信协议、电池电量阈值、延迟时间等参数,启动和管理服务,并启用网络服务以实现局域网内的设备监控。此外,还提到了Windows系统的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装APC UPS守护进程

apt install apcupsd -y

2.修改配置文件

vim /etc/apcupsd/apcupsd.conf

以下是配置文件的解释,根据需求配置

1.UPSCABLE:指定UPS设备与计算机之间使用的通信协议,可以是"usb"、"serial"或者"ethernet"等。例如:

UPSCABLE usb          # 使用USB通信协议



2.UPSTYPE:指定UPS设备的类型usb

UPSTYPE usb         # DEVICE /dev/ttyS0 这行要注释掉
#DEVICE /dev/ttyS0 



3.ONBATTERYDELAY:UPS设备切换到电池供电模式后延迟执行一些特定操作的时间(秒)

ONBATTERYDELAY 6




4.BATTERYLEVEL:UPS电池电量的阈值,当UPS电池电量低于指定阈值时会关机(百分比值)

BATTERYLEVEL 90



5.MINUTES:UPS设备内部计算的剩余电池供电时间(分钟)低于MINUTES则关机。
MINUTES 5



6.TIMEOUT:在停电期间,UPS设备在电池供电模式下超过了TIMEOUT参数指定的时间(秒),就执行关机

TIMEOUT 10



注意:BATTERYLEVEL、MINUTES和TIMEOUT参数是相互关联的,
因此,其中任何一个参数首先达到阈值都会导致系统启动关机程序。




7.POLLTIME:设置apcupsd向UPS设备查询状态的时间间隔(以秒为单位)
POLLTIME 30



8.EVENTSFILE:设置apcupsd的日志输出路径。APCUPSd 会将各种事件(如停电、电池状态变化、警报等)记录在事件日志文件中





3.启动apcupsd服务

#启动apcupsd服务
systemctl start apcupsd.service


#apcupsd服务开机自动启动
systemctl enable apcupsd.service


#重启apcupsd服务
systemctl restart apcupsd.service


#查看apcupsd服务状态
systemctl status apcupsd.service 


#查看ups状态
apcaccess 

局域网内其他设备也可以使用apcupsd服务

#编辑apcupsd的配置文件/etc/apcupsd/apcupsd.conf,确保以下参数设置正确:

NETSERVER on       # 开启网络服务
NISIP 0.0.0.0      # 监听所有网络接口
NISPORT 3551       # 监听端口号

#如果只想允许特定的IP地址访问网络服务,则可以将NISIP参数设置为相应的IP地址


#重启apcupsd服务以使更改生效,使用以下命令:
systemctl restart apcupsd.service

去apcupsd官网下载安装对应系统的软件包:www.apcupsd.org

以下是windows作为网络连接的配置

C:\apcupsd\etc\apcupsd\apcupsd.conf

UPSCABLE ether
UPSTYPE net
DEVICE 192.168.0.253:3551
TIMEOUT 30
UPSCLASS shareslave
UPSMODE share

<think>我们参考用户提供的引用信息,特别是引用[2]中关于Proxmox VE (PVE)配合UPS实现停电自动关机的配置说明,并结合用户之前的问题(如何通过NUT实现UPS断电自动保护)来简化配置步骤。用户现在希望了解一个简单的配置方法,让PVE系统在UPS断电后自动关机。 根据引用[2],我们可以使用`apcupsd`(APC UPS的守护程序)来实现,但注意NUT(Network UPS Tools)是更通用的解决方案,支持多种UPS品牌。不过,用户引用中提到了apcupsd的配置参数,因此我们也可以提供两种方案(NUT和apcupsd)的简单配置,但用户之前的问题是关于NUT的,所以我们以NUT为主,同时简要提及apcupsd。 ### 方案一:使用NUT(推荐,通用性强) #### 步骤1:安装NUT 在PVE主机上安装NUT软件包: ```bash apt update && apt install nut ``` #### 步骤2:配置NUT 编辑配置文件: 1. **设置运行模式**(`/etc/nut/nut.conf`): ```conf MODE=netserver ``` 2. **配置UPS设备**(`/etc/nut/ups.conf`): 假设UPS通过USB连接,且驱动为`usbhid-ups`(常见驱动): ```conf [myups] driver = usbhid-ups port = auto # 自动检测USB设备 desc = "My UPS" ``` > 注意:如果知道具体设备节点(如`/dev/hidraw0`),可以指定`port = /dev/hidraw0`。 3. **配置监控用户**(`/etc/nut/upsd.users`): ```conf [monuser] password = yourpassword upsmon master ``` 4. **配置监控服务**(`/etc/nut/upsmon.conf`): 添加以下行: ```conf MONITOR myups@localhost 1 monuser yourpassword master SHUTDOWNCMD "/sbin/shutdown -h now" # 立即关机命令 # 可选:设置断电后延迟关机时间(秒) SHUTDOWNDELAY 120 # 断电后120秒关机 ``` > 注意:这里我们直接使用`shutdown -h now`命令关机。如果希望安全关闭所有虚拟机再关机,可以使用PVE的`safe-shutdown-all`命令(需要安装`pve-manager`,通常已安装),但注意该命令会尝试安全关闭所有虚拟机,然后关闭主机。如果虚拟机无法正常关闭,可能会超时。因此,简单场景下直接关机也是可行的,因为PVE主机在关机前会尝试停止所有虚拟机。 #### 步骤3:启动服务并设置开机自启 ```bash systemctl restart nut-driver nut-server nut-monitor systemctl enable nut-driver nut-server nut-monitor ``` #### 步骤4:测试 - 查看UPS状态:`upsc myups@localhost` - 模拟断电:拔掉UPS的市电插头,等待设定的延迟时间(如120秒)后,系统应自动关机。 ### 方案二:使用apcupsd(仅适用于APC品牌UPS) 如果用户使用的是APC品牌的UPS,也可以选择`apcupsd`,配置更简单。 #### 步骤1:安装apcupsd ```bash apt install apcupsd ``` #### 步骤2:配置apcupsd(`/etc/apcupsd/apcupsd.conf`) 根据引用[2]中的参数说明,进行如下配置: ```conf UPSCABLE usb UPSTYPE usb # 注释掉DEVICE行,因为使用USB # DEVICE /dev/ttyS0 ONBATTERYDELAY 6 # 切换到电池供电后6秒执行操作 BATTERYLEVEL 90 # 电池电量低于90%时关机(根据需求调整) MINUTES 5 # 剩余供电时间低于5分钟时关机 TIMEOUT 10 # 电池供电超过10秒后关机(注意:这里设置的时间要结合实际情况) POLLTIME 30 # 查询间隔 ``` #### 步骤3:启动服务 ```bash systemctl restart apcupsd systemctl enable apcupsd ``` ### 注意事项 1. **方案选择**:NUT支持更多品牌的UPS,通用性更强;apcupsd仅适用于APC品牌。 2. **关机延迟**:为了避免市电短暂波动导致误关机,建议设置适当的延迟(如1-2分钟)。 3. **测试**:务必进行实际断电测试,确保配置生效。 ### 故障排查 - 查看日志:`tail -f /var/log/syslog`(NUT)或`/var/log/apcupsd.events`(apcupsd) - 检查服务状态:`systemctl status nut-*` 或 `systemctl status apcupsd` ### 相关问题 1. 如何配置NUT以支持非APC品牌的UPS? 2. 在PVE集群中,如何配置多台主机共享同一台UPS? 3. 如何设置UPS断电后先关闭虚拟机再关闭物理主机? 以上配置方法简单易行,用户可以根据自己的UPS品牌选择合适的方案。 [^1]: 引用自用户提供的引用[1] [^2]: 引用自用户提供的引用[2]</think>要在PVE系统中简单配置UPS断电自动关机,推荐使用NUT(Network UPS Tools)方案。以下是精简配置步骤: ### 一、极简配置流程(5步完成) 1. **安装NUT** ```bash apt update && apt install nut ``` 2. **配置UPS设备**(编辑`/etc/nut/ups.conf`) ```conf [myups] driver = usbhid-ups port = auto # 自动检测USB设备 ``` 3. **设置监控用户**(编辑`/etc/nut/upsd.users`) ```conf [pveuser] password = your_password upsmon master ``` 4. **配置关机策略**(编辑`/etc/nut/upsmon.conf`) ```conf MONITOR myups@localhost 1 pveuser your_password master SHUTDOWNCMD "/sbin/shutdown -h now" # 直接关机命令 SHUTDOWNDELAY 120 # 断电120秒后关机(防误触发) ``` 5. **启动服务** ```bash systemctl restart nut-* && systemctl enable nut-* ``` ### 二、关键参数说明 | 参数 | 推荐值 | 作用 | |------|--------|------| | `SHUTDOWNDELAY` | 60-300秒 | 延迟关机避免市电波动误触发[^2] | | `BATTERYLEVEL` | 20-30% | 电量低于阈值时强制关机(可选) | | `MINUTES` | 5分钟 | 剩余供电时间不足时关机(可选) | ### 三、验证方法 1. 模拟断电(拔UPS电源线) 2. 查看关机日志: ```bash tail -f /var/log/syslog | grep upsmon ``` 3. 应看到类似记录: ``` upsmon: Execute SHUTDOWNCMD: /sbin/shutdown -h now ``` > ⚠️ **注意** > 1. 使用`shutdown -h now`比PVE专用命令更简单可靠 > 2. 延迟设置`SHUTDOWNDELAY`必须大于UPS切换时间(通常3-10秒) > 3. 首次配置后务必进行**实际断电测试**[^1] ### 四、替代方案(无NUT) 若UPS不支持NUT,可用ping检测方案(编辑cron任务): ```bash */5 * * * * ping -c 2 192.168.1.1 || (sleep 120 && ping -c 2 192.168.1.1 || shutdown -h now) # 每5分钟ping路由器,失败则120秒后关机 ``` --- **相关问题** 1. 如何确认UPSPVE的USB连接是否正常? 2. NUT监控的`master`和`slave`模式有何区别? 3. 市电恢复后PVE能否自动开机? [^1]: 实际断电测试必要性验证 [^2]: UPS响应延迟配置建议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值