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 RAIDZ2 | 2 块磁盘 | 需及时更换故障盘 |
强制修改集群法定人数(适用于 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 # 恢复原始值
总结
这部分只是临时措施,节点完成修复后,需尽快恢复原始配置并修复离线节点。