不同于中心化的Hadoop(HDFS)分布式存储系统 ,Ceph是没有中心节点的,它采用的是CRUSH(Controlled Replication Under Scalable Hashing)算法(用来计算对象存储位置的),理论可以无限扩展。
Ceph 功能:
Ceph主要提供对象存储、设备块存储、以及Ceph FS文件系统,这三种类型的集群存储方案。
Ceph 主要构成:
每个Ceph存储集群,至少包含Ceph Monitor,Ceph Manager, 以及 Ceph OSD(Object Storage Daemon)这三部分。如果搭建Ceph FS文件系统的话,还需要一台Ceph MDS(Metadata Server)文件元数据服务器。
四种服务的含义如下:
- Ceph OSDs: 对象存储守护进程服务器(Object Storage Daemon,ceph-osd),负责数据的存储、复制、恢复、重新平衡的处理。并通过检查其他Ceph OSD守护的心跳,向Ceph Monitor 和 Managers提供监视信息。通常需要至少3个ceph-osd 来保证冗余及高可用性。
- Monitors: 监视器服务器(Monitor,ceph-mon)负责维护集群的状态,及各部件的关联关系,包括监视器、OSD、MDS、CRUSH。Ceph守护进程通过他们之间的关系进行互相协调。并且监视器还负责守护进程和客户端之间的身份验证。通常需要至少3个ceph-mon来保证冗余及高可用性。
- Managers: 管理服务器(Manager,ceph-mgr)主要负责收集其他服务实时性能,然后统一展示。包括存储利用率、性能指标、系统负载等。另外还内置了仪表盘集群管理模块(基于python),并提供REST API 接口,让外部系统可以通过接口获取这些信息。通常需要两个管理服务来保证高可用性。
- MDSs: Ceph 元数据服务器(Ceph Metadata Server,ceph-mds),用于Ceph FS 文件系统,有了元数据就可以当成一块普通的格式化后的硬盘来用。比如Linux下执行 ls 、find 命令的时候,就可以直接利用这些元数据。不再去每个存储节点查询,大大减轻了集群的负担。 注意,Ceph 块设备及 Ceph 的对象存储不使用MDS。
小结:
Ceph 是去中心化的分布式解决方案,将数据作为对象存储在逻辑存储池中。使用 CRUSH 算法,数据“随机”的分布到每台物理机上,Ceph 计算出哪个归置组 (placement group,PG) 应该包含该对象,以及哪个 OSD 应该存储该归置组。