知识卡片
Object标识符的四层继承设计
内容
Ceph 用一条继承链逐步给对象标识符叠加语义:object_t 只有文件名;sobject_t 加上 snap 字段区分是否为快照对象;hobject_t 再加 pool id、命名空间、hash(对应 [[pool与PG的抽象关系|PG id]])以支持跨 pool 寻址和分片定位;ghobject_t 最后加 shard_id 和 generation,专门服务纠删码场景——shard_id 标识对象在 EC 型 PG 中属于哪个分片,generation 保存写失败时可回滚的旧版本号。每一层都只为一个新增子系统(快照、寻址、EC)扩展字段,而不是一个大而全的结构体,新增能力不影响不需要它的调用方。
参考来源
《Ceph源码分析》第2章《Ceph通用模块》