知识卡片
pool的size字段承载两种冗余语义
内容
pg_pool_t 里 size/min_size 这对字段在副本模式和纠删码模式下代表完全不同的含义:副本模式下 size 是副本总数、min_size 是至少要保留可用的副本数(比如三副本 size=3,min_size=1 就允许坏两个副本仍可用);纠删码模式下 size 是 [[纠删码的空间效率与应用限制|N+M 的总分片数]]、min_size 是还原数据所需的最少分片数 N。用同一对字段承载不同冗余策略下”总容量”与”最低可用阈值”这组相同结构的语义,而不是为每种模式分别定义字段,是一种以统一接口表达不同实现细节的做法,但代价是阅读代码时必须先确认当前 pool 的类型才能正确理解这两个字段的含义。
参考来源
《Ceph源码分析》第6章《Ceph的数据读写》