pvesr 命令行工具用于管理 Proxmox VE 存储复制框架。存储复制可为使用本地存储的 来宾提供冗余,并减少迁移时间。

它会将来宾卷复制到另一个节点,因此无需使用共享存储即可让所有数据保持可用。 复制使用快照来尽量减少通过网络传输的流量。因此,在首次完整同步之后,新数据只会 以增量方式发送。如果发生节点故障,来宾数据仍可在复制目标节点上使用。

复制会按可配置的间隔自动完成。最小复制间隔为一分钟,最大间隔为每周一次。用于指定 这些间隔的格式是 systemd 日历事件的一个子集,请参见 调度格式 章节:

可以将一个来宾复制到多个目标节点,但不能对同一个目标节点复制两次。

可以限制每个复制任务的带宽,以避免存储或服务器过载。

如果将来宾迁移到一个已拥有该来宾副本的节点,则只需要传输自上次复制以来的变更 (即所谓的 deltas)。这会显著减少所需时间。如果将来宾迁移到复制目标节点, 复制方向会自动切换。

例如:VM100 当前位于 nodeA,并复制到 nodeB。将其迁移到 nodeB 后,它现在会 自动从 nodeB 反向复制回 nodeA

如果迁移到一个没有该来宾副本的节点,则必须传输完整磁盘数据。迁移完成后,复制 作业会继续将该来宾复制到已配置的节点。

Important

高可用可以与存储复制结合使用,但从最后一次同步到节点发生故障之间可能会有部分 数据丢失。

支持的存储类型

Table 1. 存储类型
描述 插件类型 快照 稳定

ZFS (local)

zfspool

调度格式

复制使用 日历事件 配置调度。

错误处理

如果复制作业遇到问题,会被置于错误状态。在此状态下,已配置的复制间隔会被临时挂起。 失败的复制会以 30 分钟为间隔反复重试。一旦重试成功,原始调度会再次激活。

可能的问题

下列是一些最常见的问题。根据具体设置,也可能存在其他原因。

  • 网络未正常工作。

  • 复制目标存储没有剩余可用空间。

  • 目标节点上没有相同存储 ID 的存储。

Note 始终可以使用复制日志查找问题原因。

发生错误时迁移来宾

在发生严重错误时,虚拟来宾可能会滞留在故障节点上。此时需要手动将其再次移动到 正常工作的节点。

示例

假设有两个来宾(VM 100 和 CT 200)运行在节点 A 上,并复制到节点 B。 节点 A 发生故障且无法恢复上线。现在必须手动将来宾迁移到节点 B。

  • 通过 ssh 连接到节点 B,或通过 Web UI 打开其 shell

  • 检查集群是否具备法定票数

    # pvecm status
  • 如果没有法定票数,强烈建议先修复该问题,使节点重新可操作。只有在当前无法做到这一点时, 才可以使用以下命令在当前节点上强制设置法定票数:

    # pvecm expected 1
Warning 设置 expected votes 后,应尽一切可能避免会影响集群的变更 (例如添加/移除节点、存储、虚拟来宾)。仅应将其用于让关键来宾重新运行,或用于解决 法定票数问题本身。
  • 将两个来宾配置文件从原始节点 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 和节点名称替换为实际值。

管理作业

screenshot/gui-qemu-add-replication-job.png

可以使用 Web GUI 轻松创建、修改和移除复制作业。此外,也可以使用命令行接口(CLI) 工具 pvesr 完成这些操作。

在 Web GUI 的所有层级(数据中心、节点、虚拟来宾)都可以找到复制面板。不同层级显示 的作业范围不同:全部作业、节点特定作业或来宾特定作业。

添加新作业时,如果尚未选中来宾,则需要指定来宾以及目标节点。如果不希望使用默认的 all 15 minutes,可以设置复制 调度。 也可以为复制作业施加速率限制。速率限制有助于让存储负载保持在可接受范围内。

复制作业由一个集群范围内唯一的 ID 标识。该 ID 由 VMID 加上作业编号组成。 只有使用 CLI 工具时才需要手动指定该 ID。

网络

复制流量会使用与来宾在线迁移相同的网络。默认情况下,这是管理网络。若要为迁移使用 其他网络,请在 Web 界面的 Datacenter -> Options -> Migration Settings 中配置 Migration Network,或在 datacenter.cfg 中配置。更多详情请参见 迁移网络

命令行接口示例

为 ID 为 100 的来宾创建一个每 5 分钟运行一次、带宽限制为 10 Mbps(兆字节每秒)的 复制作业。

# pvesr create-local-job 100-0 pve1 --schedule "*/5" --rate 10

禁用 ID 为 100-0 的活动作业。

# pvesr disable 100-0

启用 ID 为 100-0 的已停用作业。

# pvesr enable 100-0

将 ID 为 100-0 的作业调度间隔改为每小时一次。

# pvesr update 100-0 --schedule '*/00'