跳转至

CephFS

CephFS 是 ceph 实现的分布式文件系统。主干源码包括 src/ceph_fuse.ccsrc/client 目录下文件,其中 src/ceph_fuse.cc 提供了 main 方法,是 fuse 文件系统的入口。

1 基本流程

  1. src/ceph_fuse.cc:ceph 对接 fuse 的入口,定义了 main 函数,做些初始化、挂载卸载操作,会调用 src/client 下文件定义的接口。
  2. fuse_ll.h fuse_ll.cc:是 fuse 与 ceph 间连接的桥梁。
  3. 通过实例化 fuse_lowlevel_ops 结构,将 fuse 需要实现的接口(比如 open、read、write 接口)与 ceph 实现绑定,这样通过 fuse 挂载后,就能自动调用到 ceph 实现流程。
  4. CephFuse 类:src/ceph_fuse.cc 会实例化此类
    1. 持有嵌套类 CephFuse::Handle 实例,CephFuse::Handle 类持有类 Clinet 实例,Clinet 实例实现了文件操作接口,也就是说,fuse 中需要实现的接口,实际上全在 Clinet 实现。
  5. Client.h Client.cc:是文件系统对接下次存储接口的桥梁。与元数据服务器和 osd 服务器通信。
  6. Client 类中会使用到 MetaRequest.h 中定义的 MetaRequest 类,和 MetaSession.h 中定义的 MetaSession
  7. Client 类中会使用到 MDSMap 类,用于从中获取元数据服务器
  8. MetaRequest.h MetaRequest.cc
  9. MetaSession.h MetaSession.cc