带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(二)-阿里云开发者社区

开发者社区> 人民邮电出版社> 正文
登录阅读全文

带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(二)

简介: 《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS

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



 image.png

图 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命令mountumount进⾏挂载、卸载

#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 接入方式的架构示意图,便于读者比较理解。

image.png

图 3-36Kerne客户端架构示意

image.png

图 3-37 NFS-Ganesha 接入架构示意

 

 image.png


图 3-38Samba接入架构示意

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: