注意

本文档适用于 Ceph 的开发版本。

NFS

CephFS 命名空间可以通过使用 NFS-Ganesha NFS 服务器 的 NFS 协议导出。本文档提供了手动配置 NFS-Ganesha 集群的信息。管理 NFS-Ganesha 集群和 CephFS 导出的最简单和首选方式是使用 ceph nfs ... 命令。有关更多详细信息,请参阅 通过 NFS 导出 CephFS 和 RGW。部署是使用 cephadm 或 rook 完成的。

要求

  • Ceph 文件系统

  • NFS 服务器主机上的 libcephfs2nfs-ganeshanfs-ganesha-ceph 包。

  • 连接到 Ceph 公共网络的 NFS-Ganesha 服务器主机

注意

建议使用 3.5 或更高版本的 NFS-Ganesha 稳定包,以及 pacific (16.2.x) 或更高版本的 Ceph 稳定包。

配置 NFS-Ganesha 以导出 CephFS

NFS-Ganesha 提供了一个文件系统抽象层 (FSAL) 来插入不同的存储后端。FSAL_CEPH 是 CephFS 的插件 FSAL。对于每个 NFS-Ganesha 导出,FSAL_CEPH 使用一个 libcephfs 客户端来挂载 NFS-Ganesha 导出的 CephFS 路径。

使用 CephFS 设置 NFS-Ganesha 涉及设置 NFS-Ganesha 和 Ceph 的配置文件,以及为 NFS-Ganesha 创建的 Ceph 客户端访问 CephFS 的 CephX 访问凭证。

NFS-Ganesha 配置

这是一个配置了 FSAL_CEPH示例 ganesha.conf。它适用于独立的 NFS-Ganesha 服务器,或由某种集群软件(例如 Pacemaker)管理的 NFS-Ganesha 服务器的主动/被动配置。有关选项的重要详细信息作为注释添加到示例配置中。有以下选项

  • 尽可能减少 Ganesha 缓存,因为 libcephfs 客户端(FSAL_CEPH)也会积极缓存

  • 从存储在 RADOS 对象中的 Ganesha 配置文件中读取

  • 将客户端恢复数据存储在 RADOS OMAP 键值接口中

  • 强制使用 NFSv4.1+ 访问

  • 启用读取委托(需要至少 v13.0.1 libcephfs2 包和 v2.6.0 稳定 nfs-ganeshanfs-ganesha-ceph 包)

重要

在某些条件下,使用 CephFS FSAL 的 NFS 访问会失败。这会导致抛出一个错误,显示“输入/输出错误”。在这种情况下,必须为 CephFS 元数据和数据池设置应用程序元数据。通过运行以下命令来执行此操作

ceph osd pool application set <cephfs_metadata_pool> cephfs <cephfs_data_pool> cephfs

libcephfs 客户端配置

libcephfs 客户端的 ceph.conf 包含一个 [client] 部分,其中设置了 mon_host 选项,以便客户端连接到 Ceph 集群的监视器,通常通过 ceph config generate-minimal-conf 生成。例如

[client]
        mon host = [v2:192.168.1.7:3300,v1:192.168.1.7:6789], [v2:192.168.1.8:3300,v1:192.168.1.8:6789], [v2:192.168.1.9:3300,v1:192.168.1.9:6789]

使用 NFSv4 客户端挂载

建议使用 NFSv4.1+ 协议挂载 NFS-Ganesha 导出以获得会话的好处。

挂载 NFS 资源的约定是特定于平台的。以下约定适用于 Linux 和某些 Unix 平台

mount -t nfs -o nfsvers=4.1,proto=tcp <ganesha-host-name>:<ganesha-pseudo-path> <mount-point>

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入