CephFS¶
CephFS 是 ceph 实现的分布式文件系统。主干源码包括 src/ceph_fuse.cc
和 src/client
目录下文件,其中 src/ceph_fuse.cc
提供了 main 方法,是 fuse 文件系统的入口。
1 基本流程¶
src/ceph_fuse.cc
:ceph 对接 fuse 的入口,定义了 main 函数,做些初始化、挂载卸载操作,会调用src/client
下文件定义的接口。fuse_ll.h fuse_ll.cc
:是 fuse 与 ceph 间连接的桥梁。- 通过实例化 fuse_lowlevel_ops 结构,将 fuse 需要实现的接口(比如 open、read、write 接口)与 ceph 实现绑定,这样通过 fuse 挂载后,就能自动调用到 ceph 实现流程。
CephFuse
类:src/ceph_fuse.cc
会实例化此类- 持有嵌套类 CephFuse::Handle 实例,CephFuse::Handle 类持有类 Clinet 实例,Clinet 实例实现了文件操作接口,也就是说,fuse 中需要实现的接口,实际上全在 Clinet 实现。
Client.h Client.cc
:是文件系统对接下次存储接口的桥梁。与元数据服务器和 osd 服务器通信。- Client 类中会使用到
MetaRequest.h
中定义的MetaRequest
类,和MetaSession.h
中定义的MetaSession
类 - Client 类中会使用到
MDSMap
类,用于从中获取元数据服务器 MetaRequest.h MetaRequest.cc
MetaSession.h MetaSession.cc