数据重平衡:
当在Ceph存储集群中添加新的OSD时,CURSH会重新计算PG ID,相应的集群映射表也会更新,基于重新计算的结果,对象数据的存放位置也会发生变化。
数据一致性
为保证数据的一致性和清洁性,Ceph存储集群会定期清洗PG中的对象数据,大概原理就是Ceph OSD会将一个PG中的数据与另一个PG中该数据的存储副本进行比较,以此获取对比结果,数据的清洗分为两种:第一种是轻度清洗,每天发生,可以捕捉OSD的一些bug或文件系统错误;第二种是重度清洗,在字节级别进行数据比较,可以捕捉到一些硬盘坏块等错误,这种错误在轻度清洗中无法检测到。
备注:
OSD:是一个负责数据存储的进程,处理数据复制、恢复、回填和重平衡等
CRUSH:是Ceph的数据分布算法
PG是placement Group,位于对象数据和OSD之间,如果Ceph客户端知道对象数据存储在哪个OSD,则会在客户端和OSD之间建立一个联系,下次需要访问该对象时直接访问,如果不知道,则CRUSH会将数据对象映射到PG上,再将该PG映射到OSD上,最终写在磁盘上,当Ceph存储集群增加或者减少OSD时,Ceph利用中间层PG进行数据的动态平衡,以保证存储具有最佳性能