PVE 双机热备方案 (DRBD)
新 PVE 物理机到位后,按本文档执行。双机直连网线,DRBD 块级同步复制,零数据丢失。
一、硬件要求
| 要求 | 旧机 | 新机 |
|---|---|---|
| 网口 | 至少 2 个 | 至少 2 个 |
| 数据盘 | 当前 VM 盘 | ≥ 旧机 VM 盘总大小 |
| 网线 | 千兆起步 | 直连旧机 |
二、网络拓扑
旧 PVE 主机 新 PVE 主机
┌─────────────────┐ 直连网线 ┌─────────────────┐
│ eth0 → 内网 │←──────────→│ eth0 → 内网 │
│ eth1 → DRBD复制 │────────────│ eth1 → DRBD复制 │
│ 10.0.0.1 │ │ 10.0.0.2 │
└─────────────────┘ └─────────────────┘
三、部署步骤
1. 硬件接线
- 两台各插一根网线直连
- 旧机 eth1:
10.0.0.1/24 - 新机 eth1:
10.0.0.2/24 - ping 通对端确认
2. 安装 DRBD
# 两台都执行
apt update && apt install -y drbd-utils
3. 配置资源文件
两台都创建 /etc/drbd.d/vms.res:
resource vms {
protocol C;
device /dev/drbd0;
disk /dev/sdb;
meta-disk internal;
on pve-old {
address 10.0.0.1:7789;
}
on pve-new {
address 10.0.0.2:7789;
}
}
4. 初始化并首次同步
# 两台都执行
drbdadm create-md vms
drbdadm up vms
# 旧机设为主(只在一台执行)
drbdadm primary --force vms
# 查看同步进度
watch cat /proc/drbd
# 首次全量同步完成后状态显示 UpToDate/UpToDate
5. 接入 PVE
# 旧机:在 /dev/drbd0 上建 LVM
pvcreate /dev/drbd0
vgcreate vg-vms /dev/drbd0
# 在 PVE Web UI 添加 LVM 存储 → 选 vg-vms
# 所有 VM 磁盘迁移到此存储
6. 故障切换流程
# 旧机挂了,在新机上执行:
drbdadm primary vms
qm start <VMID>
# 恢复完成
四、DRBD 协议说明
| 协议 | 写入确认时机 | 丢数据风险 | 性能 |
|---|---|---|---|
| A | 写到本地磁盘即返回 | 可能丢 | 最快 |
| B | 写到本地 + 对端内存即返回 | 对端断电丢 | 中等 |
| C | 写到本地 + 对端磁盘才返回 | 零丢失 | 写操作稍慢 |
本方案使用协议 C。
五、日常维护
# 查看状态
cat /proc/drbd
drbdadm status vms
# 断开/重连(维护时)
drbdadm disconnect vms
drbdadm connect vms
# 主备切换
# 旧主先降级:drbdadm secondary vms
# 新主升级:drbdadm primary vms
六、注意事项
- 两台的数据盘
/dev/sdb大小必须一致 - 首次全量同步时间 = 盘大小 ÷ 网速,大盘可能需要数小时
- DRBD 主从模式下备机磁盘不可挂载,不要手动 mount
- PVE Web UI 不管理 DRBD,切换需手动或脚本
创建日期: 2026-06-04