跳转至

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