ceph的librados api解释

来源:互联网 发布:广联达软件官方下载 编辑:程序博客网 时间:2024/06/02 19:42


转至元数据结尾Created by 
转至元数据起始

librados 的模块用于在客户端用来访问 rados对象存储设备, 其结构图如下:

如上图所示,各个模块的架构图。

librados就是 操作 rados 对象存储的接口。 其接口分为两种:一个是c 接口,其定义在include/librados.h 中。 一个是 c++ 接口,定义在include/librados.hpp中,实现都在librados.cc中实现。

本文档主要从流程上阐述librados.h中的函数作用,每个函数的具体作用可参考:http://ceph.com/docs/master/rados/api/librados/

接口主要分为五类:

  1. ceph集群句柄(rados client类的实例)的创建和销毁,配置,连接等,pool的创建和销毁,io上下文的创建和销毁等

          使用librados进行IO操作之前必须的初始工作流程:

          (1)创建一个集群句柄,实际上创建了一个rados的客户端(RadosClient类的实例)在rados的所有操作都是建立在rados client之上操作的,rados_create,

rados_create2,rados_create_with_context

          (2)根据配置文件,命令行参数,环境变量配置集群句柄,rados_conf_read_file,rados_conf_parse_argv,rados_conf_parse_argv_remainder,rados_conf_parse_env        

          (3)连接集群,相当于使rados client能够时能集群通信,rados_connect

          (4)连接成功之后就可以创建pool了,rados_pool_create,pool相当于ceph 集群中不同的命名空间,不同的pool有不同的 crush分布策略,复制级别,位置策略等等

          (5)io上下文的创建,rados_ioctx_create,当io上下文创建成功之后就可以进行读写等io操作了。

        除以上接口,还提供了指定配置的设置和获取,pool的查找和获取,pool空间和对象的统计,io上下文的获取等等操作

 

    2.  快照相关接口,librados支持对于整个pool的快照,接口包括快照的创建和销毁,对象到快照版本的回滚,快照查询等等。

 

    3.  同步IO操作接口

         包括读,写,覆盖写,追加写,对象数据克隆,删,截断,获取和设置指定的扩展属性,批量获取扩展属性,迭代器遍历扩展属性,特殊键值对获取等等

 

    4.  异步IO操作接口

         包括异步读,异步写,异步覆盖写,异步追加写,异步删,librados还提供了对象的监视功能,通过rados_watch可以注册回调,当对象发生变化时会回调通知上层。

 

   5.  io操作组原子操作

        即可以把对同一个对象的一系列io操作放到一个组里面,最后保证加入到组里的所有io操作保持原子性,要么全部成功,要么全部失败,而不会给用户呈现出文件系统不一致的问题。

       包括创建read或write操作组,销毁操作组,向操作组里添加其他io操作等等      

 

0 0
原创粉丝点击