Osd启动过程

Osd基本启动过程: 程序入口: src/ceph_osd.cc main(),通过查询正在运行的osd得知启动命令如下: 输入图片说明 /usr/bin/ceph-osd --cluster=ceph -i 0 -f --setuser ceph --setgroup ceph 开始进入main函数 1、argv_to_vec(argc, argv, args); 把以空格分割后的命令行参数 “--cluster=ceph -i 0 -f --setuser ceph --setgroup ceph” 放到一个vector里方便后面处理。 2、global_init.cc : global_init 全局初始化,带参数 CEPH_ENTITY_TYPE_OSD,表示本模块是osd,参数args也就是命令行参数。 2.1、由于run_pre_init为true,进入global_pre_init,解释命令行参数,调用公共代码(mon、osd、mds等模块都会用来的基础代码)初始化。 2.1.1、调用公共代码common/ceph_argparse.cc :ceph_argparse_early_args预解释命令行参数,对于只是显示版本号的命令,只把版本号打出来程序就直接可以exit(0)了;对于其他的参数,解释好后放到CephInitParameters里供后面使用。 2.2、进入common/common_init.cc : common_preinit,主要是实例化new CephContext(iparams.module_type, flags); 2.2.1、CephContext初始化时最重要的就是实例化md_config_t,md_config_t保存了osd的所有默认配置信息,主要是使用OPTION_OPT_INT,OPTION_OPT_LONGLONG等一系列的宏加上common/config_opts.h灵活实现配置字段的定义。同时CephContext实例化时还初始化了adminsocket,log等模块。 2.3、调用conf->parse_config_files读取配置文件内容,命令里不指明的话,默认使用/etc/ceph/ceph.conf。从md_config_t::parse_config_files->md_config_t::parse_config_files_impl->ConfFile::parse_file->ConfFile::load_from_buffer->ConfFile::process_line->ConfFile::normalize_key_namet得知,配置文件里这样的写法是一样的: cluster network = 192.168.89.0/24 cluster_network = 192.168.89.0/24 3、global_init完成后,开始初始化存储相关的操作了。 3.1、ObjectStore::create创建一个FileStore对象 3.2、为ms_cluster、ms_hbclient、ms_hb_back_server、ms_hb_front_server分别创建AsyncMessenger对象,AsyncMessenger是负责网络通讯的模块,每个模块默认启动4个线程监听4个端口,使用消息队列收发信息,以后细细研究。 3.3、创建OSD实例,调用OSD::init进行一系列核心工作,包括初始化leveldb,FileStore::mount对/var/lib/ceph/osd/ceph-1 下的文件进行加载和检测 3.4、最后启动所有子线程,主线程进入wait等待状态。启动完成。

下期预告: Ceph AsyncMessenger工作过程 由睿江云人员提供,想了解更多,请登陆www.eflycloud.com

转载于:https://my.oschina.net/u/3363053/blog/1541817

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值