如何备份实例¶
有多种方法可以备份您的实例
选择哪种方法取决于您的用例和使用的存储驱动程序。
通常,快照速度快且空间效率高(取决于存储驱动程序),但它们存储在与实例相同的存储池中,因此不太可靠。导出文件可以存储在不同的磁盘上,因此更可靠。它们也可以用来将实例恢复到不同的存储池。如果您有一个单独的网络连接的 Incus 服务器可用,定期将实例复制到此服务器可以提供高可靠性,这种方法也可以用来备份实例的快照。
注意
自定义存储卷可能附加到实例,但它们不是实例的一部分。因此,当您备份实例时,不会存储自定义存储卷的内容。您必须单独备份存储卷的数据。有关说明,请参见 如何备份自定义存储卷。
使用快照进行实例备份¶
您可以通过创建实例快照来保存实例在某个时间点的状态,这使得将实例恢复到以前的状态变得很容易。
实例快照存储在与实例卷本身相同的存储池中。
大多数存储驱动程序支持优化的快照创建(请参见 功能比较)。对于这些驱动程序,创建快照既快又节省空间。对于 dir
驱动程序,快照功能可用,但效率不高。对于 lvm
驱动程序,快照创建速度很快,但仅当使用瘦池模式时,恢复快照才有效。
创建快照¶
使用以下命令创建实例快照
incus snapshot create <instance_name> [<snapshot name>]
将 --reuse
标志与快照名称结合使用以替换现有快照。
默认情况下,快照会永久保留,除非设置了 snapshots.expiry
配置选项。要保留特定快照,即使设置了常规过期时间,也请使用 --no-expiry
标志。
对于虚拟机,您可以添加 --stateful
标志,不仅捕获实例卷中包含的数据,还捕获实例的运行状态。请注意,此功能尚未完全支持容器,因为 CRIU 的限制。
查看、编辑或删除快照¶
使用以下命令显示实例的快照
incus info <instance_name>
您可以像实例一样查看或修改快照,方法是通过 <instance_name>/<snapshot_name>
引用快照。
要显示有关快照的配置信息,请使用以下命令
incus config show <instance_name>/<snapshot_name>
要更改快照的过期日期,请使用以下命令
incus config edit <instance_name>/<snapshot_name>
注意
通常,快照无法编辑,因为它们保留了实例的状态。唯一的例外是过期日期。对配置的其他更改将被静默忽略。
要删除快照,请使用以下命令
incus snapshot delete <instance_name> <snapshot_name>
安排实例快照¶
您可以配置实例以在特定时间自动创建快照(最多每分钟一次)。为此,请设置 snapshots.schedule
实例选项。
例如,要配置每天创建快照,请使用以下命令
incus config set <instance_name> snapshots.schedule @daily
要配置每天上午 6 点创建快照,请使用以下命令
incus config set <instance_name> snapshots.schedule "0 6 * * *"
在安排定期快照时,请考虑设置自动过期时间 (snapshots.expiry
) 和快照的命名模式 (snapshots.pattern
)。您还应该配置是否要创建未运行的实例的快照 (snapshots.schedule.stopped
)。
恢复实例快照¶
您可以将实例恢复到其任何快照。
为此,请使用以下命令
incus snapshot restore <instance_name> <snapshot_name>
如果快照是有状态的(这意味着它包含有关实例运行状态的信息),您可以添加 --stateful
标志以恢复状态。
使用导出文件进行实例备份¶
您可以将实例的全部内容导出到一个独立的文件,该文件可以存储在任何位置。为了获得最高的可靠性,请将备份文件存储在不同的文件系统上,以确保它不会丢失或损坏。
导出实例¶
使用以下命令将实例导出到压缩文件(例如,/path/to/my-instance.tgz
)
incus export <instance_name> [<file_path>]
如果您没有指定文件路径,则导出文件将保存在工作目录中,名为 <instance_name>.<extension>
(例如,my-container.tar.gz
)。
警告
如果输出文件(<instance_name>.<extension>
或指定的文件路径)已存在,则该命令将覆盖现有文件,不会发出任何警告。
您可以向该命令添加以下任何标志
--compression
默认情况下,输出文件使用
gzip
压缩。您可以指定不同的压缩算法(例如,bzip2
)或使用--compression=none
关闭压缩。--optimized-storage
如果您的存储池使用
btrfs
或zfs
驱动程序,请添加--optimized-storage
标志以将数据存储为驱动程序特定的二进制 blob,而不是单个文件的存档。在这种情况下,导出文件只能与使用相同存储驱动程序的池一起使用。以优化模式导出卷通常比导出单个文件更快。快照以与主卷的差异形式导出,这会减小其大小并使其易于访问。
--instance-only
默认情况下,导出文件包含实例的所有快照。添加此标志以导出实例,但不包括其快照。
从导出文件恢复实例¶
您可以将导出文件(例如,/path/to/my-backup.tgz
)导入为新实例。为此,请使用以下命令
incus import <file_path> [<instance_name>]
如果您没有指定实例名称,则使用导出的实例的原始名称作为新实例的名称。如果指定存储池中已存在(或仍然存在)具有该名称的实例,则该命令将返回错误。在这种情况下,请在导入备份之前删除现有实例,或为导入指定不同的实例名称。
将实例复制到备份服务器¶
您可以将实例复制到辅助备份服务器以对其进行备份。
有关说明,请参阅 如何在服务器之间移动现有 Incus 实例。