美文网首页
发布存储系统(ceph为例)测试报告的正确姿势

发布存储系统(ceph为例)测试报告的正确姿势

作者: relaX_2363 | 来源:发表于2020-01-06 14:18 被阅读0次

    1. 通用篇

    1.1 记录测试环境信息

    如何对要测试的存储系统了解的并不多,测试前请记录测试环境的以下信息(欢迎补充):

    • 机子的型号、cpu、内存、网卡、磁盘等硬件信息
    • 磁盘是否开启了write cache
    • 机子的系统版本、内核版本、存储系统版本
    • 存储服务器间网络延时、客户端与存储服务器间网络延时
    • 客户端是否与存储集群混部
    • 如果是在公司内部测试,可以记录机子的ip和机房
    • 你修改了存储系统的哪些参数
    • 磁盘性能基准测试数据
    • 测试工具及测试命令
    • 记录测试过程中,iops及带宽的变化曲线
    • 记录测试过程中,各磁盘的util的变化曲线

    当你甩出测试结果数据时,请将记录的测试环境的信息一并甩出。为什么要交代这些信息呢?

    1. 对于有经验的同学,可以结合这些信息,来判断测试结果是否有明显不合理的地方?存储系统的写io是落盘后返回还是写完缓存后返回?
    2. 对于做过该存储系统测试的同学,可以对比测试环境来寻找导致他的测试结果与你的测试结果差异的可能的环境因素
    3. 对于做多个存储系统对比测试的同学,可以配置相同的测试环境,来测试其他存储系统,然后进行对比

    1.2 想测试什么

    有些同学部署下集群客户端,在客户端下跑下fio,然后就完事了,可能并不理解自己测试出了什么...
    这个章节有篇文章专门介绍,传送门: 白话分布式存储测试(一)明确测试目标

    1.3 需要搞清楚的一点

    当谈到客户端或者集群每秒可以完成多少io时,是有一个限定条件的。合理的说法其实是在某个io时延内,客户端或者集群的吞吐io为多少。在测试时,fio会输出这些io的时延分布。可以这么说,如果可以接受更大的io时延时,给客户端或者集群喂更多的io,可能会获取更高的iops

    2. ceph篇

    2.1 最好要了解的ceph知识

    2.1.1 客户端io路径

    了解客户端io路径可以帮助我们排除io路径上可能影响测试结果的因素,同时也可以帮助我们分析测试结果。

    • ceph-fuse客户端的一般io路径:
      fio -> vfs -> kernel fuse -> /dev/fuse -> libfuse -> ceph-fuse -> [ mds ] -> osd ->ceph io栈 -> vfs -> xfs -> block层 -> scsi 中上层 -> scsi驱动层 -> 磁盘
    • cephfs内核客户端的一般io路径:
      fio -> vfs -> kernel cephfs -> [ mds ] -> osd ->ceph io栈 -> vfs -> xfs -> block层 -> scsi 中上层 -> scsi驱动层 -> 磁盘
    • ceph rbd内核客户端的一般io路径:
      fio -> [ vfs -> xfs ] -> block -> rbd -> osd -> ceph io栈 -> vfs -> xfs -> block层 -> scsi 中上层 -> scsi驱动层 -> 磁盘
    2.1.2 io路径中影响测试的因素
    • 测试rbd客户端时,关注下rbd块设备的max_sector_kb参数,在内核3.10.x与4.14.x下,该参数默认值不同,当客户端请求大于该值时,请求会拆分
    • 测试rbd客户端时,关注下rbd块设备的nr_requests、scheduler、read_ahead_kb等块设备参数
    • 测试cephfs内核客户端时,注意,在3.10.x内核下,cephfs的内核模块是没有实现aio的,因此用fio的libaio模式和用sync模式没有差别,单客户端打不满集群;在4.14.x内核下,cephfs的内核客户端实现了aio,可以正常使用fio的libaio模式,单客户端便可打满集群
    • 测试ceph-fuse客户端时,注意,io路径中的kernel fuse会对io进行切分,可能影响大块io的吞吐
    2.1.3 缓存清理
    • osd的缓存
    • 客户端缓存

    2.2 额外需要记录的信息

    除了基础篇中提到的需要记录的测试环境信息外,请记录以下信息:

    • fuse内核模块(测试ceph-fuse时)
    • libfuse版本(测试ceph-fuse时)
    • libceph内核模块(测试cephfs内核客户端及rbd内核客户端时)
    • ceph内核模块(测试cephfs内核客户端)
    • rbd内核模块(测试rbd内核客户端时)
    • 集群的节点数、磁盘数、集群当前空间占用信息

    先写到这里了~ 后续有再补充 :)

    相关文章

      网友评论

          本文标题:发布存储系统(ceph为例)测试报告的正确姿势

          本文链接:https://www.haomeiwen.com/subject/hjkkactx.html