ceph 代码分析 读_Ceph 源代码分析 -OS module

本文主要分析Ceph的src/os模块,探讨ObjectStore、Transaction和ObjectMap的概念。ObjectStore代表对象,Transaction用于执行操作,而ObjectMap是对象内的key-value映射。通过测试文件store_test.cc展示了如何创建和操作Collection及Object。此外,文章还提及了JournalingObjectStore、FileStore、LFNIndex、HashIndex和FlatIndex等关键类,并概述了一个典型对象操作的内部流程,涉及序列化、日志写入和对象存储。
摘要由CSDN通过智能技术生成

Ceph的src/os 中保存了 ObjectStore代码实现。

基本概念

对象

对象存储的概念,把对象作为存储的实体。 在Ceph 文件系统里,对象的命名空间分了两层, 第一层是Collection的概念,一个Collection就是许多Object的集合,相当于其他对象存储的group的概念,用coll_t来标识。

ObjectStore 类 就代表了一个Object, 其继承关系为 FileStore 继承了 JournalingObjectStore,JournalingObjectStore继承了ObjectStore

事务

Transaction类代表了一个事务操作。所有的操作都必须通过一个transaction来执行。 一个transaction几乎实现了所有对对象和集合的操作。

ObjectMap的概念

ObjectMap, 就是一些key,value的map属性,其保存在Object里面。 在Ceph文件系统了,ObjectMap由levelDB这个google开源的KV数据库来实现。

还有一个attributes的 概念,attributes也是一些 key/value的属性值。

首先看一下对外的接口,我们可以通过src/test/filestore/store_test.cc文件来看一下其实如何运行的:

virtualvoidSetUp() {

::mkdir("store_test_temp_dir", 0777);

ObjectStore *store_ = newFileStore(string("store_test_temp_dir"), string("store_test_temp_journal"));

store.reset(store_);

store->mkfs();

store->mount();

} 首先mkdir一个目录,store_test_temp_dir,  新建一个FileStore对象,其后面的参数分别是:文件的目录和日志的目录,分别也可以是一个block device.  调用mkfs 函数和 mount 函数,后面会详细介绍。

ObjectStore::Transaction t;

t.create_collection(cid);

cerr <

r = store->a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值