ceph mds端的代码使用C++编写,mds端的重要数据结构:
class MDS : public Dispatcher(<mds.h>)
包括一个锁,一个定时器,一个消息句柄,客户端的连接,mds map和osd map,server对象,MDS的缓存对象,log对象,负载均衡处理对象等
class Messenger (<messager.h>)
消息处理对象,用于mds和其他节点的通讯
class MonClient : public Dispatcher (<monclient.h>)
包括一个MonMap,消息句柄,一个连接,锁,定时器,Finisher对象,LogClient,是mds与client交互的处理对象
class MonMap (<monmap.h>)
包括一个地址信息map,最后修改时间,创建时间,能够随机选择一个mon,获取时间点,设置时间点,获取mon的地址,通过mon的地址获取它的名字等方法;
class Finisher(<finisher.h>)
包括CephContext句柄,一个互斥锁,条件锁,一个stop和running的标识,一个finisher 的队列;
class CephContext(<ceph_context.h>)
A CephContext represents the context held by a single library user
class outStreambuf(<doutstreambuf.h>)
输出数据流处理类
class md_config_t(<config.h>)
represents the current Ceph configuration
struct RefCountedObject(<message.h>)
原子地增减计数器;
Connection(<message.h>)
获取、更新链接数
class MDSMap(<MDSMap.h>)
包含mds_info_t结构—mds节点信息,时间点信息,mds上次失效的时间点,osd上次失效的时间点,创建和修改时间,有anchortable和snaptable的mds信息,有根目录的mds,session的timeout时间,最大文件数,数据池,最大mds数,方法有MDSmap的初始化—从配置文件获取mdsmap的初始信息
class OSDMap(<osdmap.h>)
包含Incremental类型,ceph的fsid,创建修改时间,osd的数目,最大osd数目,osd状态数组,osd地址数组,osd信息数组,机器快照的时间点,
class Objecter(<objecter.h>)
包含一个Messenger 句柄,MonClient 句柄,一个osd的map,一个CephContext,client的互斥锁,SafeTimer时间,
class Filer(<filer.h>)
//----------------------TO explain---------------------
LogClient
Server
MDCache
MDLog
MDBalancer
InoTable
AnchorServer
SnapServer
SnapClient
MDSTableClient
MDSTableServer