前言

本篇主要是分析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. day12 Pyhton学习

    一.昨日内容回顾 1.函数名 函数名是一个变量名 可以作为集合类的元素 可以作为参数进行传递 def  func(fn): fn() 可以作为返回值返回 def outer(): def inner( ...

  2. excel 无效引用 所引用的单元格不能位于256列

    无效引用 该文件版本所包含的公式中,所引用的单元格不能位于256列(列IW 或更远)或 65536 行以外的区域. 原因及解决方法: 1.版本问题,把两文件都另存为一致的版本,改为后缀为xlsx. 2 ...

  3. nginx 是如何处理过期事件的?

    目录 什么是过期事件 nginx 是如何处理过期事件的? 参考资料 什么是过期事件 对于不需要加入到 post 队列 延后处理的事件,nginx 的事件都是通过 ngx_epoll_process_e ...

  4. js读取xml,javascript读取XML

    IE下示例代码: var xmlDoc = "<root><AlleyWay><Code>1103</Code><Name>胡同2 ...

  5. Afinal简介和使用方法

    Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitm ...

  6. codeforces#426(div1) B - The Bakery (线段树 + dp)

    B. The Bakery   Some time ago Slastyona the Sweetmaid decided to open her own bakery! She bought req ...

  7. 没事学学KVM(二)创建一台虚拟机

    首先通过VMware创建一台虚机,建议内存大于1G,并开启CPU 的inter vt-x功能,安装好对应的软件后,yum install -y qemu-kvm* virt-* libvirt* 准备 ...

  8. 源码都没调试过,怎么能说熟悉 redis 呢?

    一:背景 1. 讲故事 记得在很久之前给初学的朋友们录制 redis 视频课程,当时结合了不少源码进行解读,自以为讲的还算可以,但还是有一个非常核心的点没被分享到,那就是源码级调试, 对,读源码还远远 ...

  9. 文件中pe到内存中pe

    前言 学pe的时候被困扰了很久,终于在某处给我找到了,打算打出来读一读代码 这边我们是从文件中的pe转到运行中的pe,然后再缩小存储到文件的pe 这边我们需要知道内存中对齐是0x1000,文件对齐是0 ...

  10. STM32入门系列-开发工具keil5安装

    主要介绍如下三部分内容: keil5软件获取 keil5安装 安装STM32芯片包 软件获取 可以通过搜索引擎搜索关键字"KEIL5下载",找到其官方网站www.keil.com. ...