rados以及s3api测试和使用ceph
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相关推荐
- Ceph测试系列(三):Ceph集群(3 osd节点)dd及rados bench 性能测试
转载:Ceph分布式存储系统-性能测试与优化 摘要: 本文先介绍了各个节点的本地磁盘吞吐量和延迟测试(dd 命令),节点间的网络测试(dd+nc命令),及最后的rados bench测试(配置不同的块 ...
- ssd测试工具crystaldiskmark_使用SSD增强Ceph性能并对比测试
使用SSD增强Ceph性能并对比测试几年前,用Proxmox Virtual Environment(一个VMWare Vsphere的开源替代,以后简称PVE)搭建了一个测试云平台,使用了PVE自带 ...
- python通过librados库通过底层的rados操作ceph的对象存储和块存储
使用python语言调用原生接口(调用librados库来操作rados) 也就是下图中几种方式中的一种,就是图中的红色部分: 首先来说明一下:这个就相当于在客户端上操作ceph集群的底层对象存储ra ...
- 005 Ceph配置文件及用户管理
一.Ceph的配置文件 Ceph 配置文件可用于配置存储集群内的所有守护进程.或者某一类型的所有守护进程.要配置一系列守护进程,这些配置必须位于能收到配置的段落之下.默认情况下,无论是ceph的服务端 ...
- Ceph 存储集群7-故障排除
Ceph 仍在积极开发中,所以你可能碰到一些问题,需要评估 Ceph 配置文件.并修改日志和调试选项来纠正它. 一.日志记录和调试 般来说,你应该在运行时增加调试选项来调试问题:也可以把调试选项添加到 ...
- openstack运维实战系列(十七)之glance与ceph结合
1. 需求说明 glance作为openstack中p_w_picpath服务,支持多种适配器,支持将p_w_picpath存放到本地文件系统,http服务器,ceph分布式文件系统,glusterf ...
- Ceph分布式存储系统-性能测试与优化
测试环境 部署方案:整个Ceph Cluster使用4台ECS,均在同一VPC中,结构如图: 以下是 Ceph 的测试环境,说明如下: Ceph 采用 10.2.10 版本,安装于 CentOS 7. ...
- 虚拟机使用ceph-deploy安装ceph
参考: ceph官网介绍 使用ceph-deploy安装Ceph 12.x 安装虚拟机 首先安装虚拟机环境,虚拟机安装这里不做介绍,本实验使用的镜像为CentOS-7-x86_64-Everythin ...
- ceph1--ceph基础/搭建ceph高可用集群
一.ceph基础 0.存储分类 单机存储 SCSI/IDE/SATA//SAS/USB/PCI-E/SSD/M.2NVME协议(提升性能) https://item.jd.com/4962067795 ...
最新文章
- 三种复位方式: 同步复位、异步复位、异步复位同步释放
- vim文本编辑器详解
- SDUTOJ3469_深度优先搜索练习之神奇的矩环(DFS)
- MATLAB学习——常用语句
- java - 条件嵌套
- 用栈实现队列(Leetcode第232题)+用队列实现栈(Leetcode第225题)
- Hive 处理 json 的几个函数
- Eclipse安装git插件以及关联导入GitHub项目
- Javascript 笔记与总结(2-8)对象2
- QThread实现多线程
- 汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服
- uniapp使用网易易盾
- 掌握通过计算机实现香农编码,信息论编码实验二香农编码
- 新东方的负载均衡架构探索和实践
- 关于天猫(淘宝)评论爬虫
- php文章下一页,php获取文章上一页与下一页的方法_php技巧
- 鸿蒙可能超越安卓吗,华为鸿蒙能超越安卓吗?或一统江湖?任正非已志在必得...
- Ubuntu,不能sudo,也不能root登录
- Java基础:回调函数
- 数学知识整理:二重积分