分布式存储系统之Ceph基础

Ceph基础概述
Ceph是一个对象式存储系统 , 所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据 , 并以其为原子单元完成数据的存?。欢韵笫莸牡撞愦娲⒎裼啥喔鲋骰槌傻拇娲⒓海桓眉罕怀浦猂ADOS(Reliable Automatic Distributed Object Store)集群;翻译成中文就是可靠的、自动化分布式对象存储系统;
Ceph架构

分布式存储系统之Ceph基础

文章插图
提示:librados是RADOS存储集群的API,它支持C、C++、java、python和php等变成语言;RADOSGW、RBD、CEPHFS都是RADOS存储服务的客户接口;它们分别把rados存储服务接口librados从不同角度做了进一步的抽象,因而各自适用于不同的应用场景;RADOSGW是将底层rados存储服务抽象为以RESTful风格接口提供对象存储服务 , 适用于存取对象数据的接口,比如web服务;RBD是将底层RADOS存储服务抽象为块设备的存储设备;主要用于虚拟化,比如给虚拟机提供硬盘;CEPHFS是将底层RADOS抽象为一个文件系统接口 , 供其他主机使用;
分布式存储系统之Ceph基础

文章插图
提示:RADOS集群主要由Monitors、Managers、Ceph OSDs、Ceph MDSs这几个组件组成;其中Monitor主要作用是监控整个集群的状态,健康与否等;它拥有整个集群的运行图(monitor map、manager map、OSD map、和CRUSH map);除此之外,它还负责维护集群各组件之间以及客户端接入RADOS集群存取数据时的认证信息和实行认证;简单讲mon组件就是管理和维护其他组件状态以及接入RADOS集群的认证信息并实行认证,一旦mon组件所在主机宕机,那么整个集群将不可用;有点类似k8s里的etcd;所以为实现冗余和高可用性 , 通常在集群我们部署大于1的奇数个mon(因为它使用Paxos协议,为防止网络分区等原因 , 保证服务的正常可用);manager组件主要负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载等,Ceph集群信息,包括基于web的Ceph管理器仪表板和REST API 。高可用性通常需要至少两个mgr组件 。OSD组件是存储数据,处理数据复制、恢复、再平衡,并提供一些监视信息的组件;Ceph通过检查其他Ceph OSD进程来监控和管理心跳;通常为了高可用和冗余,至少需要3个ceph osd(即3块硬盘 , ceph为了每一个osd能够被单独使用和管理,每一个osd都会有一个单独的守护进程ceph-osd来管理,即服务器上有多少个osd,就会有多少个ceph-osd进程,一个ceph-osd进程就对应一个osd,一个osd就对应一块磁盘设备);MDS是ceph元数据服务组件,主要实现分布式文件系统的控制层面,数据和元数据的存取依然由RADOS负责,即用户使用cephfs文件系统存取数据,用户存储的文件的元数据该怎么存放、怎么管理等都由MDS组件负责;当然如果我们没有使用cephfs文件系统的必要,对应mds组件也可以不用部署;所以mds组件不是必须组件;
Ceph数据抽象接口(客户端中间层)
Ceph存储集群提供了基础的对象数据存储服务,客户端可基于RADOS协议和librados API直接与存储系统交互进行对象数据存?。?nbsp;librados提供了访问RADOS存储集群支持异步通信的API接口,支持对集群中对象数据的直接并行访问,用户可通过支持的编程语言开发自定义客户端程序通过RADOS协议与存储系统进行交互;客户端应用程序必须与librados绑定方可连接到RADOS存储集群 , 因此,用户必须事先安装librados及其依赖后才能编写使用librados的应用程序; librados API本身是用C ++编写的 , 它额外支持C、Python、Java和PHP等开发接口;当然,并非所有用户都有能力自定义开发接口以接入RADOS存储集群的需要,为此,Ceph也原生提供了几个较高级别的客户端接口,它们分别是RADOS GateWay(RGW)、ReliableBlock Device(RBD)和MDS(MetaData Server),分别为用户提供RESTful、块和POSIX文件系统接口;
Ceph文件系统
分布式存储系统之Ceph基础

文章插图
不同于传统文件系统的地方是 , CephFS MDS在设计的初衷之一即高度可扩展的能力,其实现机制中,数据由客户端以分布式方式通过多路OSD直接存储于RADOS系统 , 而元数据则由MDS组织管理后仍然存储于RADOS系统之上; MDS仅是实现了分布式文件系统的控制平面,数据和元数据的存取依然由RADOS负责;CephFS依赖于独立运行的守护进程ceph-mds向客户端提供服务;

推荐阅读