pvesr命令行工具管理Proxmox VE存储复制框架。存储复制为使用本地存储的虚拟机带来冗余,减少迁移时间。

它将虚拟机卷复制到另一个节点,这样所有数据都可以使用,而不需要使用共享存储。复制使用快照来最小化通过网络发送的流量。因此,在初始全同步之后,新数据只能以增量方式发送。在节点发生故障的情况下,您的来宾数据仍然可以在复制的节点上使用。

复制在可配置的间隔内自动完成。最小复制间隔时间为1分钟,最大复制间隔时间为每周一次。用于指定这些时间间隔的格式是systemd日历事件的子集,参见Schedule format第9.2节:

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

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

启用了复制的客户机目前只能脱机迁移。如果将客户机迁移到已经复制到的节点上,则只需要传输自上次复制(所谓的增量)以来的更改。这大大减少了所需的时间。如果将客户端迁移到复制目标节点,复制方向将自动切换。

例如:VM100目前在nodeA上,并被复制到nodeB。您将它迁移到nodeB,现在它将自动从nodeB复制回nodeA。

如果迁移到没有复制客户机的节点,则必须发送整个磁盘数据。迁移之后,复制作业将继续将这个客户机复制到已配置的节点。

  1. 重要的
  2. 高可用性允许与存储复制结合使用,但它有以下含义:
  3. •由于目前不可能进行动态迁移,所以在更首选的节点上线后重新分发服务是行不通的。在为复制的来宾配置HA组及其优先级时,请记住这一点。
  4. •恢复工作正常,但是从上次同步时间到节点故障时间之间可能会有一些数据丢失。

9.1、支持存储类型

表9.1 存储类型

描述 PVE 类型 快照 稳定
ZFS(local) zfspool yes yes

9.2、时间格式

Proxmox VE有一个非常灵活的复制调度程序。它基于systemd时间日历事件格式。日历事件可用于在单个表达式中引用一个或多个时间点。

这样的日历事件使用以下格式:

[day(s)] [[start-time(s)][/repetition-time(s)]]

此格式允许您配置作业应在哪些天运行。您还可以设置一个或多个开始时间。它告诉复制调度程序应该在何时启动作业。有了这些信息,我们可以创建一个工作,在每个工作日晚上10点运行:“mon,tue,wed,thu,fri 22”,可以缩写为:“mon..fri 22”,最合理的时间表可以很直观地这样写。

  1. 请注意
  2. 小时为24小时格式。

为了方便且更短的配置,可以为每个客户机设置一个或多个重复时间。它们表示复制在开始时间本身和开始时间加上重复值的所有倍数上完成。如果你想在早上8点开始复制,每15分钟重复一次,直到早上9点,你可以使用:’ 8:00/15 ‘

这里您可以看到,如果没有使用小时间隔(:),则该值将被解释为分钟。如果使用这样的间隔,左边的值表示小时,右边的值表示分钟。此外,您可以使用*来匹配所有可能的值。

要了解更多的想法,请查看9.2.2节下面的更多示例。

9.2.1、详细规格

days
日期用英文缩写来指定:sun, mon, tue, wed, thu, fri and sat。您可以使用多个天作为逗号分隔的列表。还可以通过指定以“..”分隔的开始和结束日来设置天数范围。,例如周一、周五。这些格式可以混合使用。如果省略了’ * ‘,则假定。

time-format
时间格式由小时和分钟间隔列表组成。小时和分钟用“:”分隔。小时和分钟都可以是列表和值范围,使用与天相同的格式。首先是小时,然后是分钟。如果不需要,小时可以省略。在本例中,假设“*”表示小时的值。值的有效范围是0-23(小时)和0-59(分钟)。

9.2.2、示例

表9.2 调度示例

Schedule String 替代 意义
mon,tue,wed,thu,fri mon..fri 每个工作日的零点
sat,sun sat..sun 只在周末的零点
mon,wed,fri 只在周一,周三和周五的零点
12:05 12:05 每天中午12:05
*/5 0/5 每五分钟
mon..wed 30/10 mon,tue,wed 30/10 周一,周二,周三每满一小时后30 40 50分钟
mon..fri 8..17,22:0/15 每个工作天每十五分钟由上午八时至晚上六时及晚上十时至晚上十一时
fri 12..13:5/20 fri 12,13:5/20 周五12:05,12:25,12:45,13:05,13:25和13:45
12,14,16,18,20,22:5 12/2:5 每天12:05到22:05,每两小时一次
* */1 每分钟(最小间隔)

9.3、错误处理

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

9.3.1、可能的问题

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

  • 网络不正常。

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

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

    1. 请注意
    2. 您总是可以使用复制日志来找出导致问题的原因。

    9.3.2、发生错误时迁移

在出现严重错误的情况下,虚拟客户可能会卡在一个失败的节点上。然后,您需要再次手动将其移动到一个工作节点。

9.3.3、示例

假设您有两个客户机(VM 100和CT 200)运行在节点A上,并复制到节点b。节点A发生故障,不能重新联机。现在必须手动将客户迁移到节点B。

  • 通过ssh连接节点B或通过web打开节点B的shell

  • 检查集群是否符合法定数量

# pvecm status

  • 如果您没有仲裁,我们强烈建议首先修复这个问题,并使节点重新可操作。只有在此时不可能这样做时,您才可以使用以下命令在当前节点上强制仲裁:

# pvecm expected 1

  1. 警告
  2. 如果设置了预期的投票(例如添加/删除节点、存储、虚拟来宾),请不惜一切代价避免影响集群的更改。只能使用它让重要的客户机重新启动并运行,或者解决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

请记住用您各自的值替换VMIDs和节点名。

9.4、管理工作

image.png
您可以使用web GUI轻松地创建、修改和删除复制作业。此外,可以使用命令行界面(CLI)工具pvesr来实现这一点。

在web GUI中,您可以在所有级别(数据中心、节点、虚拟客户端)上找到复制面板。它们的不同之处在于显示的作业:所有特定于节点或客户的作业。

在添加新作业时,如果还没有选择,则需要指定来宾以及目标节点。如果不需要所有15分钟的默认值,可以设置9.2节中的复制计划。您可以对复制作业施加速率限制。速率限制有助于保持存储器上可接受的负载。

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

9.5、命令行接口示例

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

# 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’