备份是任何明智 IT 部署的必要条件,Proxmox VE 利用每种存储和每种访客系统类型的功能提供完全集成的解决方案。这允许系统管理员通过模式选项在备份一致性和来宾系统停机时间之间进行微调。

Proxmox VE 备份始终是完整备份 – 包含 VM/CT 配置和所有数据。可以通过 GUI 或vzdump命令行工具启动备份。

备份存储

在运行备份之前,必须定义备份存储。有关如何添加存储的信息,请参阅 存储文档。它可以是 Proxmox 备份服务器存储(其中备份存储为重复数据删除块和元数据),也可以是文件级存储(其中备份存储为常规文件)。建议在专用主机上使用 Proxmox 备份服务器,因为它具有高级功能。使用 NFS 服务器是一个不错的选择。在这两种情况下,您可能希望稍后将这些备份保存到磁带驱动器,以进行异地存档。

计划备份

可以安排备份作业,以便在特定日期和时间自动执行可选择的节点和来宾系统。有关更多信息,请参阅 备份作业部分。

16.1. 备份模式

有多种方法可以提供一致性(选项mode),具体取决于来宾类型。

VM的备份模式:
停止模式

此模式可提供最高的备份一致性,但代价是虚拟机操作会短暂停机。它的工作原理是按顺序关闭虚拟机,然后运行后台 QEMU 进程来备份虚拟机数据。备份开始后,如果虚拟机之前正在运行,则它会进入完全运行模式。通过使用实时备份功能来保证一致性。

挂起模式

此模式是出于兼容性原因而提供的,并在调用快照模式 之前暂停虚拟机。由于暂停虚拟机会导致较长的停机时间,并且不一定能提高数据一致性,因此建议 使用快照模式。

快照模式

此模式提供最短的操作停机时间,但代价是存在较小的不一致风险。它的工作原理是执行 Proxmox VE 实时备份,在虚拟机运行时复制数据块。如果来宾代理已启用 ( agent: 1 ) 并正在运行,它将调用 guest-fsfreeze-freezeguest-fsfreeze-thaw以提高一致性。

可以在此处在线找到 QemuServer 的 Proxmox VE 实时备份的技术概述 。

笔记 Proxmox VE 实时备份在任何存储类型上提供类似快照的语义。它不要求底层存储支持快照。另请注意,由于备份是通过后台 QEMU 进程完成的,因此当 QEMU 读取 VM 磁盘时,已停止的 VM 将显示为正在运行一小段时间。但是,虚拟机本身并未启动,仅读取其磁盘。
容器的备份模式:
停止模式

在备份期间停止容器。这可能会导致很长的停机时间。

挂起模式

此模式使用 rsync 将容器数据复制到临时位置(请参阅选项–tmpdir)。然后容器被挂起,第二个 rsync 复制更改的文件。之后,容器再次启动(恢复)。这可以最大限度地减少停机时间,但需要额外的空间来保存容器副本。

当容器位于本地文件系统上并且备份的目标存储是 NFS/CIFS 服务器时,您也应该将–tmpdir设置为驻留在本地文件系统上,因为这将导致性能大幅提升。如果备份存储是 NFS 服务器,并且要在挂起模式下使用 ACL 备份本地容器,则还需要使用本地tmpdir 。

快照模式

此模式使用底层存储的快照功能。首先,容器会被暂停,以保证数据的一致性。将创建容器卷的临时快照,并将快照内容存档在 tar 文件中。最后,再次删除临时快照。

笔记 快照模式要求所有备份卷都位于支持快照的存储上。使用backup=no安装点选项可以将单个卷从备份中排除(因此也有此要求)。
笔记 默认情况下,备份中不包含除根磁盘安装点之外的其他安装点。对于卷安装点,您可以设置备份选项以将安装点包含在备份中。设备和绑定安装永远不会备份,因为它们的内容是在 Proxmox VE 存储库外部管理的。

16.2. 备份文件名

例如,较新版本的 vzdump 将来宾类型和备份时间编码到文件名中

vzdump-lxc-105-2009_10_09-11_04_43.tar

这样就可以在同一目录中存储多个备份。您可以限制使用各种保留选项保留的备份数量,请参阅下面的备份保留部分。

16.3。备份文件压缩

可以使用以下算法之一压缩备份文件:lzo 55 ]gzip 56 ]zstd 57 ]

目前,Zstandard (zstd) 是这三种算法中最快的。多线程是 zstd 相对于 lzo 和 gzip 的另一个优势。Lzo 和 gzip 使用更广泛,通常默认安装。

您可以安装 pigz 58 ]作为 gzip 的直接替代品,以通过多线程提供更好的性能。对于 Pigz 和 zstd,可以调整线程/核心的数量。请参阅 下面的配置选项

备份文件名的扩展名通常可用于确定创建备份时使用的压缩算法。

.zst

Zstandard (zstd) 压缩

.gz 或 .tgz

gzip压缩

.lzo

lzo压缩

如果备份文件名不以上述文件扩展名之一结尾,则它未被 vzdump 压缩。

16.4。备份加密

对于 Proxmox 备份服务器存储,您可以选择设置客户端备份加密,请参阅相应部分。

16.5。备份作业

除了手动触发备份之外,您还可以设置定期作业,将所有或选择的虚拟来宾备份到存储。您可以在 UI 中的“数据中心” → “备份”下或通过/cluster/backup API 端点管理作业。两者都会在/etc/pve/jobs.cfg中生成作业条目,这些条目由pvescheduler守护进程解析和执行。

作业可以针对所有集群节点或特定节点进行配置,并根据给定的计划执行。日程表的格式与systemd日历事件非常相似,有关详细信息,请参阅 日历事件部分。UI 中的“计划”字段 可以自由编辑,并且它包含多个示例,可以在其下拉列表中用作起点。

您可以配置特定于作业的保留选项 来覆盖存储或节点配置中的选项,以及 用于与备份一起保存的其他信息的注释模板。

由于当主机离线或 pvescheduler 在计划时间内被禁用时,计划的备份会错过执行,因此可以配置追赶行为。通过启用“重复错过”选项(配置中的“重复错过”),您可以告诉调度程序它应该尽快运行错过的作业。

有一些用于调整备份性能的设置未在 UI 中公开。最值得注意的是用于限制 IO 带宽的bwlimit。用于压缩器的线程数量可以分别通过pigz(替换gzip)和zstd设置来控制。此外,还有ionice以及作为性能设置一部分的max-workers(仅影响虚拟机备份)。有关详细信息,请参阅 配置选项

16.6。备份保留

使用prune-backups选项,您可以灵活地指定要保留哪些备份。可以使用以下保留选项:

保留所有<布尔值>

保留所有备份。如果这是true,则无法设置其他选项。

保持最后<N>

保留最后<N>个备份。

每小时保持 <N>

保留最近<N> 个小时的备份。如果一小时内有多个备份,则仅保留最新的。

每日保持<N>

保留最近<N>天的备份。如果一天有多个备份,则仅保留最新的。

每周保持<N>

保留最近<N>周的备份。如果一周有多个备份,则仅保留最新的备份。

笔记 每周从星期一开始,到星期日结束。该软件使用 ISO 周日期系统并正确处理年底的周。
每月保存 <N>

保留最近<N>个月的备份。如果一个月有多个备份,则仅保留最新的。

每年保存 <N>

保留最近<N>年的备份。如果一年有多个备份,则仅保留最新的备份。

保留选项按上面给出的顺序进行处理。每个选项仅涵盖其时间段内的备份。下一个选项不处理已经涵盖的备份。它只会考虑较旧的备份。

指定要用作逗号分隔列表的保留选项,例如:

# vzdump 777 --prune-backups keep-last=3,keep-daily=13,keep-yearly=9

虽然您可以将prune-backups直接传递给vzdump,但在存储级别配置设置通常更明智,这可以通过 Web 界面完成。

笔记 旧的maxfiles选项已弃用,应替换为 keep-last,或者如果maxfiles0以实现无限保留,则应替换为 keep-all

16.6.1。修剪模拟器

您可以使用 Proxmox 备份服务器文档的修剪模拟器来探索不同保留选项对各种备份计划的影响。

16.6.2。保留设置示例

旧备份的备份频率和保留可能取决于数据更改的频率以及旧状态在特定工作负载中的重要性。当备份充当公司的文档存档时,法律还可能要求备份必须保留多长时间。

对于此示例,我们假设您每天进行备份,保留期为 10 年,并且存储备份之间的时间间隔逐渐增长。

keep-last=3 – 即使只进行每日备份,管理员也可能希望在重大升级之前或之后创建一个额外的备份。设置 keep-last 可确保这一点。

未设置keep-hourly – 对于每日备份而言,这不相关。您已经通过 keep-last 覆盖了额外的手动备份。

keep-daily=13 – 与 keep-last(至少覆盖一天)一起使用,可以确保您至少有两周的备份。

keep-weekly=8 – 确保您至少有整整两个月的每周备份。

keep-monthly=11 – 与之前的 keep 设置一起,这可确保您至少有一年的每月备份。

keep-yearly=9 – 这是为了长期存档。当您使用之前的选项覆盖了当前年份时,您可以将剩余的选项设置为 9,这样您的总共覆盖期至少为 10 年。

我们建议您使用比您的环境最低要求更长的保留期;如果您发现它不必要地高,您可以随时减少它,但一旦删除备份,您就无法重新创建备份。

16.7。备份保护

您可以将备份标记为受保护以防止其被删除。尝试通过 Proxmox VE 的 UI、CLI 或 API 删除受保护的备份将会失败。然而,这是由 Proxmox VE 而不是文件系统强制执行的,这意味着对底层备份存储具有写访问权限的任何人仍然可以手动删除备份文件本身。

笔记 受保护的备份将被修剪忽略,并且不计入保留设置。

对于基于文件系统的存储,保护是通过哨兵文件 <backup-name>.protected实现的。对于 Proxmox 备份服务器,它在服务器端处理(自 Proxmox 备份服务器版本 2.1 起可用)。

使用存储选项max-protected-backups来控制存储上允许每个来宾有多少个受保护的备份。使用-1表示无限制。对于具有Datastore.Allocate权限的用户,默认值为无限制;对于其他用户,默认值为5 。

16.8。备份笔记

您可以使用UI 中的“编辑注释”按钮或通过存储内容 API向备份添加注释。

还可以指定一个模板,用于为备份作业和手动备份动态生成注释。模板字符串可以包含变量,用两个花括号括起来,在执行备份时将替换为相应的值。

目前支持的有:

  • {{cluster}}集群名称(如果有)

  • {{guestname}}虚拟访客的指定名称

  • {{node}}正在创建备份的节点的主机名

  • {{vmid}}访客的数字 VMID

当通过 API 或 CLI 指定时,它需要是单行,其中换行符和反斜杠需要分别转义为文字\n\\

16.9。恢复

可以通过 Proxmox VE Web GUI 或通过以下 CLI 工具恢复备份存档:

恢复百分比

容器恢复实用程序

qm恢复

虚拟机恢复实用程序

有关详细信息,请参阅相应的手册页。

16.9.1。带宽限制

恢复一个或多个大备份可能需要大量资源,尤其是用于从备份存储读取和写入目标存储的存储带宽。这可能会对其他虚拟来宾产生负面影响,因为对存储的访问可能会变得拥塞。

为了避免这种情况,您可以为备份作业设置带宽限制。Proxmox VE 对恢复和归档实施两种限制:

  • 每次恢复限制:表示从备份存档中读取的最大带宽量

  • 每个存储的写入限制:表示写入特定存储时使用的最大带宽量

读取限制间接影响写入限制,因为我们写入的内容不能多于读取的内容。较小的每个作业限制将覆盖较大的每个存储限制。仅当您对受影响的存储拥有“Data.Allocate”权限时,更大的每个作业限制才会覆盖每个存储限制。

您可以使用恢复 CLI 命令中的“–bwlimit <整数>”选项来设置恢复作业特定的带宽限制。KiB/s 用作限制单位,这意味着传递“10240”会将备份的读取速度限制为 10 MiB/s,确保剩余的可能存储带宽可供已运行的虚拟来宾使用,并且因此备份不会影响他们的操作。

笔记 您可以使用bwlimit参数“0”来禁用特定还原作业的所有限制。如果您需要尽快恢复非常重要的虚拟来宾,这会很有帮助。(需要存储的“Data.Allocate”权限)

大多数时候,您的存储的一般可用带宽随着时间的推移保持不变,因此我们实现了为每个配置的存储设置默认带宽限制的可能性,这可以通过以下方式完成:

# pvesm 设置 STORAGEID --bwlimit 恢复 = KIB

16.9.2。实时恢复

恢复大型备份可能需要很长时间,其中来宾仍然不可用。对于存储在 Proxmox 备份服务器上的虚拟机备份,可以使用实时恢复选项来缩短等待时间。

通过 GUI 中的复选框或qmrestore的–live-restore 参数启用实时还原会导致虚拟机在还原开始后立即启动。数据在后台复制,优先考虑虚拟机正在访问的块。

请注意,这有两个警告:

  • 在实时恢复期间,虚拟机将以有限的磁盘读取速度运行,因为数据必须从备份服务器加载(加载后,它会立即在目标存储上可用,因此两次访问数据只会在第一次时产生惩罚) )。写入速度基本上不受影响。

  • 如果实时恢复因任何原因失败,虚拟机将处于未定义状态 – 也就是说,并非所有数据都已从备份中复制,并且很可能无法保留在实时恢复期间写入的任何数据。恢复操作失败。

这种操作模式对于大型虚拟机特别有用,其中初始操作只需要少量数据,例如 Web 服务器 – 一旦操作系统和必要的服务启动,虚拟机就可以运行,而后台任务很少继续复制使用的数据。

16.9.3。单个文件恢复

存储 GUI 的“备份”选项卡中的“文件恢复”按钮可用于直接在备份中包含的数据上打开文件浏览器。此功能仅适用于 Proxmox 备份服务器上的备份。

对于容器来说,文件树的第一层显示了所有包含的pxar 档案,可以自由打开和浏览。对于虚拟机,第一层显示包含的驱动器映像,可以打开该映像以显示驱动器上支持的存储技术的列表。在最基本的情况下,这将是一个名为“ part”的条目,代表一个分区表,其中包含驱动器上找到的每个分区的条目。请注意,对于虚拟机,并非所有数据都可以访问(不受支持的来宾文件系统、存储技术等)。

可以使用“下载”按钮下载文件和目录,后者会动态压缩为 zip 存档。

为了实现对可能包含不受信任数据的 VM 映像的安全访问,将启动一个临时 VM(作为来宾不可见)。这并不意味着从此类存档下载的数据本质上是安全的,但它避免了虚拟机管理程序系统面临危险。超时后,VM 将自行停止。从用户的角度来看,整个过程是透明发生的。

16.10。配置

全局配置存储在/etc/vzdump.conf中。该文件使用简单的冒号分隔的键/值格式。每行具有以下格式:

选项:值

文件中的空白行将被忽略,以# 字符开头的行将被视为注释并被忽略。该文件中的值用作默认值,并且可以在命令行上覆盖。

我们目前支持以下选项:

bwlimit : <整数> (0 – N) (默认 = 0 )

限制 I/O 带宽(以 KiB/s 为单位)。

压缩<0 | 1 | 压缩包 | 左左| zstd>默认= 0

压缩转储文件。

转储目录<字符串>

将结果文件存储到指定目录。

排除路径<数组>

排除某些文件/目录(shell glob)。以/开头的路径锚定到容器的根目录,其他路径相对于每个子目录进行匹配。

ionice : <整数> (0 – 8) (默认 = 7 )

使用 BFQ 调度程序时设置 IO 优先级。对于虚拟机的快照和挂起模式备份,这仅影响压缩器。值 8 表示使用空闲优先级,否则使用指定值的尽力而为优先级。

锁等待<整数>(0 – N)默认 = 180

等待全局锁定的最长时间(分钟)。

邮件通知<总是| 失败>默认= 始终

指定何时发送电子邮件

邮寄地址<字符串>

应接收电子邮件通知的电子邮件地址或用户的逗号分隔列表。

最大文件数<整数> (1 – N)

已弃用:使用prune-backups代替。每个来宾系统的最大备份文件数。

模式<快照| 停止| 挂起>默认= 快照

备份模式。

笔记模板<字符串>

用于生成备份注释的模板字符串。它可以包含将被其值替换的变量。目前支持的有 {\{\cluster}}、{\{\guestname}}、{\{\node}} 和 {\{\vmid}},但将来可能会添加更多。需要是单行,换行符和反斜杠需要分别转义为\n\\

笔记 需要选项:存储
性能[max-workers=<整数>]

其他与性能相关的设置。

最大工作数<整数> (1 – 256)默认 = 16

适用于 VM。同时允许最多这么多 IO 工作线程。

pigz : <整数>默认 = 0

当 N>0 时,使用 Pigz 代替 gzip。N=1 使用一半核心,N>1 使用 N 作为线程数。

<字符串>

备份指定池中包含的所有已知来宾系统。

受保护<布尔值>

如果为 true,则将备份标记为受保护。

笔记 需要选项:存储
修剪备份[keep-all=<1|0>] [,keep-daily=<N>] [,keep-hourly=<N>] [,keep-last=<N>] [,keep-monthly =<N>] [,keep-weekly=<N>] [,keep-yearly=<N>]默认 = keep-all=1

使用这些保留选项而不是存储配置中的选项。

保留所有<布尔值>

保留所有备份。为 true 时与其他选项冲突。

每日保持<N>

保留最近 <N> 个不同天的备份。如果一天有多个备份,则仅保留最新的一个。

每小时保持<N>

保留最近 <N> 个不同小时的备份。如果一小时内有多个备份,则仅保留最新的一个。

保持最后<N>

保留最后 <N> 个备份。

每月保留<N>

保留最近 <N> 个不同月份的备份。如果一个月有多个备份,则仅保留最新的备份。

每周保持<N>

保留最近 <N> 个不同星期的备份。如果一周有多个备份,则仅保留最新的备份。

每年保留<N>

保留最近 <N> 个不同年份的备份。如果一年有多个备份,则仅保留最新的备份。

删除<布尔值>默认 = 1

根据prune-backups修剪旧备份。

脚本<字符串>

使用指定的钩子脚本。

标准排除<布尔值> (默认 = 1

排除临时文件和日志。

stopwait : <整数> (0 – N) (默认 = 10 )

等待来宾系统停止的最长时间(分钟)。

存储<字符串>

将生成的文件存储到此存储中。

tmpdir : <字符串>

将临时文件存储到指定目录。

zstd : <整数>默认 = 1

Zstd 线程。N=0 使用一半的可用核心,N>0 使用 N 作为线程数。

vzdump.conf配置示例
tmpdir:/mnt/fast_local_disk
存储:my_backup_storage
模式:快照
带宽限制:10000

16.11。挂钩脚本

您可以使用选项–script指定挂钩脚本。该脚本在备份过程的各个阶段调用,并设置相应的参数。您可以在文档目录 ( vzdump-hook-script.pl )中找到示例。

16.12。文件排除

笔记 此选项仅适用于容器备份。

vzdump默认情况下会跳过以下文件(使用选项 –stdexincludes 0禁用)

/tmp/?*
/var/tmp/?*
/var/run/?*pid

您还可以手动指定(附加)排除路径,例如:

# vzdump 777 --排除路径 /tmp/ --排除路径 '/var/foo*'

排除目录/tmp/以及名为/var/foo、 /var/foobar等的任何文件或目录。

不以/开头的路径不会锚定到容器的根目录,但会相对于任何子目录进行匹配。例如:

# vzdump 777 --排除路径栏

排除任何名为/bar/var/bar/var/foo/bar 等的文件或目录,但不排除/bar2

配置文件也存储在备份存档中(在./etc/vzdump/中)并将被正确恢复。

16.13。例子

只需转储 guest 777 – 无快照,只需将 guest 私有区域和配置文件存档到默认转储目录(通常为 /var/lib/vz/dump/)。

#vz转储777

使用 rsync 和挂起/恢复来创建快照(最短的停机时间)。

# vzdump 777 --模式挂起

备份所有访客系统并向 root 和 admin 发送通知邮件。

# vzdump --all --mode suspend --mailto root --mailto admin

备份来宾 777 并在失败时通过通知管理员通知目标进行通知。

# vzdump 777 --notification-target notification-admins --notification-policy 失败

使用快照模式(无停机)和非默认转储目录。

# vzdump 777 --dumpdir /mnt/backup --mode 快照

备份多个来宾(有选择)

# vzdump 101 102 103 --mailto root

备份除 101 和 102 之外的所有访客

# vzdump --模式挂起 --排除 101,102

将容器恢复到新的 CT 600

# pct 恢复 600 /mnt/backup/vzdump-lxc-777.tar

将 QemuServer VM 恢复到 VM 601

# qmrestore /mnt/backup/vzdump-qemu-888.vma 601

使用管道将现有容器 101 克隆到具有 4GB 根文件系统的新容器 300

# vzdump 101 --stdout | pct 恢复 --rootfs 4 300 -

作者 Lin-Tech

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注