前言

本篇主要是分析ceph的版本之间参数的变化,参数变化意味着功能的变化,通过参数来分析增加,删除,修改了哪些功能,以及版本之间的变化,本篇主要通过导出参数,然后通过脚本去比对不同的版本的参数变化

14版本之前安装一个ceph-common,然后touch一个空配置文件就可以通过ceph --show-config拿到版本的配置文件

14版本之后需要安装好mon,并且这个命令取消了,通过下面的命令获取

ceph config show-with-defaults mon.lab204|awk '{print $1,"=",$2}'

处理过程

选取了6个版本的配置文件做分析

[root@lab204 cephconf]# ll
total 304
-rw-r--r-- 1 root root 35475 Sep 14 15:30 ceph.conf.10.2.11
-rw-r--r-- 1 root root 47857 Sep 14 15:32 ceph.conf.12.2.13
-rw-r--r-- 1 root root 51393 Sep 14 17:28 ceph.conf.14.1.0
-rw-r--r-- 1 root root 51535 Sep 14 16:12 ceph.conf.14.2.0
-rw-r--r-- 1 root root 53575 Sep 14 17:42 ceph.conf.14.2.11
-rw-r--r-- 1 root root 55400 Sep 14 16:25 ceph.conf.15.2.4
-rwxrwxrwx 1 root root 986 Sep 14 17:40 compare-conf.sh

通过执行脚本输出比对结果

sh ./compare-conf.sh  ceph.conf.10.2.11 ceph.conf.12.2.13  > /tmp/compare.log

比对结果如下

原始版本 比对版本 删除配置 改动配置 增加配置
ceph.conf.10.2.11 ceph.conf.12.2.13 78 182 394
ceph.conf.12.2.13 ceph.conf.14.1.0 75 143 170
ceph.conf.14.1.0 ceph.conf.14.2.0 5 7 8
ceph.conf.14.2.0 ceph.conf.14.2.11 5 24 61
ceph.conf.14.2.11 ceph.conf.15.2.4 55 14 105

得到版本的参数变化值以后,再挑选出来进行具体的分析即可,通过上面的版本可以看到从10的最后一个版本到现在差不多增加了600多个参数,也删除了200个参数左右,从整体上来说我们需要重点关注下新增的参数和变动的参数

ceph.conf.10.2.11到ceph.conf.12.2.13主要变化

  • mon_pg_stuck_threshold 从300秒调整为60秒,判断pg为stuck状态的
  • mon_stat_smooth_intervals 统计pgmap从最近的2个调整为最近的6个
  • mon_osd_cache_size mon保留的osdmap从10调整为500
  • mon_osd_down_out_interval 从down到out的时间从300秒调整为600秒
  • mon_keyvaluedb 从leveldb换成了rocksdb
  • mds_cache_size 从100000调整为0也就是不限制
  • mds_log_max_segments 从30调整为128 控制Behind on trimming的
  • osd_backfill_retry_interval backfill的重试间隔从10调整为30
  • osd_map_max_advance pg检查OSDMap增量版本时每次检查的最大版本数量从150调整为40
  • osd_map_cache_size 从200调整为50
  • osd_map_message_max 从100调整为40 这个在老版本里面大了会影响稳定性(3804
  • osd_map_share_max_epochs 从100 调整为40
  • osd_op_num_threads_per_shard 每个缓存队列的线程数从2调整为0
  • osd_op_num_shards 缓存队列从5调整为0
  • osd_pg_epoch_persisted_max_stale 从150调整为40
  • osd_max_object_size 从107374182400调整为128M,超大对象可能影响稳定性,cephfs的可能调整这个设置不成功
  • rbd_localize_parent_reads rbd的本地就近读取功能从开启调整为关闭了,官方有个pr说关闭更安全(16882
  • rgw_thread_pool_size 线程池从100调整为512,rgw的并发能力提高了

上面的是主要的一些变化,bluestore的一些参数就不记录了,因为jewel里面的bluestore基本是实验版本的

增加了394个参数,大部分是bluestore的,也有其它的参数的,增加的参数后面再分析

ceph.conf.12.2.13到ceph.conf.14.1.0主要变化

  • bluefs_buffered_io 从关闭得到开启,但是这个开启后会在后期引起swap的调用,引起整体性能降低(Redhat4967421),红帽自己是准备把这个参数关闭(GitHub pr 34297)后面版本应该也关闭了

  • fuse_big_writes 从true改成了false,false的时候是4K的写入,true的时候是128K的写入,对性能影响特别大(提出下降的问题),这个参数L版本还是true,这个版本改成了false,16562 pr这个pr可以看到,是因为libfuse去掉了这个参数了, 还要看下这个参数-o max_write ,用了fuse需要关注下版本,CentOS软件包libfuse2.9.2。因此,使用ceph-fuse在CentOS上升级到Mimi 导致fuse中的4k写 性能非常差的层

[root@lab204 cephconf]# rpm -qa|grep fuse
fuse-libs-2.9.2-11.el7.x86_64
fuse-2.9.2-11.el7.x86_64

也就是如果fuse是这个版本,就手动开启,如果把fuse升级了,那么性能就不用这个参数控制了

  • log_max_recent log最近的事件从500调整为10000
  • mon_client_hunt_parallel 客户端寻找mon的时候可以控制寻找mon的数量,从2改成了3了
  • mon config key max entry size 配置的key的大小从4096调整为65536(单位bytes)
  • mon_mgr_mkfs_grace 从60调整为120 如果120s没有活跃的mgr就用warn警告调整为error警告
  • osd_deep_scrub_large_omap_object_key_threshold判断omap超大的标准,从20万调整为200万,这个参数存在争议,后面看下最终是多少issue 40583
  • osd_max_pg_log_entries 从10000调整为3000 (这个参数是控制recover和backfill的,调整到足够小,就是强制做backfill了(红帽文档)) To force backfill rather than recovery, set osd_min_pg_log_entries to 1, and set osd_max_pg_log_entries to 2
  • osd_min_pg_log_entries 从1500调整为3000 (也有相关的问题内存占用
  • rgw_reshard_bucket_lock_duration reshard的时候,锁定对象的时间从120秒调整为360秒

ceph.conf.14.1.0到ceph.conf.14.2.0版本变化

  • rbd_skip_partial_discard 从false改成了true,跟discard 有关的,If true, the block device will skip zeroing a range when trying to discard a range inside an object.
  • rgw_frontends 默认从civetweb变成了beast

ceph.conf.14.2.0到ceph.conf.14.2.11版本变化

  • bluefs_allocator 从bitmap调整为hybrid,V14.2.11 新加入的功能(相关pr
  • bluefs_buffered_io这个版本调整为false了
  • bluestore_block_size 从10G调整为100G了
  • bluestore_fsck_on_mount_deep 从true调整为false了
  • bluestore_fsck_on_umount_deep 从true调整为false了
  • bluestore_log_omap_iterator_age 从1调整为5
  • bluestore_min_alloc_size_ssd从16384调整为4096这个跟性能有关的,The default value of bluestore_min_alloc_size_ssd has been changed to 4K to improve performance across all workloads.
  • fuse_big_writes又从false调整为true了
  • mon_pg_warn_min_per_osd从30调整为0了
  • osd_client_message_cap从100调整为0
  • osd_deep_scrub_large_omap_object_key_threshold 这个又从2000000调整为200000了
  • rocksdb_pin_l0_filter_and_index_blocks_in_cache从true调整为false了

ceph.conf.14.2.11到ceph.conf.15.2.4版本变化

  • mds_cache_memory_limit mds的缓存从1073741824调整为4294967296
  • osd_client_message_cap 从0 调整为100了
  • osd_max_omap_entries_per_request从131072调整为1024了
  • osd_max_pg_log_entries 从3000调整为10000 这个上个版本调整过,又动了
  • osd_min_pg_log_entries 从3000调整为250了 这个上个版本调整过,又动了
  • osd_op_queue_cut_off 从low调整为high
  • osd_pool_default_pg_autoscale_mode 从warn调整为了on了
  • rgw_bucket_index_max_aio从9调整为128
  • rgw_lc_lock_max_time 从60调整为90

总结

本篇是提供了一个查找功能变化点的思路,当然也可以通过github的pr来分析,配置文件过多的时候,我们就分析重点的地方即可

变更记录

Why Who When
创建 武汉-运维-磨渣 2020-09-15

ceph各个版本之间参数变化分析的更多相关文章

  1. Android之各个版本之间的变化

    (1)android5.0 Android5.0之后隐式打开服务需要指明包名 (2)android6.0 Android6.0之后涉及隐私的权限必须动态申请 (3)android8.0 android ...

  2. CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)

    由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...

  3. AWR Report 关键参数详细分析

    WORKLOAD REPOSITORY report for DB Name DB Id Instance Inst num Startup Time Release RAC CALLDB 12510 ...

  4. 微软提供的API的各个版本之间的区别

    First Floor Software这个diff lists非常方便的给出了微软提供的API的各个版本之间的区别,比如下表是.NET 4和.NET 4.5的API变化总结.我们可以看到.NET 4 ...

  5. mysql驱动参数变化

    在java平台使用的mysql jdbc驱动为:mysql-connector-java. 在项目中添加如下依赖: <dependency> <groupId>mysql< ...

  6. C++ 中数组做参数的分析

    C++ 中数组做参数的分析 1.数组降价问题? "数组引用"以避免"数组降阶",数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是& ...

  7. Linux 各个版本之间的差别

    一直没有搞清楚RHEL,CentOS,,还有Ubuntu,fedora这些版本之间的差别,搜了一下,整理到这里,备忘吧. 我最关心的: 1, CentOS是在RHEL基础上的免费版: 2, Ubunt ...

  8. AM335X有关MMC的启动参数问题分析

    AM335X有关MMC的启动参数问题分析 一. 问题来源 硬件平台:AM335X芯片 SDK版本:ti-processor-sdk-linux-am335x-evm-03.00.00.04-Linux ...

  9. MTK Android Git提取出两个版本之间的差异文件并打包

    git提取出两个版本之间的差异文件并打包 首先你得知道版本之间的commit id git log –pretty=oneline $ git log --pretty=oneline 1 差异文件并 ...

随机推荐

  1. linux(centos8):配置docker的cgroup driver为systemd

    一,为什么要修改docker的cgroup driver? 1,什么是cgroups? cgroups(Control Groups) 是 linux 内核提供的一种机制 它可以限制.记录任务组所使用 ...

  2. php休眠微秒

    <?php $child = new \Swoole\Process(function(){ while(true){ echo date("Y-m-d H:i:s").PH ...

  3. RedisManager2020.4最最最最简单的破解方式

    前言 redis manager是一款很优秀的redis数据库可视化工具,果然优秀的软件最终都走向了收费,贫民玩家越来越难了.赶时间的直接拉到最后,有下载方式. 破解 无需破解,已是破解版 安装 下载 ...

  4. [阿里DIN]从论文源码学习 之 embedding_lookup

    [阿里DIN]从论文源码学习 之 embedding_lookup 目录 [阿里DIN]从论文源码学习 之 embedding_lookup 0x00 摘要 0x01 DIN代码 1.1 Embedd ...

  5. toolbox docker国内镜像(阿里云加速器)

    docker-machine create --engine-registry-mirror=加速地址 -d virtualbox default# 若虚拟机已经创建好docker-machine s ...

  6. Vue基础(1)

    Vue简介 1.JavaScript框架 2.简化Dom操作 3.响应式数据驱动 Vue基础 通过下面代码引用vue: <script src="https://cdn.jsdeliv ...

  7. Java网关服务-AIO(一)

    Java网关-AIO(一) aio:声明一个byteBuffer,异步读,读完了之后回调,相比于Future.get(),可以减少阻塞.减少线程等待,充分利用有限的线程 nio:声明一个byteBuf ...

  8. 将字符串反转的 Java 方法

    Java中经常会用到将字符串进行反转的时候,程序员孔乙己总结了7种反转方法,如下: //方法1 递归方法 public static String reverse1(String s) { int l ...

  9. java后端选型20200729

    参考地址:https://gitee.com/shuzheng/zheng 后端技术: 技术 名称 官网 Spring Framework 容器 http://projects.spring.io/s ...

  10. JavaScript动态显示时间

    <body> <div></div> <script> var div = document.querySelector('div'); retNowT ...