3.3.2 CephFS 访问方式
1. CephFS接入整体介绍
CephFS接入主要分为两类:第一类是通过 POSIX 兼容的自定义客户端接入,主要方式为采用 CephFS内核客户端及 CephFSFUSE(FilesysteminUserspace)客户端挂载;第二类是通用的标准网络文件协议(如NFS、SMB),通过和已有开源组件结合的方式来提供接入,如 NFS-Ganesha及 Samba等。通过以上方式接入 CephFS 后,用户可以像操作本地文件系统一样来操作存储在 Ceph集群上的树状结构目录与文件数据。
特别地,CephFS提供Windows专有客户端(非SAMBA),具体使用及分析可以参考 ceph-dokan在 github上的项目。
2. CephFS 客户端接入(Kernel/Fuse)
本节主要介绍 CephFS私有客户端的接入方式。CephFS有两种私有客户端,分别为内核态 Kernel形式的私有客户端与用户态 Fuse形式的私有客户端。以下简单介绍CephFS的部署与挂载。
(1) CephFS部署
CephFS系统至少需要两个 RADOS池,一个用于数据,另一个用于元数据,见图 3-35。由于元数据多为随机存储,建议使用随机性能好的 SSD 盘作为元数据存储池,从而得到更好的元数据性能水平。
具体部署步骤如下。
# 启动 MDS服务
#ceph-deploy mdscreate <cephfs-master>
# 创建数据Pool
# ceph osd pool create cephfs_data 128
# 创建元数据Pool
#ceph osd pool create cephfs_metadata 128
# 创建并展示fs状态
# ceph fs new cephfs cephfs_metadata cephfs_data# ceph fs ls
# ceph mds stat
图 3-35CephFS集群架构示意
(2) CephFS挂载(不启用 CephX)
◆ 挂载准备
在挂载前,需要确保客户端节点有一份 Ceph 配置文件并确保配置文件有权限。
# mkdir -p -m 755 /etc/ceph
# ssh <user>@<mon-host> "sudo ceph config generate-minimal-conf" | sudo tee /etc/ceph/ceph.conf
#chmod 644/etc/ceph/ceph.conf
◆ Kernel挂载
CephFS的 Kernel挂载方式依赖于 CephFSKernelDriver,一般已集成在高版本内核中,是一个挂载方便、性能较高的接入方式。可以通过如下命令检查当前内核是否支持CephFSKernelDriver。
#检查内核是否⽀持 CephFS Kernel Driver# stat /sbin/mount.ceph
如已支持 KernelDriver,则具体挂载步骤操作如下。
# 本地创建挂载点
#mkdir /mnt/Cephfs
# 使⽤linux命令mount、umount进⾏挂载、卸载
#mount-t ceph<mon-host>:<mon-port>:/ <mount_point>
如需要设置操作系统启动时自动挂载 CephFS,在客户端节点的 /etc/fstab文件中加入挂载行即可,挂载系统为Ceph。
◆ Fuse挂载
如当前客户端系统未加载 CephFSKernelDriver,可以使用用户态客户端ceph-fuse进行挂载。
# 安装ceph-fuse客户端软件
#yum install ceph-fuse
# 使⽤ceph-fuse命令挂载
#ceph-fuse-m<mon-host>:<mon-port> /mnt/Cephfs
# 使⽤umount命令卸载
#umount /mnt/cephfs
如需要设置操作系统启动时自动挂载ceph-fuse,可在客户端节点的/etc/fstab文件中加入以下行。
none /mnt/mycephfsfuse.ceph defaults0 0
(3) CephX认证挂载
如已启用 CephX鉴权机制,则需要为客户端生成Key。此处假设创建新用户cephfs,并允许用户访问 CephFS池。
#在 Ceph集群上执⾏命令创建cephfs⽤户
# cephauth get-or-create client.cephfs mon 'allow*' mds 'allow*' mgr'allow *' osd 'allow *' -o /etc/ceph/ceph.client.admin.keyring
# 在客户端获得client.cephfs密钥
#ceph authget-key client.cephfs >/etc/ceph/cephfskey
# 执⾏挂载命令(以 KernelDriver⽅式为例)
# mount -t ceph <mon-host>:<mon-port>:/ <mount_point> -oname=cephfssecretfile=/etc/ceph/cephfskey
3. CephFSNFS/Samba 接入(lib 库访问)
CephFS提供了一套lib库(libcephfs),NFS-Ganesha、Samba等多个开源项目已经集成libcephfs,从而使得 CephFS集群可以通过 NFS、SMB 协议提供文件存储服务。详情可见 NFS-Ganesha、Samba等各开源组件介绍,图 3-36~图 3-38分别为 Kernel客户端接入方式与 NFS-Ganesha、Samba 接入方式的架构示意图,便于读者比较理解。
图 3-36Kerne客户端架构示意
图 3-37 NFS-Ganesha 接入架构示意
图 3-38Samba接入架构示意