前言
本篇主要是分析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 |
