关于存储池、卷和存储桶

Incus 将其数据存储在存储池中,划分为不同内容类型的存储卷(如镜像或实例)。您可以将存储池视为用于存储数据的磁盘,而存储卷则是此磁盘上用于特定用途的不同分区。

除了存储卷之外,还有存储桶,它们使用 Amazon S3 协议。与存储卷一样,存储桶也是存储池的一部分。

存储池

在初始化期间,Incus 会提示您创建一个第一个存储池。如果需要,您以后可以创建其他存储池(请参阅 创建存储池)。

每个存储池使用一个存储驱动。支持以下存储驱动

有关更多信息,请参阅以下操作指南

数据存储位置

Incus 数据存储在何处取决于配置和所选存储驱动。根据使用的存储驱动,Incus 可以与主机共享文件系统,也可以将其数据保持独立。

存储位置

目录

Btrfs

LVM(全部)

ZFS

Ceph(全部)

与主机共享

-

-

专用磁盘/分区

-

-

循环磁盘

-

-

远程存储

-

-

-

与主机共享

与主机共享文件系统通常是运行 Incus 的最节省空间的方式。在大多数情况下,它也是最易于管理的。

此选项适用于 dir 驱动程序、btrfs 驱动程序(如果主机是 Btrfs 并且您将 Incus 指向专用子卷)和 zfs 驱动程序(如果主机是 ZFS 并且您将 Incus 指向 zpool 上的专用数据集)。

专用磁盘或分区

让 Incus 使用主磁盘上的空分区或完整的专用磁盘可以使其存储完全独立于主机。

此选项适用于 btrfs 驱动程序、lvm 驱动程序和 zfs 驱动程序。

循环磁盘

Incus 可以在您的主驱动器上创建一个循环文件,并让选定的存储驱动程序使用它。此方法在功能上类似于使用磁盘或分区,但它使用主驱动器上的大文件。这意味着每次写入都必须通过存储驱动程序和主驱动器文件系统,这会导致性能下降。

循环文件位于 /var/lib/incus/disks/ 中。

循环文件通常无法缩小。它们会增长到配置的限制,但删除实例或镜像不会导致文件缩小。不过,您可以增加它们的大小;请参阅 调整存储池大小

远程存储

cephcephfscephobject 驱动程序将数据存储在一个完全独立的 Ceph 存储集群中,该集群必须单独设置。lvmcluster 驱动程序依赖于所有集群成员都可以访问的共享块设备以及预先存在的 lvmlockd 设置。

默认存储池

Incus 中没有默认存储池的概念。

创建存储卷时,必须指定要使用的存储池。

当 Incus 在实例创建期间自动创建存储卷时,它使用为实例配置的存储池。此配置可以通过以下两种方式之一设置

在配置文件中,要使用的存储池由根磁盘设备的池定义。

  root:
    type: disk
    path: /
    pool: default

在默认配置文件中,此池设置为初始化期间创建的存储池。

存储卷

创建实例时,Incus 会自动为其创建所需的存储卷。您可以创建额外的存储卷。

有关更多信息,请参阅以下操作指南

存储卷类型

存储卷可以是以下类型

container/virtual-machine

启动实例时,Incus 会自动创建其中一个存储卷。它用作实例的根磁盘,并在删除实例时被销毁。

此存储卷在启动实例时使用的配置文件中指定的存储池(如果未指定配置文件,则为默认配置文件)中创建。可以通过向启动命令提供 --storage 标志来显式指定存储池。

镜像

当 Incus 解压缩镜像以从中启动一个或多个实例时,它会自动创建其中一个存储卷。您可以在创建实例后将其删除。如果您没有手动删除它,它将在上次用于启动实例后十天自动删除。

镜像存储卷在与实例存储卷相同的存储池中创建,并且仅适用于使用支持优化镜像存储的存储驱动程序的存储池。

自定义

您可以添加一个或多个自定义存储卷来保存您希望与实例分开存储的数据。自定义存储卷可以在实例之间共享,并且在您删除它们之前会保留。

您还可以使用自定义存储卷来保存您的备份或镜像。

创建自定义卷时,必须指定其存储池。

内容类型

每个存储卷都使用以下内容类型之一

文件系统

此内容类型用于容器和容器镜像。它是自定义存储卷的默认内容类型。

内容类型为 filesystem 的自定义存储卷可以附加到容器和虚拟机,并且可以在实例之间共享。

此内容类型用于虚拟机和虚拟机镜像。您可以使用 --type=block 标志创建类型为 block 的自定义存储卷。

内容类型为 block 的自定义存储卷只能附加到虚拟机。它们不应在实例之间共享,因为同时访问会导致数据损坏。

iso

此内容类型用于自定义 ISO 卷。类型为 iso 的自定义存储卷只能通过使用 incus import 导入 ISO 文件来创建。

内容类型为 iso 的自定义存储卷只能附加到虚拟机。它们可以同时附加到多台机器,因为它们始终是只读的。

存储桶

存储桶通过 S3 协议提供对象存储功能。

它们的使用方式类似于自定义存储卷。但是,与存储卷不同,存储桶不会附加到实例。相反,应用程序可以通过其 URL 直接访问存储桶。

每个存储桶都分配了一个或多个访问密钥,应用程序必须使用这些密钥来访问它。

存储桶可以位于本地存储(使用 dirbtrfslvmzfs 池)或远程存储(使用 cephobject 池)上。

要为本地存储池驱动程序启用存储桶并允许应用程序通过 S3 协议访问存储桶,您必须配置 core.storage_buckets_address 服务器设置。

有关更多信息,请参阅以下操作指南