Proxmox VE 集群环境让仅剩1个节点也能跑起来--应急工作

在Proxmox VE (PVE) 超融合架构中只剩一台PVE节点能正常运行,其他节点已经下线需要维护。导致集群法定人数不满足要求,切换到了只读模式,虚拟机等业务系统无法正常工作。那么如何让单个节点临时强制恢复到读写模式,让业务跑起来先呢?

PVE超融合知识科普

Ceph 存储集群的容忍度

副本池(Replicated Pool):
允许离线的设备数量由 min_size 和副本数(size)决定。例如:
默认 size=3(数据存 3 份)时,最多允许 1 个 OSD/节点离线(剩余 2 份数据仍可读写)。
如果 size=2,则仅允许 1 个 OSD 离线,但此时集群可能进入只读模式(需谨慎配置)。
重要规则:必须保证在线副本数 ≥ min_size(通常为 size/2 + 1 取整)。

纠删码池(Erasure Coding):
允许离线设备数由纠删码配置(如 k=4, m=2)决定,最多可容忍 m 个设备故障(此例中为 2 个)。

MON(Monitor)节点:
通常需要 半数以上在线(如 3 个 MON 允许 1 个离线,5 个允许 2 个离线)。

Proxmox 集群的法定人数(Quorum)

集群需要多数节点在线以维持仲裁(避免脑裂)。
3 节点集群:允许 1 个节点离线。
5 节点集群:允许 2 个节点离线。
单节点或双节点集群:无冗余,任意节点离线可能导致服务中断(需手动干预)。

ZFS或其他本地存储的冗余

若使用 ZFS RAIDZ(如 RAIDZ1/RAIDZ2),允许离线设备数取决于冗余级别:
RAIDZ1:允许 1 块磁盘离线。
RAIDZ2:允许 2 块磁盘离线。
非冗余存储(如单盘或 JBOD):任何设备离线都会导致数据丢失。

场景允许离线设备数备注
Ceph 副本池(size=3)1个OSD或节点需满足 min_size=2
Ceph EC池(k=4, m=2)2个OSD数据仍可恢复
PVE 集群(3节点)1个节点保持 Quorum(2/3 在线)
ZFS RAIDZ22 块磁盘需及时更换故障盘

强制修改集群法定人数(适用于 PVE 集群只读)

当集群因节点离线无法达成要求时,PVE会进入只读模式。解决步骤:
1)在存活的节点上重置 Quorum 规则

# 查看当前 Quorum 状态
pvecm status
# 如果确认其他节点已无法恢复,强制忽略 Quorum(单节点模式)
pvecm expected 1

此命令将当前节点设为“唯一有效节点”,允许集群恢复读写。

2) 重启集群服务

systemctl restart pve-cluster

3)恢复后重新加入其他节点

pvecm expected 3

Ceph 存储恢复读写(适用于 Ceph 触发 min_size 限制)

如果 Ceph 池因 OSD 下线不满足 min_size 导致只读,可临时调整参数:
1) 临时降低 min_size

# 查看当前池配置
ceph osd pool get <pool-name> min_size
# 临时降低 min_size(例如从 2 改为 1,允许单副本写入)
ceph osd pool set <pool-name> min_size 1

2) 恢复后重置 min_size

ceph osd pool set <pool-name> min_size 2  # 恢复原始值

总结

这部分只是临时措施,节点完成修复后,需尽快恢复原始配置并修复离线节点。

广告位招租3
最后修改:2025 年 05 月 08 日
如果觉得我的文章对你有用,请随意赞赏