美文网首页ceph
ceph配置源码分析

ceph配置源码分析

作者: 小跑001 | 来源:发表于2021-10-19 08:40 被阅读0次

1 介绍

    ceph里面的配置文件代码比较繁琐,分析清楚配置代码对未来排查问题大有益处。

2 启动分析

2.1 入口

    无论是osd、mgr还是mon等程序都需要加载配置,都有统一的入口,例如ceph-osd.cc在main函数中调用global_init--->global_pre_init函数进行配置的加载。

2.2 env_to_vec分析

    split_dashdash把args根据"--"拆分成两段(注意:--不同于--param),前段为类型为vector的options, 后段为类型为vector的arguments。
    get_str_vec。把环境变量值取出来:默认的环境变量是"CEPH_ARGS",可以通过参数来指定名字。以空格“ ” 为间隔,把环境变量拆分为一个个字符串到g_str_vec中。
    g_str_vec腾挪到env 的vector<const char*>中,同args一样以“--”进行拆分。
    分别聚合env和args的options和arguments到args中, 还是以“--”来间隔,无论是options还是arguments,env的参数都在前。

2.3 ceph_argparse_early_args

    解析options来获取对应的值:
         a) -v 展示version
         b) -c 配置文件
         c) --cluster cluster
         d) -i 非client实体的id (client程序通过-i指定id会无效
         e) --id / --user 设置实体的id,会覆盖-i的选项
         f) --name/-n 通过名字来解析设置实体的id, 会覆盖-i 以及 --id/--user
         g)--show_args 显示参数 ,但是不会exit

3 配置类分析

3.1 ConfigProxy

    配置的代理类,实际是封装了:
         a) ConfigValues values;
         b) ObserverMgr<md_config_obs_t> obs_mgr;
         c) md_config_t config;

3.2 md_config_t

    主要包含了配置的元数据, 主要成员有:
         1) std::map<std::string, const Option&> schema;

        a) 构造函数中通过全局变量ceph_options=build_options()构造,在这个函数里面可以看到很多默认的值

         2) std::map<std::string, member_ptr_t> legacy_values;

3.3 Option

主要成员:

  1. name:

  2. type :参考 type_t {TYPE_UINT, TYPE_INT...}

  3. level: 参考level_t {basic, advanced, dev}

    3.1 basic: for users, configures some externally visible functional aspect

    3.2 advanced: for users, configures some internal behaviour

    3.3 Dev: not for users. May be dangerous, may not be documented.

    1. value_t value; value_t daemon_value;

3.4 ConfigValues

主要成员:

using values_t = std::map<std::string, map<int32_t,Option::value_t>>; // <name, <level, value_t>
values_t values;

3.5 类关系

通过ConfigProxy提供对外的接口:

1、如果是set类接口:先通过md_config_t获取option,通过option获取name、类型、默认值、校验等信息,解析value,最后设置到ConfigValues中。

2、如果是get类接口:

    2.1、流程也是从md_config_t到ConfigValues, 如果从ConfigValues不能获取到,则获取Option的默认值

    2.2、md_config_t::expand_meta 解析${var}到实际的值

相关文章

  • ceph配置源码分析

    1 介绍 ceph里面的配置文件代码比较繁琐,分析清楚配置代码对未来排查问题大有益处。 2 启动分析 2.1 入口...

  • MySQL部署到k8s实例

    k8s && ceph 环境信息 ceph 部署以及配置 搭建ceph集群 ceph 集群配置 ceph 创建My...

  • Ceph守护进程实现

    以Ceph Monitor的守护进程实现为例,源码文件:src/ceph_mon.cc Ceph对系统的fork调...

  • 根据ceph源码制作ceph RPM包

    title: 根据ceph源码制作ceph RPM包 概述 我们在使用ceph的时候经常有下面的需求: 遇到bug...

  • 分布式存储ceph——(2)ceph常用命令

    1、查看ceph集群配置信息 2、在部署节点修改了ceph.conf文件,将新配置推送至全部的ceph节点 3、检...

  • ceph-perf源码分析

    1、类图 2、分析 2.1、指标 couter只增不减,除非系统重置,反应速率 gauge可增可减,反应当前状态,...

  • Mybatis源码分析与仿写

    Mybatis源码分析 项目介绍 xml文件 java文件 源码分析 读取配置文件//Resources的getR...

  • Ceph文件系统存储·服务搭建及使用

    一、搭建思路: ceph节点安装MDS软件 ceph节点配置MDS服务 ceph端创建Ceph文件系统 客户端挂载...

  • Python基础-1·语法结构

    一、搭建思路: ceph节点安装MDS软件 ceph节点配置MDS服务 ceph端创建Ceph文件系统 客户端挂载...

  • 六.client

    见安装ceph章节安装ceph完成后,登陆管理节点上,把Ceph配置文件与ceph.client.admin.ke...

网友评论

    本文标题:ceph配置源码分析

    本文链接:https://www.haomeiwen.com/subject/mwnooltx.html