如何在集群中配置存储

集群的所有成员必须具有相同的存储池。在不同成员的存储池之间可能不同的唯一配置键是 sourcesizezfs.pool_namelvm.thinpool_namelvm.vg_name。有关更多信息,请参见 成员配置

Incus 在初始化期间为每个集群成员创建一个默认的 local 存储池。

创建额外的存储池是一个两步过程

  1. 在所有集群成员中定义和配置新的存储池。例如,对于一个具有三个成员的集群

    incus storage create --target server1 data zfs source=/dev/vdb1
    incus storage create --target server2 data zfs source=/dev/vdc1
    incus storage create --target server3 data zfs source=/dev/vdb1 size=10GiB
    

    注意

    您只能传递成员特定的配置键 sourcesizezfs.pool_namelvm.thinpool_namelvm.vg_name。传递其他配置键会导致错误。

    这些命令定义了存储池,但不会创建它。如果您运行 incus storage list,您会看到该池被标记为“pending”。

  2. 运行以下命令在所有集群成员上实例化存储池

    incus storage create data zfs
    

    注意

    您可以将不是成员特定的配置键添加到此命令中。

    如果您在定义存储池时遗漏了一个集群成员,或者如果集群成员处于关闭状态,您将收到错误。

另请参见 在集群中创建存储池

查看成员特定的池配置

运行 incus storage show <pool_name> 显示存储池的集群范围配置。

要查看成员特定的配置,请使用 --target 标志。例如

incus storage show data --target server2

创建存储卷

对于大多数存储驱动程序(除基于 Ceph 的存储驱动程序外),存储卷不会在整个集群中复制,而只存在于创建它们的成员上。运行 incus storage volume list <pool_name> 查看某个卷位于哪个成员上。

创建存储卷时,使用 --target 标志在特定集群成员上创建存储卷。如果没有该标志,则该卷将在您运行命令的集群成员上创建。例如,要在当前集群成员 server1 上创建卷

incus storage volume create local vol1

要在另一个集群成员上创建具有相同名称的卷

incus storage volume create local vol1 --target server2

只要卷位于不同的集群成员上,不同的卷就可以具有相同的名称。这方面的典型示例是镜像卷。

您可以在集群中管理存储卷,就像在非集群部署中一样,只是您必须向命令传递 --target 标志,如果多个集群成员具有给定名称的卷。例如,要显示有关存储卷的信息

incus storage volume show local vol1 --target server1
incus storage volume show local vol1 --target server2