2.Ceph的功能模块
Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下: Client客户端:负责存储协议的接入,节点负载均衡 MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map MDS元数据服务:负责保存文件系统的元数据,管理目录结构 OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。
3.Ceph的资源划分Ceph采用crush算法,在大规模集群下,实现数据的快速、准确存放,同时能够在硬件故障或扩展硬件设备时,做到尽可能小的数据迁移,其原理如下:当用户要将数据存储到Ceph集群时,数据先被分割成多个object,(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。由于object的数量很多,为了有效减少了Object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group ):PG用来管理object,每个object通过Hash,映射到某个pg中,一个pg可以包含多个object。Pg再通过CRUSH计算,映射到osd中。如果是三副本的,则每个pg都会映射到三个osd,保证了数据的冗余。
4.Ceph的数据写入Ceph数据的写入流程
数据通过负载均衡获得节点动态IP地址;
通过块、文件、对象协议将文件传输到节点上;
数据被分割成4M对象并取得对象ID;
对象ID通过HASH算法被分配到不同的PG;
不同的PG通过CRUSH算法被分配到不同的OSD
5.Ceph的特点
Ceph支持对象存储、块存储和文件存储服务,故 称为统一存储。
采用CRUSH算法,数据分布均衡,并行度高,不需要维护固定的元数据结构;
数据具有强一致,确保所有副本写入完成才返回确认,适合读多写少场景;
去中心化,MDS之间地位相同,无固定的中心节点
Ceph存在一些缺点:
去中心化的分布式解决方案,需要提前做好规划设计,对技术团队的要求能力比较高。