「CEPH」- CephFS(文件系统)

解决方案

CephFS,基于 RADOS 服务,是个高性能分布式并行文件系统,是个符合 POSIX 标准的文件系统,是一个高可用、可扩展的文件系统。

(注:该图示的含义是 CephFS 能够直接挂载使用,并且 CephFS 能够向 Client 提供 NFS、CIFS 等等多种文件系统)

原理简述

CephFS 将文件元数据与文件内容数据进行分离存储,以降低复杂性并提高稳定性;

Metadata Server(MDS)

元数据管理:
CephFS 依赖运行 MDS 来协调对 RADOS Cluster 的访问,并管理与其文件相关的元数据。
Ceph MDS 用于处理文件元数据信息,最终还是以对象存储在 Ceph Cluster 中;
Ceph MDS 管理存储在 CephFS 中与文件相关的元数据,并协调对共享Ceph存储集群的访问。

Metadata(元数据)主要负责记录数据的属性,如文件存储位置、文件大小和存储时间等,负责资源查找、文件记录、存储位置记录、访问授权等功能。CephFS,既然是文件系统,其也需要进行 Metadata 的处理;

CephFS 使用 Metadata Server(MDS),来管理文件系统的命名空间,以及客户端如何访问到后端 OSD 数据存储中;

MDS(Metadata Server)以一个 Daemon 进程运行一个服务,即元数据服务器,主要负责 CephFS 集群中文件和目录的管理,确保它们的一致性,MDS 也可以像 MON 或 OSD 一样多节点部署实现冗余;

在使用 CephFS 前首先要安装和启动 ceph-mds 服务;

CephFS 主要依赖 MDS 提供服务,MDS 提供了一个包含智能缓存层的一致性文件系统,MDS 不会直接向客户端提供任何数据,所有的数据都只由后端 OSD 提供,这样的好处就是极大地降低了自身读写次数。除此之外,它还具备动态子树划分的特点,MDS 守护进程可以加入和退出,快速地接管故障节点。MDS 守护进程可以被配置为活跃或被动状态,活跃的 MDS 被称为主 MDS,其他的 MDS 进入 Standby 状态,当主 MDS 节点发生故障时,第二 MDS 节点将接管其工作并被提升为主节点;

Metadata 信息采用在内存中缓存的方式响应外部访问请求

Cllient

libcephfs,对多客户端支持扮演重要的角色。Ceph 允许客户端通过 libcephfs 直接与 CephFS 进行交互;
CephFS 支持原生 Linux 内核驱动,所以能够在 Linux 中使用 mount 挂载 CephFS;

文件内容数据:
Ceph Cluster 用于存储文件内容数据,用户数据以对象存储在 Ceph Cluster 中;

特性特征

本地挂载:文件系统的主要特点就是客户端可以很方便地挂载到本地使用;
数据共享:文件系统还可以提供资源共享的作用;
高可用性:CephFS 存储类型继承 RADOS 的容错性和扩展性,相比 NFS 或 CIFS,Ceph FS 能提供副本冗余,具有数据高可靠的特性;

POSIX 兼容性

CephFS的目标是尽可能与POSIX标准文件系统一样。两个不同主机上运行的进程应与在同一主机上运行的进程相同,即在不同主机上对文件读写、实时同步的效果和操作与在同一台主机上的效果和操作一样。例如,与许多其他常见的网络文件系统(如NFS)相比,CephFS保证了客户端强大的缓存一致性。但是,在某些情况下,CephFS与严格的POSIX语义有所不同。

多个文件系统

早期,禁止在一个集群中创建多个CephFS,因为创建多个CephFS可能会使得MDS或者客户端服务异常。

现在,从 Pacific 版本开始,能够支持多文件系统,并且稳定且随时可用。

高可用性

Ceph MDS

CephFS 至少需要运行一个MDS守护进程(ceph-mds)。允许以主备的方式运行多个 MDS 服务。同时,多个 MDS 也支持以多主模式运行;

为了使生产环境下的数据可用,你要采用多MDS节点部署方式。部署完成后,MDS节点分为主节点和备节点。当主节点异常时,备节点将接管客户端的访问,保证数据持续提供。默认情况下,CephFS仅使用一个活跃的MDS守护进程。但是,你可以给文件系统配置为使用多个活跃的的MDS守护进程,以处理更大的工作负载。

数据冗余

RADOS底层需要提供两个后端存储池,其中一个存储数据,另一个存储元数据。在创建MDS的时候,要首先创建这两个数据池,且一定要做好对存储数据池的保护,比如采用更高的副本级别,这个池中的任何数据丢失都会导致整个文件系统无法访问。

另外,你也可以考虑使用延迟较低的存储设备,例如固态驱动器(SSD)磁盘,因为这直接影响到客户端操作的反馈延迟。