Ceph RBD - ceph
¶
Ceph 是一个开源存储平台,它将数据存储在基于 RADOS 的存储集群中。它具有高度可扩展性,并且作为没有单点故障的分布式系统,非常可靠。
Ceph 为块存储和文件系统提供不同的组件。
Ceph RBD 是 Ceph 的块存储组件,它将数据和工作负载分布在 Ceph 集群中。它使用精简配置,这意味着可以过度分配资源。
术语¶
Ceph 使用术语“对象”来表示它存储的数据。负责存储和管理数据的守护进程是“Ceph OSD”。Ceph 的存储被划分为“池”,它们是用于存储对象的逻辑分区。它们也称为“数据池”、“存储池”或“OSD 池”。
Ceph 块设备也称为“RBD 镜像”,您可以创建这些 RBD 镜像的“快照”和“克隆”。
ceph
驱动程序在 Incus 中¶
注意
要使用 Ceph RBD 驱动程序,您必须将其指定为 ceph
。这有点误导,因为它仅使用 Ceph RBD(块存储)功能,而不是完整的 Ceph 功能。对于内容类型为 filesystem
的存储卷(镜像、容器和自定义文件系统卷),ceph
驱动程序使用在其上具有文件系统的 Ceph RBD 镜像(请参阅 block.filesystem
)。
或者,您可以使用 CephFS 驱动程序创建内容类型为 filesystem
的存储卷。
与其他存储驱动程序不同,此驱动程序不会设置存储系统,而是假设您已经安装了 Ceph 集群。
此驱动程序的行为也与其他驱动程序不同,因为它提供了远程存储。因此,根据内部网络,存储访问速度可能比本地存储慢一些。另一方面,使用远程存储在集群设置中具有很大的优势,因为所有集群成员都可以访问具有完全相同内容的相同存储池,而无需同步存储池。
ceph
驱动程序在 Incus 中使用 RBD 镜像来创建镜像,以及快照和克隆来创建实例和快照。
Incus 假设它可以完全控制 OSD 存储池。因此,您永远不要在 Incus OSD 存储池中维护任何不属于 Incus 的文件系统实体,因为 Incus 可能会删除它们。
由于 Ceph RBD 中的写时复制工作方式,在所有子级消失之前,无法删除父级 RBD 镜像。因此,Incus 会自动重命名任何已删除但仍被引用的对象。此类对象将保留 zombie_
前缀,直到所有引用消失并且可以安全地删除该对象。
限制¶
ceph
驱动程序具有以下限制
- 在实例之间共享自定义卷
具有 内容类型
filesystem
的自定义存储卷通常可以在多个实例不同的集群成员之间共享。但是,由于 Ceph RBD 驱动程序通过在 RBD 镜像之上放置文件系统来“模拟”内容类型为filesystem
的卷,因此自定义存储卷一次只能分配给一个实例。如果您需要共享内容类型为filesystem
的自定义卷,请改用 CephFS 驱动程序。- 在安装之间共享 OSD 存储池
不支持在多个 Incus 安装之间共享相同的 OSD 存储池。
- 使用类型为“erasure”的 OSD 池
要使用类型为“erasure”的 Ceph OSD 池,您必须预先创建 OSD 池。您还必须创建一个单独的类型为“replicated”的 OSD 池,该池将用于存储元数据。这是必需的,因为 Ceph RBD 不支持
omap
。要指定哪个池是“擦除编码”,请将ceph.osd.data_pool_name
配置选项设置为擦除编码池名称,并将source
配置选项设置为复制池名称。
配置选项¶
以下配置选项可用于使用 ceph
驱动程序的存储池以及这些池中的存储卷。
存储池配置¶
键 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
字符串 |
|
要在其中创建新存储池的 Ceph 集群的名称 |
|
字符串 |
- |
OSD 数据池的名称 |
|
字符串 |
|
OSD 存储池的放置组数量 |
|
字符串 |
池的名称 |
OSD 存储池的名称 |
|
布尔值 |
|
是否使用 RBD 轻量级克隆而不是完整的数据集复制 |
|
布尔值 |
|
是否使用 RBD |
|
字符串 |
|
要在卷上启用的 RBD 功能的逗号分隔列表 |
|
字符串 |
|
创建存储池和卷时要使用的 Ceph 用户 |
|
字符串 |
- |
要使用的现有 OSD 存储池 |
|
字符串 |
|
池在创建时是否为空 |
提示
除了这些配置外,您还可以为存储卷配置设置默认值。请参阅 配置存储卷的默认值。
存储卷配置¶
键 |
类型 |
条件 |
默认值 |
描述 |
---|---|---|---|---|
|
字符串 |
基于块的卷,内容类型为 |
与 |
存储卷的文件系统: |
|
字符串 |
基于块的卷,内容类型为 |
与 |
基于块的文件系统卷的挂载选项 |
|
布尔值 |
自定义块卷 |
与 |
启用跨多个实例共享卷 |
|
布尔值 |
自定义卷 |
与 |
启用 ID 偏移覆盖(允许多个隔离的实例附加) |
|
布尔值 |
自定义卷 |
与 |
禁用卷的 ID 映射 |
|
字符串 |
与 |
存储卷的大小/配额 |
|
|
字符串 |
自定义卷 |
与 |
控制何时删除快照(需要类似 |
|
字符串 |
自定义卷 |
与 |
表示快照名称的 Pongo2 模板字符串(用于计划的快照和未命名的快照) [1] |
|
字符串 |
自定义卷 |
与 |
Cron 表达式( |