Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >fio测试ceph的filestore

fio测试ceph的filestore

作者头像
用户2772802
发布于 2018-08-06 10:20:07
发布于 2018-08-06 10:20:07
2.5K10
代码可运行
举报
文章被收录于专栏:磨磨谈磨磨谈
运行总次数:0
代码可运行

前言

fio是一个适应性非常强的软件,基本上能够模拟所有的IO请求,是目前最全面的一款测试软件,之前在看德国电信的一篇分享的时候,里面就提到了,如果需要测试存储性能,尽量只用一款软件,这样从上层测试到底层去,才能更好的去比较差别

fio对于ceph来说,可以测试文件系统,基于文件系统之上测试,可以测试内核rbd,将rbdmap到本地格式化以后进行测试,或者基于librbd直接对rbd进行测试,这个是目前都已经有的测试场景,这些不在本篇的讨论的范围内,今天讲的是一种新的测试场景,直接对ceph的底层存储进行测试

为什么会有这个,因为在以前,如果你要测试一块磁盘是不是适合ceph使用的时候,都是直接对挂载的磁盘进行一些测试,这个是基于文件系统的,并没有真正的模拟到ceph自己的写入模型,所以在开发人员的努力下,模拟对象的写入的驱动已经完成了,这就是本篇需要讲述的内容

实践过程

fio engine for objectstore 这个是在ceph的11.0.2这个版本才正式发布出来的,可以看这个pr(pr10267),11.0.2是ceph第一个公开释放的KRAKEN版本的,也说明Jewel版本即将进入比较稳定的情况,新的功能可能会尽量在K版本进行开发

下载相关代码

创建一个目录用于存储代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

[root@lab8106 ~]# mkdir /root/newceph
[root@lab8106 ~]# cd /root/newceph/
下载fio的代码

[root@lab8106 newceph]# git clone git://git.kernel.dk/fio.git

下载ceph的代码

下载代码并且切换到指定的11.0.2分支,不要用master分支,里面还没有合进去,并且还有bug

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 ~]# cd /root/newceph/
[root@lab8106 newceph]# git clone git://github.com/ceph/ceph.git
[root@lab8106 newceph]# cd ceph
[root@lab8106 ceph]#git checkout -b myfenzhi v11.0.2
[root@lab8106 ceph]#git submodule update --init --recursive
创建一个cmake编译的目录并且编译
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 ~]# mkdir /root/newceph/build
[root@lab8106 ~]# cd /root/newceph/build
[root@lab8106 build]# cmake -DWITH_FIO=ON -DFIO_INCLUDE_DIR=/root/newceph/fio/ -DCMAKE_BUILD_TYPE=Release /root/newceph/ceph 
[root@lab8106 build]# make install -j 16

安装完成检查是不是生成了这个库文件,fio就是利用这个库作为写入引擎的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 build]# ll lib/libfio_ceph_objectstore.so
-rwxr-xr-x 1 root root 59090338 Nov 23 22:17 lib/libfio_ceph_objectstore.so

将库路径让系统识别 export LD_LIBRARY_PATH=/root/newceph/build/lib/

编译fio

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 ~]# cd /root/newceph/fio/
[root@lab8106 fio]#./configure
[root@lab8106 fio]# make

如果显示下面的,就可以了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 fio]# ./fio --enghelp=libfio_ceph_objectstore.so
conf                    : Path to a ceph configuration file

配置测试

下面需要准备两个配置文件,一个是ceph自身的,一个是fio配置文件,我们看下我的环境下这个配置文件如何写的 写fio的测试文件 vim filestore.fio

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[global]
ioengine=libfio_ceph_objectstore.so # must be found in your LD_LIBRARY_PATH

conf=/etc/ceph/ceph-filestore.conf # must point to a valid ceph configuration file
directory=/var/lib/ceph/osd/ceph-8 # directory for osd_data

rw=randwrite
iodepth=16

time_based=1
runtime=20s

[filestore]
nr_files=64
size=256m
bs=64k

上面的指定了一个配置文件和一个目录,这个目录是你需要测试的集群的存储的目录,里面不需要数据 写ceph的配置文件 vim /etc/ceph/ceph-filestore.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

[global]
    debug filestore = 0/0
    debug journal = 0/0

    # spread objects over 8 collections
    osd pool default pg num = 8
    # increasing shards can help when scaling number of collections
    osd op num shards = 5

    filestore fd cache size = 32

[osd]
    osd objectstore = filestore

    # use directory= option from fio job file
    osd data =  /var/lib/ceph/osd/ceph-8/

    # journal inside fio_dir
    osd journal =  /var/lib/ceph/osd/ceph-8/journal
    osd journal size = 5000
    journal force aio = 1

配置文件指定数据目录,和journal路径

开始测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@lab8106 fio]# ./fio  filestore.fio 
filestore: (g=0): rw=randwrite, bs=64K-64K/64K-64K/64K-64K, ioengine=ceph-os, iodepth=16
fio-2.15-11-g42f1
Starting 1 process
2016-11-23 22:32:17.713473 7f7536d56780  0 filestore(/var/lib/ceph/osd/ceph-8/) backend xfs (magic 0x58465342)
2016-11-23 22:32:17.804601 7f7536d56780  0 filestore(/var/lib/ceph/osd/ceph-8/) backend xfs (magic 0x58465342)
2016-11-23 22:32:17.805003 7f7536d56780  0 genericfilestorebackend(/var/lib/ceph/osd/ceph-8/) detect_features: FIEMAP ioctl is disabled via 'filestore fiemap' config option
2016-11-23 22:32:17.805018 7f7536d56780  0 genericfilestorebackend(/var/lib/ceph/osd/ceph-8/) detect_features: SEEK_DATA/SEEK_HOLE is disabled via 'filestore seek data hole' config option
2016-11-23 22:32:17.805020 7f7536d56780  0 genericfilestorebackend(/var/lib/ceph/osd/ceph-8/) detect_features: splice() is disabled via 'filestore splice' config option
2016-11-23 22:32:17.864962 7f7536d56780  0 genericfilestorebackend(/var/lib/ceph/osd/ceph-8/) detect_features: syncfs(2) syscall fully supported (by glibc and kernel)
2016-11-23 22:32:17.865056 7f7536d56780  0 xfsfilestorebackend(/var/lib/ceph/osd/ceph-8/) detect_feature: extsize is disabled by conf
2016-11-23 22:32:17.865643 7f7536d56780  0 filestore(/var/lib/ceph/osd/ceph-8/) start omap initiation
2016-11-23 22:32:17.926589 7f7536d56780  0 filestore(/var/lib/ceph/osd/ceph-8/) mount: enabling WRITEAHEAD journal mode: checkpoint is not enabled

可以看到,已经开始以对象存储的IO模型去生成测试了,根据自己的需要对不同的存储设备和组合进行测试就可以了

总结

作为一个新的测试模型的出现,更加完善了ceph的整体体系,也给磁盘的选型增加更好的测试工具

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磨磨谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
请问大神,如果要跑bluestore的fio怎么跑?
请问大神,如果要跑bluestore的fio怎么跑?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Ceph OSD从filestore 转换到 bluestore的方法
前段时间看到豪迈的公众号上提到了这个离线转换工具,最近看到群里有人问,找了下没什么相关文档,就自己写了一个,供参考
用户2772802
2018/08/06
1.8K0
处理Ceph osd的journal的uuid问题
一、前言 之前有一篇文章介绍的是,在centos7的jewel下面如果自己做的分区如何处理自动挂载的问题,当时的环境对journal的地方采取的是文件的形式处理的,这样就没有了重启后journal的磁盘偏移的问题 如果采用的是ceph自带的deploy去做分区的处理的时候,是调用的sgdisk去对磁盘做了一些处理的,然后deploy能够识别一些特殊的标记,然后去做了一些其他的工作,而自己分区的时候,是没有做这些标记的这样就可能会有其他的问题
用户2772802
2018/08/06
1.1K0
Ceph数据盘怎样实现自动挂载
在Centos7 下,现在采用了 systemctl来控制服务,这个刚开始用起来可能不太习惯,不过这个服务比之前的服务控制要强大的多,可以做更多的控制,本节将来介绍下关于 Ceph的 osd 磁盘挂载的问题
用户2772802
2018/08/06
2.2K0
Ceph删除OSD上一个异常object
ceph里面的数据是以对象的形式存储在OSD当中的,有的时候因为磁盘的损坏或者其它的一些特殊情况,会引起集群当中的某一个对象的异常,那么我们需要对这个对象进行处理
用户2772802
2018/08/06
1.5K0
如何测量Ceph OSD内存占用
这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法
用户2772802
2018/08/06
1.8K0
如何测量Ceph OSD内存占用
ceph luminous 新功能之内置dashboard
ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一些之前未实现的功能的完成,都让ceph变得更强,这里面有很多核心模块来自中国的开发者,在这里准备用一系列的文章对这些新功能进行一个简单的介绍,也是自己的一个学习的过程
用户2772802
2018/08/06
8570
ceph luminous 新功能之内置dashboard
基于Docker UI 配置ceph集群
前一篇介绍了docker在命令行下面进行的ceph部署,本篇用docker的UI进行ceph的部署,目前来说市面上还没有一款能够比较简单就能直接在OS上面去部署Ceph的管理平台,这是因为OS的环境差异化太大,并且包的版本,以及各种软件的适配都可能造成失败,而docker比较固化环境,因此即使一个通用的UI也能很方便的部署出一个Cpeh集群
用户2772802
2018/08/06
7910
基于Docker UI 配置ceph集群
ceph luminous 新功能之磁盘智能分组
本篇是luminous一个新功能介绍,关于磁盘智能分组的,这个在ceph里面叫crush class,这个我自己起名叫磁盘智能分组,因为这个实现的功能就是根据磁盘类型进行属性关联,然后进行分类,减少了很多的人为操作
用户2772802
2018/08/06
9880
分布式存储Ceph之PG状态详解
继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下:
Lucien168
2020/07/20
3.6K0
Cephfs的文件存到哪里了
在ceph里面使用rbd接口的时候,存储的数据在后台是以固定的prifix的对象存在的,这样就能根据相同的前缀对象去对image文件进行拼接或者修复
用户2772802
2018/08/06
1.7K0
掉电后osdmap丢失无法启动osd的解决方案
本篇讲述的是一个比较极端的故障的恢复场景,在整个集群全部服务器突然掉电的时候,osd里面的osdmap可能会出现没刷到磁盘上的情况,这个时候osdmap的最新版本为空或者为没有这个文件
用户2772802
2018/08/06
1.2K0
rados put striper功能的调试
之前对于striper这个地方的功能并没研究太多,只是知道这个里面可以以条带方式并行的去写对象,从而加大并发性来提高性能,而默认的条带数目为1,也就是以对象大小去写,并没有条带,所以不是很好感觉到差别,今天就尝试下用rados命令来看下这个条带是怎么回事
用户2772802
2018/08/06
1.1K0
Ceph用户邮件列表Vol45-Issue1
这个问题是作者一个集群中(ceph 0.94.5)出现了一个磁盘损坏以后造成了一些对象的丢失,然后在做了一定的处理以后,集群状态已经正常了,但是还是新的请求会出现block的状态,这个情况下如何处理才能让集群正常,作者贴出了pg dump,ceph -s,ceph osd dump相关信息,当出现异常的时候,需要人协助的时候,应该提供这些信息方便其他人定位问题,最后这个问题作者自己给出了自己的解决办法,出现的时候影响是当时的流量只有正常情况下的10%了,影响还是很大的
用户2772802
2018/08/06
6290
rbd的image快照与Pool快照
这个错我之前也没见过,并且因为很少用到快照,所以可能也就没有触发这个问题,在查看了一些资料以后,明白了原因,这里就梳理一下
用户2772802
2018/08/06
3.3K0
rbd的image快照与Pool快照
Ceph recover的速度控制
磁盘损坏对于一个大集群来说,可以说是必然发生的事情,即使再小的概率,磁盘量上去,总会坏那么几块盘,这个时候就会触发内部的修复过程,修复就是让不满足副本要求的PG,恢复到满足的情况
用户2772802
2018/08/06
2.6K0
Ceph recover的速度控制
Ceph用户邮件列表Vol45-Issue2
这个问题是作者在升级了一个集群以后(jewel 10.2.3),做删除的时候,发现提示了 No space left on device,按正常的理解做删除不会出现提示空间不足
用户2772802
2018/08/06
4890
Ceph用户邮件列表Vol45-Issue2
SDNLAB技术分享(十七):Ceph在云英的实践
大家好,我是云英负责存储的研发工程师,杨冠军,很高兴今天能在这里跟大家一起讨论分享下Ceph和Ceph在云英的实践。 首先我先介绍下,Ceph是什么,我们为什么选择Ceph? Ceph是最近开源系统中很火的一个项目,基于Sage Weil的一片博士论文发展而来的一个分布式文件系统,可提供PB级,动态可扩展,数据安全可靠的存储服务。Ceph提供分布式存储服务包括:块存储RBD,对象存储RADOSGW和CephFS三种,基本覆盖了绝大部分企业对存储的需求,所以越来越多企业加入到使用Ceph的行列。在国内也有越来
SDNLAB
2018/03/30
1.9K0
SDNLAB技术分享(十七):Ceph在云英的实践
rbd-mirror配置指南-单向备份
RBD 的 mirroring 功能将在Jewel中实现的,这个Jewel版本已经发布了很久了,这个功能已经在这个发布的版本中实现了,本来之前写过一篇文章,但是有几个朋友根据文档配置后,发现还是有问题,自己在进行再次配置的时候也发现有些地方没讲清楚,容易造成误解,这里对文档进行再一次的梳理
用户2772802
2018/08/06
2K0
rbd-mirror配置指南-单向备份
使用SSD增强PVE上的Ceph性能操作步骤
前段时间匆匆地为老PVE(Proxmox Virtual Environment)集群的CEPH增加了SSD,之后匆匆地简单对比记下了写了那篇“使用SSD增强Ceph性能的比较测试”,之后才反应过来——操作步骤和过程没写。这里补上。
用户9314062
2022/05/20
5.1K0
使用SSD增强PVE上的Ceph性能操作步骤
使用rook编排ceph
在k8s上编排ceph是容器生态存储方案的一个趋势,能非常简单快速的构建出存储集群,特别适合供有状态服务使用,计算存储分离将使应用的管理变简单,业务层与云操作系统层也能更好的解耦。
sealyun
2019/07/25
2.6K0
相关推荐
Ceph OSD从filestore 转换到 bluestore的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验