如何备份自定义存储卷

有不同的方法可以备份您的自定义存储卷

选择哪种方法取决于您的用例和您使用的存储驱动程序。

通常,快照快速且节省空间(取决于存储驱动程序),但它们存储在与卷相同的存储池中,因此不太可靠。导出文件可以存储在不同的磁盘上,因此更可靠。它们还可以用于将卷恢复到不同的存储池中。如果您有单独的网络连接的 Incus 服务器可用,则定期将卷复制到此其他服务器也能提供高可靠性,并且此方法也可用于备份卷的快照。

注意

自定义存储卷可能已附加到实例,但它们不是实例的一部分。因此,当您备份您的实例时,不会存储自定义存储卷的内容。您必须单独备份存储卷的数据。

使用快照进行卷备份

快照在特定时间保存存储卷的状态,这使得可以轻松地将卷恢复到以前的状态。它存储在与卷本身相同的存储池中。

大多数存储驱动程序都支持优化的快照创建(请参阅功能比较)。对于这些驱动程序,创建快照既快速又节省空间。对于dir驱动程序,快照功能可用,但效率不高。对于lvm驱动程序,快照创建很快,但只有在使用精简池模式时,恢复快照才有效率。

创建自定义存储卷的快照

使用以下命令为自定义存储卷创建快照

incus storage volume snapshot create <pool_name> <volume_name> [<snapshot_name>]

--reuse标志与快照名称结合使用以替换现有快照。

默认情况下,快照会永久保留,除非设置了snapshots.expiry配置选项。即使设置了常规过期时间,也要保留特定快照,请使用--no-expiry标志。

查看、编辑或删除快照

使用以下命令显示存储卷的快照

incus storage volume info <pool_name> <volume_name>

您可以通过使用<volume_name>/<snapshot_name>引用快照,以类似于自定义存储卷的方式查看或修改快照。

要显示有关快照的信息,请使用以下命令

incus storage volume show <pool_name> <volume_name>/<snapshot_name>

要编辑快照(例如,添加描述或更改过期日期),请使用以下命令

incus storage volume edit <pool_name> <volume_name>/<snapshot_name>

要删除快照,请使用以下命令

incus storage volume delete <pool_name> <volume_name>/<snapshot_name>

计划自定义存储卷的快照

您可以配置自定义存储卷以在特定时间自动创建快照。为此,请为存储卷设置snapshots.schedule配置选项(请参阅配置存储卷设置)。

例如,要配置每日快照,请使用以下命令

incus storage volume set <pool_name> <volume_name> snapshots.schedule @daily

要配置每天早上 6 点拍摄快照,请使用以下命令

incus storage volume set <pool_name> <volume_name> snapshots.schedule "0 6 * * *"

在计划定期快照时,请考虑设置自动过期(snapshots.expiry)和快照的命名模式(snapshots.pattern)。有关这些配置选项的更多信息,请参阅存储驱动程序文档。

恢复自定义存储卷的快照

您可以将自定义存储卷恢复到其任何快照的状态。

为此,您必须首先停止使用存储卷的所有实例。然后使用以下命令

incus storage volume snapshot restore <pool_name> <volume_name> <snapshot_name>

您还可以将快照恢复到新的自定义存储卷中,无论是在同一存储池中还是在不同的存储池中(甚至是远程存储池)。为此,请使用以下命令

incus storage volume copy <source_pool_name>/<source_volume_name>/<source_snapshot_name> <target_pool_name>/<target_volume_name>

使用导出文件进行卷备份

您可以将自定义存储卷的完整内容导出到一个独立的文件,该文件可以存储在任何位置。为了获得最高的可靠性,请将备份文件存储在不同的文件系统上,以确保它不会丢失或损坏。

导出自定义存储卷

使用以下命令将自定义存储卷导出到压缩文件(例如,/path/to/my-backup.tgz

incus storage volume export <pool_name> <volume_name> [<file_path>]

如果您未指定文件路径,则导出文件将作为backup.tar.gz保存在工作目录中。

警告

如果输出文件已存在,则该命令会覆盖现有文件,恕不另行通知。

您可以向命令添加以下任何标志

--compression

默认情况下,输出文件使用gzip压缩。您可以指定不同的压缩算法(例如,bzip2)或使用--compression=none关闭压缩。

--optimized-storage

如果您的存储池使用btrfszfs驱动程序,请添加--optimized-storage标志,以便将数据存储为驱动程序特定的二进制blob,而不是单个文件的存档。在这种情况下,导出文件只能与使用相同存储驱动程序的池一起使用。

以优化模式导出卷通常比导出单个文件更快。快照作为与主卷的差异导出,这减少了它们的大小并使它们易于访问。

--volume-only

默认情况下,导出文件包含存储卷的所有快照。添加此标志以导出卷而不导出其快照。

从导出文件还原自定义存储卷

您可以将导出文件(例如,/path/to/my-backup.tgz)导入为新的自定义存储卷。为此,请使用以下命令

incus storage volume import <pool_name> <file_path> [<volume_name>]

如果您未指定卷名,则导出存储卷的原始名称将用于新卷。如果指定存储池中已存在(或仍然存在)具有该名称的卷,则命令将返回错误。在这种情况下,请在导入备份之前删除现有卷,或为导入指定不同的卷名。