CephFS 驱动¶
CephFS 驱动允许 manila 导出由 Ceph 的文件系统 (CephFS) 支持的共享文件系统,使用 Ceph 网络协议或 NFS 协议。客户端需要本地 Ceph 客户端或 NFS 客户端才能挂载文件系统。
当客户端使用本地 Ceph 协议访问 CephFS 时,访问控制通过 Ceph 的 cephx 身份验证系统进行控制。如果用户请求对 ID 的共享访问权限,Ceph 会创建一个相应的 Ceph 身份验证 ID 和密钥(如果它们尚不存在),并授权该 ID 访问共享。然后,客户端可以使用该 ID 和密钥挂载共享。要了解有关配置 Ceph 客户端以访问使用此驱动程序创建的共享的更多信息,请参阅 Ceph 文档
当客户端通过 NFS 访问 CephFS 时,NFS-Ganesha 服务器(或 CephFS NFS 服务)会调解对 CephFS 的访问。该驱动程序通过管理 NFS-Ganesha 服务器的导出,从而启用访问控制。
支持的操作¶
以下操作支持 CephFS 后端
创建、删除、更新和列出共享
允许/拒绝访问共享
仅支持
cephx访问类型用于 CephFS 本地协议。仅支持
ip访问类型用于 NFS 协议。read-only和read-write访问级别受支持。
扩展/缩小共享
管理/取消管理共享
管理/取消管理共享快照
创建、删除、更新和列出快照
创建、删除、更新和列出共享组
删除和列出共享组快照
重要提示
共享组快照创建不再受主流 CephFS 支持。此功能已从 manila W 版本中删除。
先决条件¶
重要提示
由 CephFS 支持的 manila 共享的质量仅与底层文件系统一样好。在配置 Ceph 集群时要小心,并参考 Ceph 文档 中有关 CephFS 使用的最新指南。
Ceph 测试矩阵¶
随着 Ceph 和 Manila 的不断发展,测试和支持两个项目都支持的发布组合至关重要。但是,社区带宽不足以涵盖所有这些组合。为了简单起见,我们专注于测试(因此支持)当前的 Ceph 活动发布版本。请查看 Ceph 活动发布版本的列表 此处。
以下是 Ceph 发布版本与此项目测试的当前状态。诸如 devstack-plugin-ceph 和 tripleo 等相邻组件也添加到下表中。这些项目的贡献者可以确定哪些版本的 ceph 已通过 manila 测试和支持,但此处呈现其状态是为了方便访问。
OpenStack 发布版本 |
Manila |
devstack-plugin-ceph |
|---|---|---|
2024.1 (“Caracal”) |
Reef |
Reef |
2024.2 (“Dalmatian”) |
Reef |
Reef |
2025.1 (“Epoxy”) |
Squid |
Squid |
2025.2 (“Flamingo”) |
Squid |
Squid |
此外,预计可用于 manila 的 Ceph 客户端版本与 Ceph 服务器版本对齐。强烈建议不要混合服务器和客户端版本。
在使用的 NFS Ganesha 驱动程序的情况下,也建议使用与所选 Ceph 版本对齐的版本。
通用先决条件¶
配置了文件系统的 Ceph 集群(请参阅 创建 ceph 文件系统,了解如何创建文件系统。)
在运行 manila-share 服务的服务器上安装了
python3-rados和python3-ceph-argparse包。Ceph 集群的公共网络与运行 manila-share 服务的服务器之间的网络连接。
启用 Ceph 后端的快照支持¶
从 Ceph Nautilus 开始,在 Ceph 上创建的所有新文件系统默认情况下都启用快照。如果您已升级 Ceph 集群并希望在现有文件系统上启用快照,则可以执行以下操作
ceph fs set {fs_name} allow_new_snaps true
在 manila.conf 中配置 CephFS 后端¶
空间考虑因素¶
CephFS 驱动程序向 manila 报告 Ceph 集群中可用的总容量和空闲容量,以允许配置。所有 CephFS 共享都是稀疏配置的,即空共享不会消耗集群中的任何重要空间。CephFS 驱动程序不允许通过 manila 控制过度订阅。因此,只要有空闲空间,配置将继续进行,最终这可能会导致 Ceph 集群过度配置,并且如果共享被填充到容量,您可能会耗尽空间。建议使用 Ceph 的监控工具来监控空间使用情况,并在需要时添加更多存储,以满足配置的 manila 共享的空间需求。您可以使用驱动程序配置选项 reserved_share_percentage 来防止 manila 填满 Ceph 集群,并允许现有共享增长。
已知限制¶
CephFS 驱动程序实例,表示为 manila.conf 中的后端驱动程序部分,需要一个唯一的 Ceph auth ID 用于后端 Ceph 文件系统。使用非唯一的 Ceph auth ID 将导致驱动程序无意中驱逐使用相同的 Ceph auth ID 连接到后端的其他 CephFS 客户端。
快照是只读的。用户可以从挂载的共享中的
.snap/{manila-snapshot-id}_{unknown-id}文件夹中读取快照的内容。
安全¶
每个共享的数据都映射到不同的 Ceph RADOS 命名空间。来宾仅限于访问该特定的 RADOS 命名空间。https://docs.ceph.net.cn/en/2025.2/cephfs/file-layouts/
配置参考¶
配置选项 = 默认值 |
描述 |
|---|---|
[DEFAULT] |
|
|
(字符串) 要使用的 ceph auth 身份的名称。 |
|
(字符串) 要使用的集群的名称(如果不是默认值“ceph”)。 |
|
(字符串) ceph.conf 文件的完整路径。 |
|
(字符串) 要使用的协议助手类型。默认值为 CEPHFS。 |
|
(布尔值) NFS-Ganesha 服务器是否远离驱动程序。 |
|
(字符串) NFS-Ganesha 服务器的 IP 地址。 |
|
(字符串) 要使用的协议助手类型。默认值为 CEPHFS。 |
|
(字符串) 在远程 NFS-Ganesha 服务器主机上进行身份验证的用户名。 |
|
(字符串) 驱动程序主机私有 SSH 密钥文件的路径。 |
|
(字符串) 作为远程 Ganesha 服务器主机中用户的密码。如果配置了“cephfs_ganesha_path_to_private_key”,则不需要此项。 |
|
(字符串) 导出共享的 IP 列表。如果未提供,则将使用“cephfs_ganesha_server_ip”的值来构造共享导出位置。 |
|
(字符串) CephFS 卷、快照和快照组的读/写/执行权限模式,以八进制表示,如 Linux “chmod” 或 “umask” 命令中所示。 |
|
(字符串) 要使用的文件系统名称(如果有多个文件系统在集群中)。 |
|
(字符串) 提供一个唯一的字符串值,以使驱动程序在启动期间确保其创建的所有共享。确保将重新导出共享,除非在 CephFS 上进行了管理修改,否则此操作不总是必需的。 |
|
(字符串) 要使用的 NFS 集群的 ID。 |