pvesr` 命令行工具管理 {PVE} 存储复制框架。存储复制为使用本地存储的客户提供了冗余,并减少了迁移时间。

它将客户卷复制到另一个节点,以便在不使用共享存储的情况下访问所有数据。复制使用快照来最小化通过网络发送的流量。因此,在初始全量同步之后,只会增量发送新数据。如果节点出现故障,您的客户数据仍然可以在复制节点上访问。

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

可以将一个客户机复制到多个目标节点,但不可以重复复制到同一个目标节点。

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

如果将客户机迁移到已有复制的节点,那么只需要传输自上次复制以来的变化(所谓的`差异`)。这显著减少了所需的时间。如果您将客户机迁移到复制目标节点,复制方向会自动切换。

例如:VM100 当前位于 nodeA 并且被复制到 nodeB。你将其迁移到 nodeB,所以现在它会自动从 nodeB 复制回 nodeA

如果您迁移到一个未复制该虚拟机的节点,整个磁盘数据必须发送过去。迁移后, 复制任务将继续将此虚拟机复制到配置的节点。

Important

允许将高可用性与存储复制结合使用,但在最后一次同步时间与节点故障时间之间可能会有一些数据丢失。

支持的存储类型

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

ZFS (本地)

zfspool

日程格式

复制使用 日历事件 来配置计划。

错误处理

如果复制作业遇到问题,它就会被置于错误状态。在这种状态下,配置的复制间隔会暂时被挂起。失败的复制将每30分钟重试一次。一旦成功,原来的计划将再次激活。

可能的问题

一些最常见的问题列在下面的列表中。根据您的设置,可能还有其他原因。

  • 网络不工作。

  • 复制目标存储上没有剩余的空闲空间。

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

Note
你总是可以使用复制日志来找出问题的原因。

在出错的情况下迁移一个客户端

在发生严重错误的情况下,虚拟客户端可能会在失败的节点上卡住。然后您需要手动将其移动到正常工作的节点上。

例子

让我们假设你有两个客户机(VM 100和CT 200)运行在节点A上,并复制到节点B。节点A失败了并且无法恢复在线。现在你必须手动将客户机迁移到节点B。

  • 通过ssh连接到节点B或通过Web界面打开其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

记得将VMIDs和节点名称替换为你相应的值。

管理作业

您可以使用Web图形用户界面(GUI)轻松创建、修改和删除复制作业。此外,命令行界面(CLI)工具 pvesr 也可以用来进行这些操作。

您可以在所有层面(数据中心、节点、虚拟客户端)的网络图形用户界面中找到复制面板。它们的不同之处在于显示的作业:全部作业、节点特定作业或客户端特定作业。

当添加一个新任务时,您需要指定访客,如果尚未选择,还需要指定目标节点。如果默认的“每15分钟一次”不是您想要的,您可以设置复制作业的调度时间。您可以对复制任务施加速率限制。速率限制可以帮助保持存储负载在可接受的范围内。

复制任务由集群范围内唯一的ID来标识。这个ID由虚拟机ID(VMID)和一个作业号组成。只有在使用命令行工具(CLI tool)时,这个ID需要手动指定。

命令行接口示例

创建一个复制作业,该作业每5分钟运行一次,为ID为100的来宾设置了限制带宽为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'