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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM