No.1
引言
Ceph FS(File System)作为Ceph中最早的开发功能,反而是最不成熟的功能,不过随着版本的迭代现在Cephfs功能也越来越多的开始出现在生产环境中,所以也是应该好好学一学Cephfs的时候了,那么让我们开始学习吧。
No.2
Cephfs工作原理
2.1
Cephfs 介绍
Ceph FS(File System)文件系统是POSIX兼容的文件系统,它使用RADOS群集存储其数据。Ceph中要启用Cephfs需要启用MDS服务,MDS服务工作方式有主主方式和主备方式。
Ceph块设备和RADOS网关不需要元数据服务。Cephfs需要创建两个pool,一个pool存放实际数据,一个pool存放元数据,架构图如下:
2.2
读取文件原理
CephFS读取文件时,客户端首先联系MON,进行身份验证后,将查询活跃MDS的文件元数据,然后直接与OSD通信来访问文件或目录的对象,如下图所示:
2.3
MDS工作模式
Ceph支持一个集群中最少有一个活跃的MDS,多个备用MDS。也支持同时多个活跃MDS,具体几种模式如下:
单活MDS模式
对外提供服务只有一个active mds。
所有用户的请求都只落在一个active mds上。
如果只创建一个MDS默认就是单活模式
单活MDS高可用模式
对外提供服务只有一个active mds, 多个standby mds。
active mds挂掉,standby mds会立马接替,保证集群高可用性。
如果只创建多个MDS,第一个就是active MDS,其它就是standby mds。
高可用模式有两种:
standby:可以理解成冷备,该模式不备份元数据,一旦active mds挂了,备份mds replay()元数据到缓存,需要消耗一些时间,如果是大规模环境,切换速度比较缓慢,对于实际业务系统会造成影响。这也是创建多个MDS后的默认模式。
standby_replay:可以理解成热备,standby_replay会实时根据active的mds元数据日志进行同步更新,这样就能加快切换的速率。这个这个模式需要通过指定参数为该模式。
下图为默认创建了3个MDS,模式为多活高可用冷备模式。
如果想设定为standby_replay模式,需要配置daemon需要先开启文件系统allow_standby_replay的参数:
#ceph fs set cephfs allow_standby_replay true
只要standby守护进程可用,mon就会指派它们跟随文件系统上的可用等级。
温馨
提醒
1
在Ceph nautilus版本中重新 设计了开启standby replya机制,原来的standby replay配置参数mds_standby_for_*,mon_force_standby_active和 mds_standby_replay不再使用,只要使用以上命令开启即可。
建议至少将其设置为“ max _ mds + 1”。因此,可以使用一个普通的standby守护进程来替换standby-replay守护进程。最佳建议是如果使用standby-replay,那么每个活动的MDS都应该有一个standby-replay守护进程。
以下为配置了standby_replay模式的MDS。
多活MDS模式
多活也叫:multi-mds 、 active-active MDS
每个 CephFS 文件系统默认情况下都只配置一个活跃 MDS 守护进程。在大型系统中,为了扩展元数据性能你可以配置多个活跃的 MDS 守护进程,它们会共同承担元数据负载。当默认运行的单个MDS上的元数据性能出现瓶颈时,应配置多个活动的MDS守护程序。
添加更多守护程序可能不会提高所有工作负载的性能。通常,除非单个应用程序并行执行大量元数据操作,否则运行在单个客户端上的单个应用程序将不会受益于MDS守护程序数量的增加。
即使有多个活动的MDS守护程序,如果运行活动的守护程序的任何服务器发生故障,高可用性