【ceph学习】librados部分代码走读

本文内容

本文主要介绍librados中关于C++部分的接口API调用。但并未深入到如何实现,有助于浅尝辄止的大概了解。

  1. RadosClient.h和RadosClient.cc是用于初始化RadosClient对象,一般用于客户端进行访问,主要操作:
  • 连接、断链存储集群
    int ping_monitor(std::string mon_id, std::string *result);
    //根据poolctx初始化monclient、msgr、objecter等
    int connect();
    void shutdown();
  • 存储池系列操作。RadosClient内部有poolctx对象
    //*io = new librados::IoCtxImpl(this, objecter, poolid, CEPH_NOSNAP);
    int create_ioctx(const char *name, IoCtxImpl **io);
    int create_ioctx(int64_t, IoCtxImpl **io);

    int get_fsid(std::string *s);
    int64_t lookup_pool(const char *name);
    bool pool_requires_alignment(int64_t pool_id);
    int pool_requires_alignment2(int64_t pool_id, bool *requires);
    uint64_t pool_required_alignment(int64_t pool_id);
    int pool_required_alignment2(int64_t pool_id, uint64_t *alignment);
    int pool_get_name(uint64_t pool_id, std::string *name, bool wait_latest_map = false);
    //列举存储池。
    int pool_list(std::list<std::pair<int64_t, std::string> >& ls);
    int get_pool_stats(std::list<std::string>& ls, std::map<std::string,::pool_stat_t> *result,
    bool *per_pool);
    int get_fs_stats(ceph_statfs& result);
    bool get_pool_is_selfmanaged_snaps_mode(const std::string& pool);
    //创建、删除存储池
    int pool_create(std::string& name, int16_t crush_rule=-1);
    int pool_create_async(std::string& name, PoolAsyncCompletionImpl *c, int16_t crush_rule=-1);
    int pool_get_base_tier(int64_t pool_id, int64_t* base_tier);
    int pool_delete(const char *name);

    int pool_delete_async(const char *name, PoolAsyncCompletionImpl *c);
  • commond操作。mgr、mon等操作接口,处理mon、mgr、log等命令
    int mon_command(const std::vector<std::string>& cmd, const bufferlist &inbl,
                bufferlist *outbl, std::string *outs);
    void mon_command_async(const std::vector<std::string>& cmd, const bufferlist &inbl,
                            bufferlist *outbl, std::string *outs, Context *on_finish);
    int mon_command(int rank,
            const std::vector<std::string>& cmd, const bufferlist &inbl,
                bufferlist *outbl, std::string *outs);
    int mon_command(std::string name,
            const std::vector<std::string>& cmd, const bufferlist &inbl,
                bufferlist *outbl, std::string *outs);
    int mgr_command(const std::vector<std::string>& cmd, const bufferlist &inbl,
                bufferlist *outbl, std::string *outs);
    int mgr_command(
    const std::string& name,
    const std::vector<std::string>& cmd, const bufferlist &inbl,
    bufferlist *outbl, std::string *outs);
    int osd_command(int osd, std
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值