9.存储复制 Storage Replication
命令行工具 pvesr 用于管理 Proxmox VE 的存储复制框架。存储复制为使用本地存储的客户机带来冗余 , 并缩短迁移时间。
它将客户机卷复制到另一节点 , 从而在不使用共享存储的情况下也能让所有数据可用。复制使用 快照 以最小化网络流量 —— 首次全量同步后仅增量发送新数据。节点故障时 , 客户机数据仍保留在复制目标节点上。
复制按可配置的间隔自动执行 , 最小 1 分钟、最大 1 周 , 格式为 systemd calendar events 的子集(见 §9.2)。
一个客户机可复制到 多个目标节点 , 但不能重复复制到同一目标节点。每个复制任务可限制带宽 , 避免压垮存储或服务器。
若将客户机迁移到已复制的目标节点 , 只需传输自上次复制以来的变化(所谓 delta), 大幅缩短迁移时间;同时复制方向会 自动反转。
例如 VM 100 当前在 nodeA, 被复制到 nodeB; 迁移到 nodeB 后 , 复制方向自动变为从 nodeB 反向到 nodeA。若迁移到 尚未复制 的节点 , 则需整盘传输;之后该客户机将继续按既定配置复制到所配置的节点。
高可用可与存储复制搭配使用 , 但在最后一次同步到节点故障之间可能丢失部分数据。
9.1.支持的存储类型 Supported Storage Types
表 16 :存储类型
| 描述 | 插件类型 | 快照 | 稳定 |
|---|---|---|---|
| ZFS(本地) | zfspool | yes | yes |
9.2.调度格式 Schedule Format
复制使用 calendar events 配置调度 , 格式与 systemd 日历事件一致 —— 参见 「Calendar Events」附录(或 man systemd.time)。
9.3.错误处理 Error Handling
复制作业遇到问题会进入 error 状态 , 此时已配置的复制间隔被临时挂起 , 失败的复制每 30 分钟重试一次;成功后原始调度自动恢复。
9.3.1.可能的问题 Possible Issues
- 网络不可用
- 目标存储无可用空间
- 目标节点上没有相同
STORAGE_ID的存储
可通过复制日志定位问题原因。
9.3.2.出错时迁移客户机 Migrating a Guest in Case of Error
严重错误时虚拟客户机可能被卡在故障节点上 , 此时需要手动将其迁到可用节点。
9.3.3.示例 Example
假设节点 A 上运行 VM 100 与 CT 200 , 复制到节点 B。节点 A 发生故障且无法恢复 , 现在需要手动迁移到节点 B:
- 通过 SSH 或 Web UI 打开节点 B 的 shell。
- 检查集群是否具备 quorum:
# pvecm status
- 若没有 quorum, 强烈建议先修复它让节点重新工作。若实在无法做到 , 可强制当前节点达到 quorum:
# pvecm expected 1
设置
expected后 , 务必避免任何影响集群的变更(如增删节点、存储、客户机)。该命令仅用于让关键客户机恢复运行或解决 quorum 本身。 - 把两个客户机的配置文件从源节点 A 移到节点 B:
# mv /etc/pve/nodes/A/qemu-server/100.conf /etc/pve/nodes/B/qemu-server/100.conf # mv /etc/pve/nodes/A/lxc/200.conf /etc/pve/nodes/B/lxc/200.conf
- 启动客户机:
# qm start 100 # pct start 200
请根据实际情况替换上例中的 VMID 与节点名。
9.4.管理作业 Managing Jobs
可通过 Web GUI 便捷地创建、修改、删除复制作业 , 也可用 pvesr CLI 完成相同操作。复制面板在数据中心、节点、虚拟客户机三级均可访问 , 区别在于所显示的作业范围(全部 / 节点 / 客户机)。
新建作业时需要指定客户机(若尚未选中)与目标节点。若默认的每 15 分钟不合适可设置自定义调度;可对作业设置速率上限 , 把对存储的压力控制在可接受范围。
每个复制作业用集群范围内唯一的 ID 标识 , 由 VMID 加作业编号组成。仅在使用 CLI 工具时才需手动指定该 ID。
9.5.网络 Network
默认情况下复制流量与客户机迁移使用同一网络;若未设置迁移网络 , 则回退到管理网络。要为复制使用独立网络 , 请在 Datacenter → Options → Replication Settings 中配置 Replication Network, 或在 datacenter.cfg 中设置:
# 使用专用复制网络 replication: secure,network=10.1.2.0/24
9.6.命令行示例 Command-line Interface Examples
为 VMID 100 创建每 5 分钟一次、带宽限制 10 MB/s 的复制作业:
# pvesr create-local-job 100-0 pve1 --schedule "*/5" --rate 10
禁用 ID 为 100-0 的活动作业:
# pvesr disable 100-0
重新启用已停用的作业:
# pvesr enable 100-0
把作业 100-0 的调度改为每小时一次:
# pvesr update 100-0 --schedule '*/00'