Ceph 源代码目录结构详解(转载自:6沙鱼的博客)

从GitHub上Clone的Ceph项目,其目录下主要文件夹和文件的内容为: 
1 根目录 
[src]:各功能某块的源代码 
[qa]:各个模块的功能测试(测试脚本和测试代码) 
[wireshark]:#wireshark的ceph插件。 
[admin]:管理工具,用于架设文档服务器等 
[debian]:用于制作debian(Ubuntu)安装包的相关脚本和文件

[doc]:用于生成项目文档,生成结果参考http://ceph.com/docs/master/ 
[man]:ceph各命令行工具的man文件 
configure.ac:用于生成configure的脚本 
Makefile.am:用于生成Makefile的脚本 
autogen.sh:负责生成configure。 
do_autogen.sh:生成configure的脚本,实际上通过调用autogen.sh实现 
ceph.spec.in:RPM包制作文件

2 src目录

[include]:头文件,包含各种基本类型的定义,简单通用功能等。 
[common]:共有模块,包含各类共有机制的实现,例如线程池、管理端口、节流阀等。 
[log]:日志模块,主要负责记录本地log信息(默认/var/log/ceph/目录) 
[global]:全局模块,主要是声明和初始化各类全局变量(全局上下文)、构建驻留进程、信号处理等。 
[auth]:授权模块,实现了三方认知机制。 
[crush]:Crush模块,Ceph的数据分布算法 
[msg]:消息通讯模块,包括用于定义通讯功能的抽象类Messenger以及目前的实现SimpleMessager 
[messages]:消息模块,定义了Ceph各节点之间消息通讯中用到的消息类型。 
[os]:对象(Object Store)模块,用于实现本地的对象存储功能, 
[osdc]:OSD客户端(OSD Client),封装了各类访问OSD的方法。 
[mon]:mon模块 
[osd]:osd部分 
[mds]:mds模块 
[rgw]:rgw模块的 
[librados]:rados库模块的代码 
[librdb]:libbd库模块的代码 
[client]:client模块,实现了用户态的CephFS客户端 
[mount]:mount模块 
[tools]:各类工具 
[test]:单元测试 
[perfglue]:与性能优化相关的源代码 
[json_spirit]:外部项目json_spirit 
[leveldb]:外部项目leveldb from google 
[gtest]:gtest单元测试框架 
[doc]:关于代码的一些说明文档 
[bash_completion]:部分bash脚本的实现 
[pybind]:python的包装器 
[script]:各种python脚本 
[upstart]:各种配置文件

ceph_mds.cc:驻留程序mds 
ceph_mon.cc:驻留程序mon 
ceph_osd.cc:驻留程序osd 
libcephfs.cc:cephfs库 
librdb.cc:rdb库 
ceph_authtool.cc:工具ceph_authtool 
ceph_conf.cc:工具ceph_conf 
ceph_fuse.cc:工具ceph_fuse 
ceph_syn.cc:工具ceph_syn 
cephfs.cc:工具cephfs 
crushtool.cc:工具crushtool 
dupstore.cc:工具dupstore 
librados-config.cc:rados库配置工具 
monmaptool.cc:工具monmap 
osdmaptool.cc:工具osdmap 
psim.cc:工具psim 
rados.cc:工具rados 
rdb.cc:工具rdb 
rados_export.cc:rados工具相关类 
rados_import.cc:rados工具相关类 
rados_sync.cc:rados工具相关类 
rados_sync.h:rados工具相关类 
sample.ceph.conf:配置文件样例 
ceph.conf.twoosds:配置文件样例 
Makefile.am:makefile的源文件 
valgrind.supp:内存检查工具valgrind的配置文件 
init-ceph.in:启动和停止ceph的脚本 
mkcephfs.in:cephfs部署脚本