SYNOPSIS
pvesr <COMMAND> [ARGS] [OPTIONS]
常用命令示例:
pvesr list pvesr status
pvesr create-local-job <id> <target> [OPTIONS]
创建新的复制任务。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- <target>: <string>
-
目标节点。
- --comment <string>
-
说明。
- --disable <boolean>
-
用于禁用/停用该条目的标志。
- --rate <number> (1 - N)
-
速率限制,单位为 mbps(兆字节每秒),使用浮点数表示。
- --remove_job <full | local>
-
将复制任务标记为待删除。该任务会移除所有本地复制快照。设置为 full 时,还会尝试移除目标节点上的已复制卷。随后该任务会从配置文件中删除自身。
- --schedule <string> (default = */15)
-
存储复制调度计划。其格式是 systemd 日历事件的一个子集。
- --source <string>
-
供内部使用,用于检测客户机是否已被接管。
pvesr delete <id> [OPTIONS]
将复制任务标记为待删除。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- --force <boolean> (default = 0)
-
会移除任务配置条目,但不会执行清理。
- --keep <boolean> (default = 0)
-
保留目标端的已复制数据(不移除)。
pvesr disable <id>
禁用复制任务。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
pvesr enable <id>
启用复制任务。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
pvesr finalize-local-job <id> [<extra-args>] [OPTIONS]
完成复制任务。此操作会移除时间戳不同于 <last_sync> 的所有复制快照。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- <extra-args>: <array>
-
需要纳入处理的卷 ID 列表。
- --last_sync <integer> (0 - N)
-
上次成功同步的时间(UNIX epoch)。如果未指定,则会移除所有复制快照。
pvesr help [OPTIONS]
获取指定命令的帮助。
- --extra-args <array>
-
显示特定命令的帮助。
- --verbose <boolean>
-
详细输出格式。
pvesr list
列出复制任务。
pvesr prepare-local-job <id> [<extra-args>] [OPTIONS]
为启动复制任务做准备。此命令会在复制开始前于目标节点上调用。该调用供内部使用,并在 stdout 上返回一个 JSON 对象。该方法首先测试 VM <vmid> 是否位于本地节点;如果是,则立即停止。随后该方法扫描所有卷 ID 的快照,并移除时间戳不同于 <last_sync> 的所有复制快照。它还会移除所有未使用的卷。返回值是一个哈希,其中用布尔标记表示哪些卷存在复制快照。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- <extra-args>: <array>
-
需要纳入处理的卷 ID 列表。
- --force <boolean> (default = 0)
-
允许移除所有现有卷(空卷列表)。
- --last_sync <integer> (0 - N)
-
上次成功同步的时间(UNIX epoch)。如果未指定,则会移除所有复制快照。
- --parent_snapname <string>
-
快照名称。
- --scan <string>
-
要扫描陈旧卷的存储 ID 列表。
pvesr read <id>
读取复制任务配置。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
pvesr run [OPTIONS]
该方法由 systemd-timer 调用,用于执行所有同步任务或指定的同步任务。
- --id [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- --mail <boolean> (default = 0)
-
发生失败时发送电子邮件通知。
- --verbose <boolean> (default = 0)
-
向 stdout 打印更详细的日志。
pvesr schedule-now <id>
调度复制任务,使其尽快启动。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
pvesr set-state <vmid> <state>
在迁移时设置任务复制状态。该调用供内部使用,接受以 JSON 对象表示的任务状态。
- <vmid>: <integer> (100 - 999999999)
-
虚拟机的(唯一)ID。
- <state>: <string>
-
以 JSON 解码字符串表示的任务状态。
pvesr status [OPTIONS]
列出此节点上所有复制任务的状态。
- --guest <integer> (100 - 999999999)
-
仅列出此客户机的复制任务。
pvesr update <id> [OPTIONS]
更新复制任务配置。
- <id>: [1-9][0-9]{2,8}-\d{1,9}
-
复制任务 ID。该 ID 由客户机 ID 和任务编号组成,中间用连字符分隔,即 <GUEST>-<JOBNUM>。
- --comment <string>
-
说明。
- --delete <string>
-
要删除的设置列表。
- --digest <string>
-
如果当前配置文件的 digest 不同,则阻止更改。此项可用于防止并发修改。
- --disable <boolean>
-
用于禁用/停用该条目的标志。
- --rate <number> (1 - N)
-
速率限制,单位为 mbps(兆字节每秒),使用浮点数表示。
- --remove_job <full | local>
-
将复制任务标记为待删除。该任务会移除所有本地复制快照。设置为 full 时,还会尝试移除目标节点上的已复制卷。随后该任务会从配置文件中删除自身。
- --schedule <string> (default = */15)
-
存储复制调度计划。其格式是 systemd 日历事件的一个子集。
- --source <string>
-
供内部使用,用于检测客户机是否已被接管。
DESCRIPTION
pvesr 命令行工具用于管理 Proxmox VE 存储复制框架。存储复制可为使用本地存储的 来宾提供冗余,并减少迁移时间。
它会将来宾卷复制到另一个节点,因此无需使用共享存储即可让所有数据保持可用。 复制使用快照来尽量减少通过网络传输的流量。因此,在首次完整同步之后,新数据只会 以增量方式发送。如果发生节点故障,来宾数据仍可在复制目标节点上使用。
复制会按可配置的间隔自动完成。最小复制间隔为一分钟,最大间隔为每周一次。用于指定 这些间隔的格式是 systemd 日历事件的一个子集,请参见 调度格式 章节:
可以将一个来宾复制到多个目标节点,但不能对同一个目标节点复制两次。
可以限制每个复制任务的带宽,以避免存储或服务器过载。
如果将来宾迁移到一个已拥有该来宾副本的节点,则只需要传输自上次复制以来的变更 (即所谓的 deltas)。这会显著减少所需时间。如果将来宾迁移到复制目标节点, 复制方向会自动切换。
例如:VM100 当前位于 nodeA,并复制到 nodeB。将其迁移到 nodeB 后,它现在会 自动从 nodeB 反向复制回 nodeA。
如果迁移到一个没有该来宾副本的节点,则必须传输完整磁盘数据。迁移完成后,复制 作业会继续将该来宾复制到已配置的节点。
|
|
高可用可以与存储复制结合使用,但从最后一次同步到节点发生故障之间可能会有部分 数据丢失。 |
错误处理
如果复制作业遇到问题,会被置于错误状态。在此状态下,已配置的复制间隔会被临时挂起。 失败的复制会以 30 分钟为间隔反复重试。一旦重试成功,原始调度会再次激活。
示例
假设有两个来宾(VM 100 和 CT 200)运行在节点 A 上,并复制到节点 B。 节点 A 发生故障且无法恢复上线。现在必须手动将来宾迁移到节点 B。
-
通过 ssh 连接到节点 B,或通过 Web UI 打开其 shell
-
检查集群是否具备法定票数
# pvecm status
-
如果没有法定票数,强烈建议先修复该问题,使节点重新可操作。只有在当前无法做到这一点时, 才可以使用以下命令在当前节点上强制设置法定票数:
# pvecm expected 1
|
|
设置 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 和节点名称替换为实际值。
管理作业
在 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'
版权和免责声明
Copyright © 2022-2025 成都市梨儿方信息技术有限责任公司.
本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。
发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。
你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/
Copyright © 2007-2022 Proxmox Server Solutions GmbH
本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。
发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。
你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/
