如何备份 Incus 服务器

在生产环境中,您应该始终备份 Incus 服务器的内容。

Incus 服务器包含各种不同的实体,在选择备份策略时,您必须决定要备份这些实体中的哪些,以及要备份它们的频率。

备份什么

Incus 服务器的各种内容都位于您的文件系统上,此外还记录在 Incus 数据库 中。因此,仅备份数据库或仅备份磁盘上的文件不会为您提供完整的可操作备份。

您的 Incus 服务器包含以下实体

  • 实例(数据库记录和文件系统)

  • 镜像(数据库记录、镜像文件和文件系统)

  • 网络(数据库记录和状态文件)

  • 配置文件(数据库记录)

  • 存储卷(数据库记录和文件系统)

考虑您需要备份哪些内容。例如,如果您不使用自定义镜像,则不需要备份镜像,因为它们在镜像服务器上可用。如果您只使用 default 配置文件,或者只使用标准 incusbr0 网络桥接,则您可能不需要担心备份它们,因为它们可以轻松地重新创建。

完整备份

要创建 Incus 服务器所有内容的完整备份,请备份 /var/lib/incus 目录。

此目录包含您的本地存储、Incus 数据库和您的配置。但是,它不包含单独的存储设备。这意味着目录是否也包含实例的数据取决于您使用的存储驱动程序。

重要

如果您的 Incus 服务器使用任何外部存储(例如,LVM 卷组、ZFS zpool 或任何其他不直接包含在 Incus 中的资源),您必须单独备份此存储。

要备份您的数据,请创建 /var/lib/incus 的 tarball。如果您的系统使用 /etc/subuid/etc/subgid 文件,您也应该备份这些文件。恢复它们可以避免不必要的实例文件系统偏移。

要恢复您的数据,请完成以下步骤

  1. 停止服务器上的 Incus(例如,使用 sudo systemctl stop incus.service incus.socket)。

  2. 删除目录(/var/lib/incus/)。

  3. 从备份中恢复目录。

  4. 删除并恢复任何外部存储设备。

  5. 如果存在,恢复 /etc/subuid/etc/subgid 文件。

  6. 重新启动 Incus(例如,使用 sudo systemctl start incus.socket incus.service 或重新启动机器)。

部分备份

如果您决定只备份特定实体,那么您有不同的选择来执行此操作。即使您除了进行完整备份外,也应该考虑进行一些部分备份。例如,恢复单个实例或重新配置配置文件可能比恢复完整的 Incus 服务器更容易更安全。

备份实例和卷

实例和存储卷的备份方式非常类似(因为在备份实例时,基本上是备份其实例卷,请参阅 存储卷类型)。

请参阅 如何备份实例如何备份自定义存储卷 以获取详细的信息。以下部分将简要概述您可用于备份实例和卷的选项。

辅助备份 Incus 服务器

Incus 支持在两个主机之间复制和移动实例和存储卷。有关说明,请参见 如何在服务器之间移动现有 Incus 实例如何移动或复制存储卷

因此,如果您有备用服务器,可以定期将实例和存储卷复制到该辅助服务器以对其进行备份。如有必要,您可以切换到辅助服务器,或者将实例或存储卷从辅助服务器复制回来。

如果您将辅助服务器用作纯存储服务器,则它不需要像主 Incus 服务器那样强大。

导出 tarball

您可以使用 export 命令将实例和卷导出到备份 tarball。默认情况下,这些 tarball 包含所有快照。

您可以使用优化的导出选项,它通常更快,并且生成的 tarball 文件更小。但是,您必须在还原备份 tarball 时使用相同的存储驱动程序。

有关说明,请参见 使用导出文件进行实例备份使用导出文件进行卷备份

快照

快照会在特定时间点保存实例或卷的状态。但是,它们存储在同一个存储池中,因此如果原始数据被删除或丢失,它们很可能会丢失。这意味着,虽然快照创建和还原非常快且容易,但它们不构成安全的备份。

有关更多信息,请参见 使用快照进行实例备份使用快照进行卷备份

备份数据库

虽然没有简单的方法来恢复 Incus 数据库 的内容,但保留其内容的备份仍然非常方便。例如,如果需要重新创建网络或配置文件,此类备份可以使其变得更加容易。

使用以下命令将本地数据库的内容转储到文件中

incus admin sql local .dump > <output_file>

使用以下命令将全局数据库的内容转储到文件中

incus admin sql global .dump > <output_file>

您应该将这两个命令包含在您的定期 Incus 备份中。