使用python语言调用原生接口(调用librados库来操作rados)
也就是下图中几种方式中的一种,就是图中的红色部分:
首先来说明一下:这个就相当于在客户端上操作ceph集群的底层对象存储rados,我的代码是在mon节点上执行的,也就是暂时把mon当作客户端来使用。
当然我们也可以另外使用一台主机来作为客户端,这个客户端只要能够连通ceph集群就可以,比如我也可以使用另外一台centos7的主机,只需要 yum -y install ceph即可,然后在/etc/ceph/文件夹下把mon节点/etc/ceph/下的ceph.conf文件和ceph.client.admin.keyring文件复制过去即可完成ceph客户端的配置。
下面是简单python代码示例:
#!/usr/bin/python
#encoding=utf-8
import rados, sys
cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
#用当前的这个ceph的配置文件去创建一个rados,这里主要是解析ceph.conf中的 集群配置参数。然后将这些参数的值保存在rados中。
cluster.connect()
#这里将会创建一个radosclient的结构,这里会把这个结构主要包含了几个功能模块: 消息管理模块Messager,数据处理模块Objector,finisher线程模块。
print "\n\nI/O Context and Object Operations"
print "================================="
print "\nCreating a context for the 'data' pool"
if not cluster.pool_exists('data'):
raise RuntimeError('No data pool exists')
ioctx = cluster.open_ioctx('data')
#为一个名字叫做data的存储池创建一个ioctx ,ioctx中会指明radosclient与Objector 模块,同时也会记录data的信息,包括pool的参数等。
<