Ceph-10.2.11源码目录分析

Ceph-10.2.11源码目录分析
一、Ceph根目录
[admin]:管理工具,用于架设文档服务器等。
[bin]:目前只包含一个在当前目录针对所有内容生产tar包的脚本。
[cmake]:Ceph对cmake的支持。CMake 是一个跨平台的自动化安装编译系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了比 autoconfig 更简洁的语法。
[debian]:用于制作debian(Ubuntu)安装包的相关脚本和文件。
[doc]:用于生成项目文档,生成结果参考http://ceph.com/docs/master/
[etc]:Ceph的etc文件。
[examples]:一些Ceph开发、命令使用、trace使用的例子。
[man]:ceph各命令行工具的man文件。
[qa]:各个模块的功能测试(测试脚本和测试代码)。
[src]:各功能某块的源代码 。
[systemd]:Ceph对于systemd的支持目录。
[udev]:Ceph的udev规则。

AUTHORS:记录了Ceph的Maintainer、CTL(ComponentTechnical Leads)以及Contributors信息。
autogen.sh:负责生成configure 。
ceph.spec.in:RPM包制作文件。
CodingStyle:Ceph的代码编写规范。
CMakeLists.txt:CMake工具使用的描述文件。
configure.ac:用于生成configure的脚本 。
do_autogen.sh:生成configure的脚本,实际上通过调用autogen.sh实现
Makefile.am:用于生成Makefile的脚本 。
run-cmake-check.sh :使用cmake编译ceph,适用于首次自动化编译,自动安装依赖包,需要运行用户有安装包的权限。
run-make-check.sh :使用make编译ceph,适用于首次自动化编译,自动安装依赖包,需要运行用户有安装包的权限。

二、src目录
[auth]:授权模块,实现了三方认知机制。
[bash_completion]:部分bash脚本的实现。
[client]:client模块,实现了用户态的CephFS客户端 。
[common]:共有模块,包含各类共有机制的实现,例如线程池、管理端口、节流阀等。
[crush]:Crush模块,Ceph的数据分布算法。
[doc]:关于代码的一些说明文档。
[global]:全局模块,主要是声明和初始化各类全局变量(全局上下文)、构建驻留进程、信号处理等。
[include]:头文件,包含各种基本类型的定义,简单通用功能等。
[json_spirit]:外部项目json_spirit 。
[librados]:rados库模块的代码,librados实现了rados层的接口,其中几个重要的数据结构有Rados、RadosClient、IoCtx、IoCtxImpl。IoCtx(include/rados/librados.hpp)是Rados I/O的一个上下文,其定义了大部分的I/O接口如read、write等。
[librdb]:libbd库模块的代码。
[log]:日志模块,主要负责记录本地log信息(默认/var/log/ceph/目录)。
[mds]:mds模块,实现包括两部分:krbd(kernel版的rbd,源码在drivers/block/rbd.c)和librbd
[messages]:消息模块,定义了Ceph各节点之间消息通讯中用到的消息类型
[mon]:mon模块,Monitor作为Ceph集群状态管理者管理MonMap、PGMap和OSDMap,其主要由各种Monitor组件组成,并使用Paxos协议实现Mon之间数据同步来保证数据一致性,通过quorum协议来保证Mon之间的高可用
[mount]:mount模块。
[msg]:消息通讯模块,包括用于定义通讯功能的抽象类Messenger以及目前的实现SimpleMessager 。
[os]:对象(Object Store)模块,用于实现本地的对象存储功能。
[osd]:osd部分,定义了后端OSD、PG相关的类和处理逻辑。 在OSD模块中,最核心、也是实际处理IO请求和故障恢复的模块类是PG。 PG是一个对象的集合,包含对象名称的哈希值与PG的ID相符的所有对象。而在Ceph的软件设计中,PG是osd中处理IO的类,即属于某一个PG的对象的请求,全部由该对象对应的PG类的实例进行处理。 相对于PG,OSD实际扮演了一个服务者的角色,即为PG提供了以下服务:1)通过调用os模块提供本地存储服务;2)通过调用msg模块提供消息通讯服务;3)通过提供线程池提供计算服务。 可以将OSD理解为PG的运行环境。PG“生活”在某一个OSD中,也可能由于系统的变化,而迁移到另一个OSD中,这一过程实际也就是数据迁移的过程。
[osdc]:OSD客户端(OSD Client),封装了各类访问OSD的方法。
[perfglue]:与性能优化相关的源代码。
[pybind]:python的包装器 。
[rgw]:rgw模块,实现了rgw的功能,rgw的主要作用是协议转换,即把HTTP协议的请求转化为RGW Object再转换为Rados Object,交由Rados处理。
[script]:各种python脚本。
[test]:单元测试。
[tools]:各类工具,Ceph中的各种工具的实现:cephfs、rados、rbd、rbd-nbd、ceph-authtool、ceph-conf、ceph-kvstore-tool、ceph-monstore-tool、ceph-objectstore-tool、crushtool、monmaptool、osdmaptool。
[tracing]:Ceph tracing模块,目前支持使用lttng,可以在该目录下定义lttng的tracepoint。
[upstart]:各种配置文件。

ceph.conf.twoosds:配置文件样例。
ceph_fuse.cc:工具ceph_fuse 。
ceph_mds.cc:驻留程序mds(驻留程序 是一种特殊应用程序,它在装入内存运行后,其部分代码仍然驻留在内存,当该段代码被激活时,它又进入运行状态。常用的驻留程序是作为某个中断处理程序的一部分,其激活条件就是系统产生了此中断的中断请求)。
ceph_mon.cc:驻留程序mon。
ceph_osd.cc:驻留程序osd。
ceph_syn.cc:工具ceph_syn。
cephfs.cc:工具cephfs。
init-ceph.in:启动和停止ceph的脚本 。
libcephfs.cc:cephfs库。
librados-config.cc:rados库配置工具。
Makefile.am:makefile的源文件。
sample.ceph.conf:配置文件样例 。
valgrind.supp:内存检查工具valgrind的配置文件。

猜你喜欢

转载自blog.csdn.net/liguihong123/article/details/85225634