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'