ceph相关概念
cpeh的相关概念:
rados:本身就是一个完整的分布式对象存储系统,所有存储在ceph系统中的用户最终都是由这层来存储的,为了方便用户轻松使用rados存储系统,rados通过librados库对外开放三种类型的存储接口,即ceph-fs文件系统存储,rbd块存储以及radosgw对象存储。
librabdos:对rados进行抽象和封装,并向上层提供API,方便直接基于RADOS进行存储和研发。
三大存储类型:
ceph-fs:网络存储,ceph-fs是ceph最先研发的文件存储系统,本身rados就内置了ceph-fs接口,而不需要借助librados
rbd:块存储,广泛用于k8s及云计算openstack等。
radosgw:对象存储
mon:ceph-monitor负责监视整个集群的的运行状况,如各节点的状态信息,集群配置信息等,ceph monitor map包括monitor map, osd map, pg map, mds map, crush等,这些map称为集群Map
mgr: Ceph 12.2 主推的功能之一,Ceph-MGR目前的主要功能是把集群的一些指标暴露给外界使用。
pool:资源池,存储对象的逻辑分区。
pg:归置组,由pg映射到数据存储的实际单元osd中,该算法是有crush实现的。将pg id作为改算法数据,获取n个ods集合,集合第一个osd作为主osd,其他的作为从osd,N是pool下的副本数。
ods:ceph-osd将数据以对象的形式存储到汲取汇总每个节点的物理磁盘上,有两种存储方式,filestroage(旧版本)和bluestroage(新版本),filestroage是把数据存在文件系统上,及ods上的盘事先必须先格式化好并分配好文件系统,bluestroage是直接把数据存在裸盘上,并ceph会在这个裸盘上的某一个地方部署一个文件系统(bluefs),并在这个文件系统上运行rocksdb,用来存储对象的元数据。
算法crush:ceph通过crush算法为数据对象挑选存储设备并存储。
pg状态:
最常见:active+clean
active:主和副osd处于就绪状态,可提供服务。
一般peering操作完成后进入active状态。
clean:主和副osd处于就绪状态,所有对象的副本均符合期望,并且pg的活动集和上行集是为同一组osd
活动集:
由pg当前的主osd和副osd组成,这组osd负责处理此pg的io操作
上行集:
根据crush的工作方式,当pg的某个osd发生变动或者扩展时,这个新的osd集就称为上行集(up set),上行集需要从当前的活动集复制数据对象到新的osd上,当数据完全同步完成后,上行集就成了新的活动集,而pg也转成active状态。
peering:一个pg的所有osd必须就他们持有的数据对象状态达成一致,而这对等“peering”即osd从不一致到一致的过程就是peering
degraded:在某个osd标记为“down”时,所有映射到此pg的都转换成“降级”状态、
此osd重新启动并完成peering后,pg转成clean状态。
一旦osd标记为down超过5分钟,它将被标记出集群,而后ceph将对降级的pg启动恢复操作,知道所有降级的pg重新clean状态。
在其内部osd上某对象不可用或悄然奔溃时,pg也会标记为降级装填,知道对象从某个权威副本正确恢复。
stale:每个osd都要周期向rados集群的监视器报告其作为主osd所持有的所有pg的最新统计数据,因任何原因导致某主osd无法正常向监视器发送次类报告,或其他osd报告某osd已经down时,则以此osd为主osd的pg转成stale状态。
undersized:pg钟的副本少于其存储池定义的个数时进入undersized状态,恢复和回填操作在随后会启动修复其副本期望值。
Scrubbing:各osd还需要周期性检查所持有的数据对象的完整性,以确保所有对等osd上的数据一致,处于此类检查过程中的pg便会被标记成scrubbing状态。
另外,pg还偶尔需要进行deep scrubs检查以确保同一对象在相关的各osd上按位匹配,此时pg将处于"scrubbing+deeping"状态。
recovering:添加一个新的osd到存储集群中或某个osd宕机时,pg则可能被crush重新映射进而将持有与此不同的osd集,而在这些处于内部数据同步过程中的pg被标记为recovering状态。
backfilling:新osd加入存储集群后,ceph则会进入数据重新均衡状态,即一些数据对象会在进程后台从现有osd移动到新的osd上,此过程是backfilling。