前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fio测试ceph的filestore

fio测试ceph的filestore

作者头像
用户2772802
发布2018-08-06 18:20:07
2.4K1
发布2018-08-06 18:20:07
举报
文章被收录于专栏:磨磨谈磨磨谈

前言

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
复制

[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
复制
[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
复制
[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
复制
[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
复制
[root@lab8106 ~]# cd /root/newceph/fio/
[root@lab8106 fio]#./configure
[root@lab8106 fio]# make

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

代码语言:javascript
复制
[root@lab8106 fio]# ./fio --enghelp=libfio_ceph_objectstore.so
conf                    : Path to a ceph configuration file

配置测试

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

代码语言:javascript
复制
[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
复制

[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
复制
[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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 实践过程
    • 下载相关代码
      • 下载fio的代码
      • 下载ceph的代码
      • 创建一个cmake编译的目录并且编译
    • 配置测试
    • 总结
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档