filestore

Jewel OSD进程启动处理流程

不想你离开。 提交于 2019-12-06 21:07:52
OSD::main() |__ObjectStore::create() |__调用FileStore构造函数创建FileStore类对象 |__MonClient::build_initial_monmap() 从配置文件中读取monitor map信息 |__OSD::mkfs() |__FileStore::mkfs() |__在/var/lib/ceph/osd/ceph-${id}/目录下生成fsid文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建version_stamp文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建superblock文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建current文件夹 |__在/var/lib/ceph/osd/ceph-${id}/current/目录下创建commit_op_seq文件且初始化该文件的内容为1 |__在/var/lib/ceph/osd/ceph-${id}/current/omap/目录下创建osd_uuid文件(current/omap目录是OSD omap的工作目录) |__FileStore::mkjournal() |__FileStore::new_journal() |__FileJournal(

Ceph源码分析-KeyValueStore

烈酒焚心 提交于 2019-12-02 18:48:21
KeyValueStore 是 Ceph 支持的另一个存储引擎(第一个是FileStore),它是在 Emporer 版本中Add LevelDB support to ceph cluster backend store Design Summit 上由本人提出并实现了原型系统,在 Firely 版本中实现了与 ObjectStore 的对接。目前已经合并到 Ceph 的 Master 上。 KeyValueStore 相对于 FileStore 是一个轻量级实现,目标是利用其不同 Backend 提供的能力来为 Ceph 的不同应用场景服务。如目前的默认 engine 是 LevelDB,期望来提供高性能的写性能。 主要数据结构 KeyValueStore 主要由三部分组成,一个是继承ObjectStore 的KeyValueStore 类,另一个是GenericObjectMap(类似于FileStore 的DBObjectMap),最后一个是继承GenericObjectMap 的StripObjectMap。GenericObjectMap 是主要用来访问后端Engine 的实现,它的作用有点类似VFS,而Engine 就是各种不同的FileSystem,它抽象出一些基本的方法(read/write)和一些高级接口(rename/clone)等等