【存储ceph】 ceph概念与原理
CEPH概念
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
CEPH架构
经典的Ceph模块架构图
- RBD: RADOS block device,提供的块设备服务。
- RGW:RADOS gateway,对外提供的对象存储服务,接口与S3和Swift兼容
- CephFS:Ceph File System,对外提供的文件系统服务
- RADOS:Reliable Autonomic Distributed Object Store,实现数据分配、Failover等集群操作
- Libradio:RADOS库
CEPH核心组件
Monitor:
集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据
负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置
OSD
Object Storage Device,存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。
**MDS**
Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。
PG状态表
Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
状态 | 描述 |
---|---|
Activating | Peering已经完成,PG正在等待所有PG实例同步并固化Peering的结果(Info、Log等) |
Active | 活跃态。PG可以正常处理来自客户端的读写请求 |
Backfilling | 正在后台填充态。 backfill是recovery的一种特殊场景,指peering完成后,如果基于当前权威日志无法对Up Set当中的某些PG实例实施增量同步(例如承载这些PG实例的OSD离线太久,或者是新的OSD加入集群导致的PG实例整体迁移) 则通过完全拷贝当前Primary所有对象的方式进行全量同步 |
Backfill-toofull | 某个需要被Backfill的PG实例,其所在的OSD可用空间不足,Backfill流程当前被挂起 |
Backfill-wait | 等待Backfill 资源预留 |
Clean | 干净态。PG当前不存在待修复的对象, Acting Set和Up Set内容一致,并且大小等于存储池的副本数 |
Creating | PG正在被创建 |
Deep | PG正在或者即将进行对象一致性扫描清洗 |
Degraded | 降级状态。Peering完成后,PG检测到任意一个PG实例存在不一致(需要被同步/修复)的对象,或者当前ActingSet 小于存储池副本数 |
Down | Peering过程中,PG检测到某个不能被跳过的Interval中(例如该Interval期间,PG完成了Peering,并且成功切换至Active状态,从而有可能正常处理了来自客户端的读写请求),当前剩余在线的OSD不足以完成数据修复 |
Incomplete | Peering过程中, 由于 a. 无非选出权威日志 b. 通过choose_acting选出的Acting Set后续不足以完成数据修复,导致Peering无非正常完成 |
Inconsistent | 不一致态。集群清理和深度清理后检测到PG中的对象在副本存在不一致,例如对象的文件大小不一致或Recovery结束后一个对象的副本丢失 |
Peered | Peering已经完成,但是PG当前ActingSet规模小于存储池规定的最小副本数(min_size) |
Peering | 正在同步态。PG正在执行同步处理 |
Recovering | 正在恢复态。集群正在执行迁移或同步对象和他们的副本 |
Recovering-wait | 等待Recovery资源预留 |
Remapped | 重新映射态。PG活动集任何的一个改变,数据发生从老活动集到新活动集的迁移。在迁移期间还是用老的活动集中的主OSD处理客户端请求,一旦迁移完成新活动集中的主OSD开始处理 |
Repair | PG在执行Scrub过程中,如果发现存在不一致的对象,并且能够修复,则自动进行修复状态 |
Scrubbing | PG正在或者即将进行对象一致性扫描 |
Unactive | 非活跃态,PG不能处理读写请求 |
Unclean | 非干净态,PG不能从上一个失败中恢复 |
Stale | 未刷新态。PG状态没有被任何OSD更新,这说明所有存储这个PG的OSD可能挂掉, 或者Mon没有检测到Primary统计信息(网络抖动) |
Undersized | PG当前Acting Set小于存储池副本数 |
Degraded
每个PG有三个副本,分别保存在不同的OSD中,在非故障情况下,这个PG是active+clean 状态。降级就是在发生了一些故障比如OSD挂掉之后,Ceph 将这个 OSD 上的所有 PG 标记为 Degraded
参考:
[https://www.jianshu.com/p/cc3ece850433][https_www.jianshu.com_p_cc3ece850433]
还没有评论,来说两句吧...