4.9. 使用 Ceph 对象网关配置 NFS
使用 Ceph 对象存储后端的 NFS 不是一个全面的 NFS 服务。其主要目的是,通过 NFS 文件系统将数据利用文件与 Ceph 对象存储进行对象存储,从而帮助无缝地迁移旧应用。因此,数据可以被 S3 端点作为 S3 存储桶访问。对于具有高可用性和透明故障转移等功能的完整 NFS 解决方案,您应该将 NFS 与 CephFS 后端一起使用。
NFS 服务使用 Cephadm 部署有 Ceph Object Storage 后端。NFS 的配置存储在 nfs-ganesha 池中,导出通过命令行界面(CLI)命令和 Ceph 控制面板进行管理。如需更多信息,请参阅使用 Ceph Object Storage 后端部署 NFS 服务 ,将命名空间导出到 NFS- Ganesha,以及管理 NFS Ganesha 导出。
Ceph 对象网关命名空间可以通过基于文件的 NFSv4 协议和传统的 HTTP 访问协议(S3 和 Swift)导出。特别是,现在可以配置 Ceph 对象网关,以便在嵌入 NFS-Ganesha NFS 服务器中时提供基于文件的访问。
在使用基于 Cephadm 或 Rook 的部署时,仅支持 NFSv4 协议。
命名空间约定
NFS 符合 Amazon Web Services (AWS)分层命名空间惯例,它将 UNIX 样式的路径名称映射到 S3 存储桶和对象。
附加命名空间的顶级由 S3 存储桶组成,以 NFS 目录表示。文件和目录(对应于存储桶)各自表示为对象,遵循 S3 前缀和分隔符约定。/ 是唯一支持的路径分隔符。
例如,如果 NFS 客户端在 /nfs
挂载了一个 RGW 命名空间,那么 NFS 命名空间中的文件 /nfs/mybucket/www/index.html
对应于 bucket/container mybucket
中的 RGW 对象 www/index.html
。
支持的操作的限制
Ceph Object Storage NFS 接口支持文件和目录的大多数操作,但有以下限制:
- 不支持链接,包括符号链接。
不支持 NFS ACL。
- 支持 UNIX 用户和组所有权和权限。
目录可能无法移动/重新命名。
- 可在目录之间移动文件。
仅支持 full, sequential write I/O
- 写入操作被限制为 上传。
- 许多典型的 I/O 操作(如编辑文件)将失败,因为它们执行非排序的存储。
- 有些文件实用程序按顺序编写,例如 GNU tar 的一些版本可能会因为不常的非连续存储而失败。
-
当通过 NFS 挂载时,顺序应用程序 I/O 通常可以通过同步挂载选项按顺序写入 NFS 服务器。例如,Linux 中的
同步
。 - 无法同步挂载的 NFS 客户端,例如 MS Windows,将无法上传文件。
4.9.1. 将命名空间导出到 NFS-Ganesha
若要配置新的 NFS Ganesha 导出以用于 Ceph 对象网关,您必须使用 Red Hat Ceph Dashboard。如需了解更多详细信息,请参阅 Red Hat Ceph Storage 仪表板指南中的在 Ceph 仪表板上管理NFS Ganesha 导出 部分。
对于使用 Ceph 对象网关的现有 NFS 环境,目前不支持从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5。
红帽支持使用 Ceph 对象网关导出 NFS 版本 4。
您只能使用命令行界面(CLI)创建用户级 NFS Ganesha 导出。
先决条件
- 正在运行的 Red Hat Ceph Storage
- 已创建的用户。如需更多信息,请参阅 创建用户。
流程
登录 Cephadm shell。
语法
[root@host01 ~]# cephadm shell
在根目录中创建用户级导出。
语法
ceph nfs export create rgw --cluster-id NFS_CLUSTER_NAME --pseudo-path PATH_FROM_ROOT --user-id USER_ID
Example
[ceph:root@host01 /]# ceph nfs export create rgw --cluster-id cluster1 --pseudo-path root/testnfs1/ --user-id nfsuser
挂载 NFS。
语法
mount -t nfs IP_ADDRESS:PATH_FROM_ROOT -osync MOUNT_POINT
Example
[ceph:root@host01 /]# mount -t nfs 10.0.209.0:/root/testnfs1 -osync /mnt/mount1
对于大型上传 >200 GB,使用 -osync
挂载可能会影响输入/输出操作。将 S3 与多部分搭配使用,以上传此类对象。
如果在存储桶上运行 setattr
,它将静默地阻止对代表存储桶的路径设置属性。