Ceph学习记录3-通用模块

参考:ceph源码分析(常涛)


1.object是默认4M大小的数据块,一个对象就对应本地文件系统中的一个文件。在代码实现中,有object, sobject, hobject, ghobject等不同的类。

2.sobect_t是在object_t上增加了snapshot信息,用于标识是否是快照对象。数据成员snap是对象对应的快照序号,如果一个对象不是快照对象(也就是head对象),那么snap字段就被设置为CEPH_NOSNAP值。

3.hobject_t是hash object的缩写,是在sobject_t之上再增加了一些字段。其中string hash:hash和key值不能同时设置,hash值一般设置为pg的id值。

4.ghobject_t是在对象hobject_t的基础上,添加了generation字段和shard_id字段,用于EC模式下的pg。shard_id用于标识对象所在的osd在EC类型的PG中的序号,如果是Replicated类型的pg,那么字段就设置伪NO_SHARD(-1),对于Replicated,该字段没用。generation字段用于记录对象的版本号,当PG为EC时,写操作需要区分前后两个版本的object,当EC写失败,可以rollback到上一个版本。

猜你喜欢

转载自blog.csdn.net/qq_20283969/article/details/82050030