Ceph是统一存储系统,支持三种接口。
Ceph的底层是RADOS,它的意思是“A reliable, autonomous, distributed object storage”。 RADOS由两个组件组成:
RADOS具有很强的扩展性和可编程性,Ceph基于RADOS开发了 Object Storage、Block Storage、FileSystem。Ceph另外两个组件是:
Ceph存储集群从Ceph客户端接收数据——无论是通过Ceph块设备、Ceph对象存储、Ceph文件系统还是使用librados创建的自定义实现——这些数据被存储为RADOS对象。每个对象存储在对象存储设备上。Ceph OSD daemon处理存储驱动器上的读、写和复制操作。对于较旧的Filestore后端,每个RADOS对象都作为一个单独的文件存储在传统的文件系统(通常是XFS)上。使用新的和默认的BlueStore后端,对象以一种类似于单片数据库的方式存储。
Ceph OSD Daemons将数据作为对象存储在一个平面命名空间中(例如,没有目录层次结构)。对象具有标识符、二进制数据和由一组名称/值对组成的元数据。语义完全取决于Ceph客户端。例如,cepfs使用元数据来存储文件属性—文件所有者、创建日期、最后修改日期等等。
Ceph也是分布式存储系统,它的特点是:
数据多副本。可配置的per-pool副本策略和故障域布局,支持强一致性。
没有单点故障。可以忍受许多种故障场景;防止脑裂;单个组件可以滚动升级并在线替换。
所有故障的检测和自动恢复。恢复不需要人工介入,在恢复期间,可以保持正常的数据访问。
并行恢复。并行的恢复机制极大的降低了数据恢复时间,提高数据的可靠性。
Client和Server直接通信,不需要代理和转发
多个OSD带来的高并发度。objects是分布在所有OSD上。
负载均衡。每个OSD都有权重值(现在以容量为权重)。
client不需要负责副本的复制(由primary负责),这降低了client的网络消耗。
Ceph依赖于Ceph客户端和Ceph OSD守护进程对集群拓扑的了解,集群拓扑包括5个map,统称为“Cluster Map”:
up
和in
状态。查看MDS映射,执行ceph fs dump命令。每个map维护其操作状态更改的迭代历史。Ceph Monitors维护集群映射的主副本,包括集群成员、状态、更改和Ceph存储集群的整体运行状况。