ceph各个版本之间参数变化分析
前言
本篇主要是分析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各个版本之间参数变化分析的更多相关文章
- Android之各个版本之间的变化
(1)android5.0 Android5.0之后隐式打开服务需要指明包名 (2)android6.0 Android6.0之后涉及隐私的权限必须动态申请 (3)android8.0 android ...
- CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)
由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...
- AWR Report 关键参数详细分析
WORKLOAD REPOSITORY report for DB Name DB Id Instance Inst num Startup Time Release RAC CALLDB 12510 ...
- 微软提供的API的各个版本之间的区别
First Floor Software这个diff lists非常方便的给出了微软提供的API的各个版本之间的区别,比如下表是.NET 4和.NET 4.5的API变化总结.我们可以看到.NET 4 ...
- mysql驱动参数变化
在java平台使用的mysql jdbc驱动为:mysql-connector-java. 在项目中添加如下依赖: <dependency> <groupId>mysql< ...
- C++ 中数组做参数的分析
C++ 中数组做参数的分析 1.数组降价问题? "数组引用"以避免"数组降阶",数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是& ...
- Linux 各个版本之间的差别
一直没有搞清楚RHEL,CentOS,,还有Ubuntu,fedora这些版本之间的差别,搜了一下,整理到这里,备忘吧. 我最关心的: 1, CentOS是在RHEL基础上的免费版: 2, Ubunt ...
- AM335X有关MMC的启动参数问题分析
AM335X有关MMC的启动参数问题分析 一. 问题来源 硬件平台:AM335X芯片 SDK版本:ti-processor-sdk-linux-am335x-evm-03.00.00.04-Linux ...
- MTK Android Git提取出两个版本之间的差异文件并打包
git提取出两个版本之间的差异文件并打包 首先你得知道版本之间的commit id git log –pretty=oneline $ git log --pretty=oneline 1 差异文件并 ...
随机推荐
- 加密sqlite3数据库文件
目录 EncryptSqlite3 实现原理 使用方法 不足之处 GitHub地址 EncryptSqlite3 加密sqlite3数据库,产生的数据库文件别人打不开. 实现原理 在写入文件前对每个字 ...
- Go 安装配置golint
原文链接:http://zhoubotong.site/post/3.html一. Golint介绍 Golint 是一个源码检测工具用于检测代码规范 Golint 不同于gofmt, Gofmt用于 ...
- go操作mysql数据库
Golang GORM使用 gorm gorm是go语言中实现数据库访问的ORM(对象关系映射)库.使用这个库,我们可以利用面向对象的方法,更加方便的对数据库中的数据进行CRUD(增删改查). 基本使 ...
- 3分钟学完Python,直接从入门到精通
作为帅气小编,我已经把python一些模块的甩在这儿了qwq,只要你拿到这些干货,包你玩转python,直接冲向"大佬"的段位,如果已经学了C或者C++或者说如果你需要你的一段关键 ...
- v s
关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且只能修改变量,而synchronized可以修饰方法,以及代码块. ...
- Cisco思科模拟器交换机划分VLAN 入门详解 - 精简归纳
Cisco思科模拟器交换机划分VLAN 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 24 转载请注明出处!️ 附: 交流方式: ️ ️ ️ QQ: 1846334075 We ...
- 如何发布代码到maven中心仓库
deploy to sonatype 参考文章 https://blog.csdn.net/xuefu_78/article/details/52494698 https://blog.csdn.ne ...
- es6 新的数组操作
ES6数组新增的几个方法 2017年03月24日 13:38:04 tang15886395749 阅读数:10461 标签: ES6数组新增方法 更多 个人分类: js相关 关于数组中forEa ...
- 【转】Setting up SDL 2 on Visual Studio 2019 Community
FROM: http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/msvc2019/index.php Setting up SDL 2 on V ...
- ThreadLocal内存泄漏需要注意的
前段时间在网上看到了一篇关于ThreadLocal内存泄漏的文章 于是个人也研究了下ThreadLocal 对象,其原理是: ThreadLocal 定义的变量值 会存储在当前线程的一个map集合中 ...