如何管理存储池¶
请参阅以下部分,了解有关如何创建、配置、查看和调整存储池大小的说明。
创建存储池¶
Incus 在初始化期间会创建一个存储池。您可以稍后使用相同的驱动程序或不同的驱动程序添加更多存储池。
要创建存储池,请使用以下命令
incus storage create <pool_name> <driver> [configuration_options...]
除非另有说明,否则 Incus 会设置基于循环的存储,并使用合理的默认大小(可用磁盘空间的 20%,但至少 5 GiB,最多 30 GiB)。
请参阅存储驱动程序文档,以获取每个驱动程序可用的配置选项列表。
示例¶
请参阅以下示例,了解如何使用不同的存储驱动程序创建存储池。
创建一个名为pool1
的目录池
incus storage create pool1 dir
将现有目录/data/incus
用于pool2
incus storage create pool2 dir source=/data/incus
创建一个名为pool1
的循环备份池
incus storage create pool1 btrfs
将/some/path
处的现有 Btrfs 文件系统用于pool2
incus storage create pool2 btrfs source=/some/path
在/dev/sdX
上创建一个名为pool3
的池
incus storage create pool3 btrfs source=/dev/sdX
创建一个名为pool1
的循环备份池(LVM 卷组也将称为pool1
)
incus storage create pool1 lvm
将名为my-pool
的现有 LVM 卷组用于pool2
incus storage create pool2 lvm source=my-pool
将卷组my-vg
中名为my-pool
的现有 LVM 稀疏池用于pool3
incus storage create pool3 lvm source=my-vg lvm.thinpool_name=my-pool
在/dev/sdX
上创建一个名为pool4
的池(LVM 卷组也将称为pool4
)
incus storage create pool4 lvm source=/dev/sdX
在/dev/sdX
上创建一个名为pool5
的池,LVM 卷组名为my-pool
incus storage create pool5 lvm source=/dev/sdX lvm.vg_name=my-pool
创建一个名为pool1
的循环备份池(ZFS zpool 也将称为pool1
)
incus storage create pool1 zfs
创建一个名为pool2
的循环备份池,ZFS zpool 名为my-tank
incus storage create pool2 zfs zfs.pool_name=my-tank
将现有 ZFS zpool my-tank
用于pool3
incus storage create pool3 zfs source=my-tank
将现有 ZFS 数据集my-tank/slice
用于pool4
incus storage create pool4 zfs source=my-tank/slice
将现有 ZFS 数据集my-tank/zvol
用于pool5
,并将其配置为使用 ZFS 块模式
incus storage create pool5 zfs source=my-tank/zvol volume.zfs.block_mode=yes
在/dev/sdX
上创建一个名为pool6
的池(ZFS zpool 也将称为pool6
)
incus storage create pool6 zfs source=/dev/sdX
在/dev/sdX
上创建一个名为pool7
的池,ZFS zpool 名为my-tank
incus storage create pool7 zfs source=/dev/sdX zfs.pool_name=my-tank
在默认的 Ceph 集群(名为 ceph
)中创建一个名为 pool1
的 OSD 存储池。
incus storage create pool1 ceph
在 Ceph 集群 my-cluster
中创建一个名为 pool2
的 OSD 存储池。
incus storage create pool2 ceph ceph.cluster_name=my-cluster
在默认的 Ceph 集群中创建一个名为 pool3
且磁盘名为 my-osd
的 OSD 存储池。
incus storage create pool3 ceph ceph.osd.pool_name=my-osd
使用现有的 OSD 存储池 my-already-existing-osd
用于 pool4
。
incus storage create pool4 ceph source=my-already-existing-osd
使用现有的 OSD 擦除编码池 ecpool
和 OSD 复制池 rpl-pool
用于 pool5
。
incus storage create pool5 ceph source=rpl-pool ceph.osd.data_pool_name=ecpool
注意
每个 CephFS 文件系统包含两个 OSD 存储池,一个用于实际数据,另一个用于文件元数据。
使用现有的 CephFS 文件系统 my-filesystem
用于 pool1
。
incus storage create pool1 cephfs source=my-filesystem
使用 my-filesystem
文件系统中的子目录 my-directory
用于 pool2
。
incus storage create pool2 cephfs source=my-filesystem/my-directory
创建一个 CephFS 文件系统 my-filesystem
,其中数据池称为 my-data
,元数据池称为 my-metadata
,用于 pool3
。
incus storage create pool3 cephfs source=my-filesystem cephfs.create_missing=true cephfs.data_pool=my-data cephfs.meta_pool=my-metadata
注意
当使用 Ceph 对象驱动程序时,您必须事先拥有一个正在运行的 Ceph 对象网关 radosgw
URL。
使用现有的 Ceph 对象网关 https://www.example.com/radosgw
创建 pool1
。
incus storage create pool1 cephobject cephobject.radosgw.endpoint=https://www.example.com/radosgw
在集群中创建存储池¶
如果您正在运行 Incus 集群并想要添加存储池,则必须为每个集群成员分别创建存储池。这样做的原因是,配置(例如存储位置或池的大小)在集群成员之间可能不同。
因此,您必须首先使用 --target=<cluster_member>
标志和成员的相应配置在每个成员上创建一个挂起的存储池。确保为所有成员使用相同的存储池名称。然后在不指定 --target
标志的情况下创建存储池以实际设置它。
例如,以下命令序列在三个集群成员的不同位置和不同大小上设置了一个名为 my-pool
的存储池。
user@host:~$
incus storage create my-pool zfs source=/dev/sdX size=10GiB --target=vm01
Storage pool my-pool pending on member vm01
user@host:~$
incus storage create my-pool zfs source=/dev/sdX size=15GiB --target=vm02
Storage pool my-pool pending on member vm02
user@host:~$
incus storage create my-pool zfs source=/dev/sdY size=10GiB --target=vm03
Storage pool my-pool pending on member vm03
user@host:~$
incus storage create my-pool zfs
Storage pool my-pool created
另请参阅 如何为集群配置存储。
注意
对于大多数存储驱动程序,存储池存在于每个集群成员的本地。这意味着,如果您在一个成员的存储池中创建存储卷,它将无法在其他集群成员上使用。
对于基于 Ceph 的存储池(ceph
、cephfs
和 cephobject
),此行为有所不同,其中每个存储池存在于一个中心位置,因此,所有集群成员都访问同一个存储池以及相同的存储卷。
配置存储池设置¶
有关每个存储驱动程序的可用配置选项,请参阅 存储驱动程序 文档。
存储池的通用键(如 source
)位于顶级。特定于驱动程序的键由驱动程序名称命名空间。
使用以下命令设置存储池的配置选项。
incus storage set <pool_name> <key> <value>
例如,要关闭 dir
存储池在存储池迁移期间的压缩,请使用以下命令。
incus storage set my-dir-pool rsync.compression false
您还可以使用以下命令编辑存储池配置。
incus storage edit <pool_name>
查看存储池¶
您可以显示所有可用存储池的列表并检查其配置。
使用以下命令列出所有可用存储池。
incus storage list
生成的表格包含您在初始化期间创建的存储池(通常称为 default
或 local
)以及您添加的任何存储池。
要显示有关特定池的详细信息,请使用以下命令。
incus storage show <pool_name>
要查看特定池的使用信息,请运行以下命令。
incus storage info <pool_name>
调整存储池大小¶
如果您需要更多存储空间,可以通过更改 size
配置键来增加存储池的大小。
incus storage set <pool_name> size=<new_size>
这仅适用于由 Incus 管理的循环回送存储池。您只能扩展池(增加其大小),而不能缩小它。