Ceph基础
Ceph同时支持3种存储访问接口,因此被广泛应用于开源私有云计算平台中,为云计算平台提供虚拟机存储和对象访问能力。
Ceph存储系统的设计目标是提供高性能、高可扩展性、 高可用的分布式存储服务。它采用 RADOS在动态变化和异构的存储设 备集群上,提供了一种稳定、可扩展、高性能的单一逻辑对象 存储接口和能够实现节点自适应和自管理的存储系统。数据的放置采取 CRUSH 算法,客户端根据算法确定对象的位置并直接访问存储节点,不需要访 问元数据服务器。CRUSH算法具有更好的扩展性和性能。

术语
Monitor :保存ceph集群的核心状态数据,如集群的节点信息,鉴权信息等。 生产环境需要3个monitor。paxos算法。
Manager:管理ceph集群各节点
OSD :OSD全称Object Storage Daemons,职责就是存数据。一个Ceph集群有很多个OSD。一个OSD一般由一个存储设备支持,也可以由多个存储设备混合支持。
一个最小的ceph集群也要有1个monitor,1个manager和2个osd
BlueStore:osd有两种管理数据的方式(BlueStore和FileStore)。从Luminous 12.2.z 版本开始,默认的也是建议的是BlueStore。
BlueStore是为ceph osd专门设计的。关键特性包括:对存储设备的直接管理,元数据使用RocksDb存储,全量数据校验,压缩存储,可使用多层存储,高性能的copy-on-write。
MDS :MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
CRUSH:Ceph的对象映射算法,确定一个对象被放置的位置。是ceph得以跨越大规模分布式集群的性能瓶颈的关键算法。
Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
Pools:Ceph使用pools存储数据,pools是一个逻辑概念。ceph有一个默认的pool,pools管理pg的数量,复制集的数量和pool的CRUSH规则。一个pool中的pg数量建议是100左右。默认是8
PG : 全称Placement Groups,PG是一个逻辑概念,我们linux系统中可以直接看到对象,但是无法直接看到PG。它在数据寻址时类似于数据库中的索引:Ceph将对象映射进一个PG中,所以当我们要寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了,无需遍历所有对象。而且在数据迁移时,也是以PG作为基本单位进行迁移,ceph不会直接操作对象。
一个OSD会被分成多个PG。引入PG这一层其实是为了更好的分配数据和定位数据。
RADOS :RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
Libradio :Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
CRUSH :CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
RBD(块存储):RBD全称RADOS block device,是Ceph对外提供的块设备服务。
RGW(对象存储):RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容
CephFS(文件系统):CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。
架构
对象存储设备(OSD)是 RADOS 集群的基本存储单元,它的主要功能是存储、备份、恢复数据,并与其他 OSD之间进行负载均衡和心跳检查等。一块硬盘 通常对应一个 OSD,由 OSD对硬盘存储进行管理,但有时一 个分区也可以成为一个 OSD,每个 OSD皆可提供完备和具有强一致性语义的本地对象存储服务。MDS是元数据服务器,向外提供 CephFS在服务时发出的处理元 数据的请求,将客户端对文件的请求转换为对对象的请求。RADOS中可以有多个 MDS分担元数据查询的工作。

RADOS取得高可扩展性的关键在于彻底抛弃了传统存 储系统中的中心元数据节点,另辟蹊径地以基于可扩展哈希 的受控副本分布算法——CRUSH 来代替。
通过 CRUSH 算法,客户端可以计算出所要访问的对象所在的 OSD。