注意
本文档适用于 Ceph 的开发版本。
NFS
CephFS 命名空间可以通过使用 NFS-Ganesha NFS 服务器 的 NFS 协议导出。本文档提供了手动配置 NFS-Ganesha 集群的信息。管理 NFS-Ganesha 集群和 CephFS 导出的最简单和首选方式是使用 ceph nfs ... 命令。有关更多详细信息,请参阅 通过 NFS 导出 CephFS 和 RGW。部署是使用 cephadm 或 rook 完成的。
要求
Ceph 文件系统
NFS 服务器主机上的
libcephfs2、nfs-ganesha和nfs-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-ganesha和nfs-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>