文章插图
提示:如上图所示客户端把包含数据“ABCDEFGHI”的对象NYAN保存到存储池中时,假设纠删码算法会将内容分割为三个数据块:第一个包含ABC,第二个为DEF,最后一个为GHI,并为这三个数据块额外创建两个编码块:第四个YXY和第五个QGC;在有着两个编码块配置的存储池中,它容许至多两个OSD不可用而不影响数据的可用性 。假设,在某个时刻OSD 1和OSD 3因故无法正常响应客户端请求,这意味着客户端仅能读取到ABC、DEF和QGC,此时纠删编码算法会通过计算重那家出GHI和YXY;
二、关于PG
文章插图
提示:PG是用于跨OSD将数据存储在某个存储池中的内部数据结构;相对于存储池来说,PG是一个虚拟组件,它是对象映射到OSD时使用的虚拟层;出于规模伸缩及性能方面的考虑,Ceph将存储池细分为归置组,把每个单独的对象映射到归置组,并将归置组分配给一个主OSD;存储池由一系列的归置组组成,而CRUSH算法则根据集群运行图和集群状态,将各PG均匀、伪随机地分布到集群中的OSD之上;所谓伪随机是指,在osd都健康数量没有变化的情况下,同一PG始终映射相同的OSD;若某OSD失败或需要对集群进行重新平衡,Ceph则移动或复制整个归置组而无需单独寻址每个对象;归置组在OSD守护进程和Ceph客户端之间生成了一个中间层,CRUSH算法负责将每个对象动态映射到一个归置组,然后再将每个归置组动态映射到一个或多个OSD守护进程,从而能够支持在新的OSD设备上线时动态进行数据重新平衡;
PG计数
PG数量由管理员在创建存储池时指定,而后由CRUSH负责创建和使用,通常,PG的数量应该是数据的合理颗粒度的子集,例如,一个包含256个PG的存储池意味着每个PG包含大约1/256的存储池数据;当需要将PG从一个OSD移动到另一个OSD时,PG的数量会对性能产生影响;PG数量过少,Ceph将不得不同时移动相当数量的数据,其产生的网络负载将对集群的正常性能输出产生负面影响;即PG过少,那么对应一个PG存储的数据就越多,则移动PG会占用过多的网络带宽,从而影响正常客户端的使用;而在过多的PG数量场景中在移动极少量的数据时,Ceph将会占用过多的CPU和RAM,从而对集群的计算资源产生负面影响 。即PG过多,对应每个PG维护的数据较少,但是集群需要花费很多CPU和内存来维护和追踪PG的信息;从而造成集群的计算资源和内存资源造成影响,从而进一步影响客户端使用;所以在ceph上pg的数量不宜过多和过少;
PG数量在群集分发数据和重新平衡时扮演着重要作用,在所有OSD之间进行数据持久存储及完成数据分布会需要较多的归置组,但是它们的数量应该减少到最大性能所需的最小数量值,以节省CPU和内存资源;一般说来,对于有着超过50个OSD的RADOS集群,建议每个OSD大约有50-100个PG以平衡资源使用,取得更好的数据持久性和数据分布,更大规模的集群中,每个OSD大约可持有100-200个PG至于应该使用多少个PG,可通过下面的公式计算后,将其值以类似于四舍五入到最近的2的N次幂;
PG计算公式:(Total OSDs * PGPerOSD)/Replication factor => Total PGs;即一个ceph集群总PG数量=每个OSD上的pg数量×OSD的数量,然后除以副本数量;一个RADOS集群上可能会存在多个存储池,因此管理员还需要考虑所有存储池上的PG分布后每个OSD需要映射的PG数量;即总pg数量/存储池个数,就是平均一个存储的PG数量;简单讲就是所有存储池的PG数量之和应该等于通过上述公式算出来的值四舍五入到最近的2的N次幂;
PG状态
依据PG当前的工作特性或工作进程所处的阶段,它总是处于某个或某些个“状态”中,最为常见的状态应该为“active+clean”;
经验总结扩展阅读
- 苹果ios14.7新功能_苹果ios14.7系统怎么样
- centos7系统资源限制整理
- 引擎之旅 Chapter.4 日志系统
- 电脑被锁怎么重装系统xp
- 分布式存储系统之Ceph集群状态获取及ceph配置文件说明
- 电器系统什么叫做双回路控制
- 分布式存储系统之Ceph集群访问接口启用
- 怎样把苹果手机中的照片存储到存储空间
- 分布式存储系统之Ceph集群部署
- 电脑启动不能进入系统