1. 使用Java-rados库往进存数据

1.1 准备工作

如果使用RGW下层的librados操作ceph,Java代码必须要用到rados.jar这个库,并且要安装jna,sudo yum install jna -y。
在Linux里,复制该JAR文件到公共目录 (例如 /usr/share/java) ,设置这两个 JAR 链接 JVM Class path,连接操作如下:

#安装rados-java,或者直接把编译好的rados.jar拷贝过来
sudo yum install jna
git clone --recursive https://github.com/ceph/rados-java.git
cd rados-java-master
mvn install -Dmaven.test.skip=true
#复制该JAR文件到公共目录 (例如 /usr/share/java) ,并且确认该文件和JNA JAR在你的JVM’s classpath目录中.
sudo cp target/rados-0.6.0.jar /usr/share/java/rados-0.6.0.jar
sudo ln -s /usr/share/java/jna.jar /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/lib/ext/jna.jar
sudo ln -s /usr/share/java/rados-0.6.0.jar  /usr/lib/jvm/default-java/jre/lib/ext/rados-0.6.0.jar
  • rados.jar不太好下载,我从GitHub上下载了源码,用maven编译出了jar,直接用就行

  • csdn rados-0.7.0.jar下载地址

  • maven依赖如下,jna的依赖要和通过yum安装的版本(3.5.2)一致,否则会报错

     <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>3.5.2</version></dependency><dependency><groupId>com.ceph</groupId><artifactId>rados</artifactId><version>0.7.0</version></dependency>

1.2 测试代码

代码功能是显示创建集群句柄,读取配置文件,连接集群,打印之前存进去的对象名。
运行:java -jar java-rados.jar cug.CephClient
新存的对象之一是kyle-say:Hello World!,输入命令限制kyle-say的value结果如图,可见存储成功。
查看刚才存进去的对象kyle-say的内容:sudo rados -p data get kyle-say -

import com.ceph.rados.IoCTX;
import com.ceph.rados.Rados;
import com.ceph.rados.exceptions.RadosException;import java.io.File;public class CephClient {public static void main (String args[]){try {//创建集群句柄Rados cluster = new Rados("admin");System.out.println("Created cluster handle.");//读取配置文件File f = new File("/etc/ceph/ceph.conf");cluster.confReadFile(f);System.out.println("Read the configuration file.");//连接集群cluster.connect();System.out.println("Connected to the cluster.");//创建上下文IoCTX io = cluster.ioCtxCreate("data");//存一个字符串对象String oidone = "kyle-say";String contentone = "Hello World!";io.write(oidone, contentone);//存一个字符串对象String oidtwo = "my-object";String contenttwo = "This is my object.";io.write(oidtwo, contenttwo);//打印之前存进去的对象名字String[] objects = io.listObjects();for (String object: objects)System.out.println("Put " + object);/* io.remove(oidone);io.remove(oidtwo); */cluster.ioCtxDestroy(io);} catch (RadosException e) {System.out.println(e.getMessage() + ": " + e.getReturnValue());}}
}

2.使用python-rados库往进存数据和操作ceph

2.1 把当前目录下的test.mp4存到data pool

import sys,rados,rbd
cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
cluster.connect()
ioctx = cluster.open_ioctx('data')
path = {flie-name}
file_name = path
f = open(path, "r")
file_content = f.read()
f.close()
ioctx.write_full(file_name, file_content)
object_iterator = ioctx.list_objects()
while True :try :rados_object = object_iterator.next()print ("Object contents = " + rados_object.key)except StopIteration :break
ioctx.close()
cluster.shutdown()

2.2 列举当前pool,创建data2 pool

import radoscluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
cluster.connect()
pools = cluster.list_pools()
for pool in pools:print poolcluster.create_pool('data2')
print '=============='pools = cluster.list_pools()
for pool in pools:print pool

3. 使用python S3API存数据


代码里的access_key,secret_key是你创建rgw子用户时候生成的,

import boto
import boto.s3.connection
from boto.s3.key import Keyaccess_key = 'S2WEB1BIYXW35EX1YANG'
secret_key = 'bgp5OvRJ640LJ46x5m6UANoEMQ5WSyImou8AFJPv'
conn = boto.connect_s3(aws_access_key_id = access_key,aws_secret_access_key = secret_key,host = 'ceph', port = 7480,is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),)bucket = conn.get_bucket('lt1_bucket')
k = Key(bucket)
k.key = 'test_file'
filename = '004.jpg'
k.set_contents_from_filename(filename)

rados以及s3api测试和使用ceph相关推荐

  1. Ceph测试系列(三):Ceph集群(3 osd节点)dd及rados bench 性能测试

    转载:Ceph分布式存储系统-性能测试与优化 摘要: 本文先介绍了各个节点的本地磁盘吞吐量和延迟测试(dd 命令),节点间的网络测试(dd+nc命令),及最后的rados bench测试(配置不同的块 ...

  2. ssd测试工具crystaldiskmark_使用SSD增强Ceph性能并对比测试

    使用SSD增强Ceph性能并对比测试几年前,用Proxmox Virtual Environment(一个VMWare Vsphere的开源替代,以后简称PVE)搭建了一个测试云平台,使用了PVE自带 ...

  3. python通过librados库通过底层的rados操作ceph的对象存储和块存储

    使用python语言调用原生接口(调用librados库来操作rados) 也就是下图中几种方式中的一种,就是图中的红色部分: 首先来说明一下:这个就相当于在客户端上操作ceph集群的底层对象存储ra ...

  4. 005 Ceph配置文件及用户管理

    一.Ceph的配置文件 Ceph 配置文件可用于配置存储集群内的所有守护进程.或者某一类型的所有守护进程.要配置一系列守护进程,这些配置必须位于能收到配置的段落之下.默认情况下,无论是ceph的服务端 ...

  5. Ceph 存储集群7-故障排除

    Ceph 仍在积极开发中,所以你可能碰到一些问题,需要评估 Ceph 配置文件.并修改日志和调试选项来纠正它. 一.日志记录和调试 般来说,你应该在运行时增加调试选项来调试问题:也可以把调试选项添加到 ...

  6. openstack运维实战系列(十七)之glance与ceph结合

    1. 需求说明 glance作为openstack中p_w_picpath服务,支持多种适配器,支持将p_w_picpath存放到本地文件系统,http服务器,ceph分布式文件系统,glusterf ...

  7. Ceph分布式存储系统-性能测试与优化

    测试环境 部署方案:整个Ceph Cluster使用4台ECS,均在同一VPC中,结构如图: 以下是 Ceph 的测试环境,说明如下: Ceph 采用 10.2.10 版本,安装于 CentOS 7. ...

  8. 虚拟机使用ceph-deploy安装ceph

    参考: ceph官网介绍 使用ceph-deploy安装Ceph 12.x 安装虚拟机 首先安装虚拟机环境,虚拟机安装这里不做介绍,本实验使用的镜像为CentOS-7-x86_64-Everythin ...

  9. ceph1--ceph基础/搭建ceph高可用集群

    一.ceph基础 0.存储分类 单机存储 SCSI/IDE/SATA//SAS/USB/PCI-E/SSD/M.2NVME协议(提升性能) https://item.jd.com/4962067795 ...

最新文章

  1. 三种复位方式: 同步复位、异步复位、异步复位同步释放
  2. vim文本编辑器详解
  3. SDUTOJ3469_深度优先搜索练习之神奇的矩环(DFS)
  4. MATLAB学习——常用语句
  5. java - 条件嵌套
  6. 用栈实现队列(Leetcode第232题)+用队列实现栈(Leetcode第225题)
  7. Hive 处理 json 的几个函数
  8. Eclipse安装git插件以及关联导入GitHub项目
  9. Javascript 笔记与总结(2-8)对象2
  10. QThread实现多线程
  11. 汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服
  12. uniapp使用网易易盾
  13. 掌握通过计算机实现香农编码,信息论编码实验二香农编码
  14. 新东方的负载均衡架构探索和实践
  15. 关于天猫(淘宝)评论爬虫
  16. php文章下一页,php获取文章上一页与下一页的方法_php技巧
  17. 鸿蒙可能超越安卓吗,华为鸿蒙能超越安卓吗?或一统江湖?任正非已志在必得...
  18. Ubuntu,不能sudo,也不能root登录
  19. Java基础:回调函数
  20. 数学知识整理:二重积分

热门文章

  1. python5000 传感器_安森美PYTHON5000调试
  2. 新能源汽车赛道王者争霸战,盛世昊通携国澳新能源入局充电桩事业
  3. windows下快速配置C/C++语言学习环境
  4. php imagemagick 漏洞,ImageMagick命令执行漏洞分析
  5. imagemagick使用指南
  6. python爬虫携程机票
  7. 镶嵌数据集工具小结(五)镶嵌数据集的属性 Ⅱ
  8. jquery插件介绍
  9. Python一看就懂系列(一)
  10. 欧格教育:商家怎么处理差评