调整Ceph配置选项,充分发挥系统硬件性能。
所有的ceph配置参数都是通过修改“/etc/ceph/ceph.conf”实现的。
比方说要修改默认副本数为4,则在“/etc/ceph/ceph.conf”文件中添加“osd_pool_default_size = 4”这一行字段,然后systemctl restart ceph.target重启Ceph守护进程使之生效。
以上操作只是对当前Ceph节点生效,需要修改所有Ceph节点的“ceph.conf”文件并重启Ceph守护进程才对整个Ceph集群生效。
具体优化项详见表1。
参数名称 |
参数含义 |
优化建议 |
||||
---|---|---|---|---|---|---|
[global] |
||||||
osd_pool_default_min_size |
PG处于degraded状态不影响其IO能力,min_size是一个PG能接受IO的最小副本数。 |
默认值:0 修改建议:1 |
||||
cluster_network |
配置一层不同于public network的网段,用于OSD间副本复制/数据均衡,缓解public network网络压力。 |
默认值:/ 修改建议:192.168.4.0/24 |
||||
osd_pool_default_size |
副本数设置。 |
默认值:3 修改建议:3 |
||||
mon_max_pg_per_osd |
阈值项:调大PG告警阈值 |
默认值:250 修改建议:3000 |
||||
mon_max_pool_pg_num |
阈值项:调大PG告警阈值 |
默认值:65536 修改建议:300000 |
||||
debug_none |
关闭debug开关,减少日志打印开销 |
修改建议:0/0 |
||||
debug_lockdep |
||||||
debug_context |
||||||
debug_crush |
||||||
debug_mds |
||||||
debug_mds_balancer |
||||||
debug_mds_locker |
||||||
debug_mds_log |
||||||
debug_mds_log_expire |
||||||
debug_mds_migrator |
||||||
debug_buffer |
||||||
debug_timer |
||||||
debug_filer |
||||||
debug_striper |
||||||
debug_objecter |
||||||
debug_rados |
||||||
debug_rbd |
||||||
debug_rbd_mirror |
||||||
debug_rbd_replay |
||||||
debug_journaler |
||||||
debug_objectcacher |
||||||
debug_client |
||||||
debug_osd |
||||||
debug_optracker |
||||||
debug_objclass |
||||||
debug_filestore |
||||||
debug_journal |
||||||
debug_ms |
||||||
debug_mon |
||||||
debug_monc |
||||||
debug_paxos |
||||||
debug_tp |
||||||
debug_auth |
||||||
debug_crypto |
||||||
debug_finisher |
||||||
debug_reserver |
||||||
debug_heartbeatmap |
||||||
debug_perfcounter |
||||||
debug_rgw |
||||||
debug_civetweb |
||||||
debug_javaclient |
||||||
debug_asok |
||||||
debug_throttle |
||||||
debug_refs |
||||||
debug_xio |
||||||
debug_compressor |
||||||
debug_bluestore |
||||||
debug_bluefs |
||||||
debug_bdev |
||||||
debug_kstore |
||||||
debug_rocksdb |
||||||
debug_leveldb |
||||||
debug_memdb |
||||||
debug_kinetic |
||||||
debug_fuse |
||||||
debug_mgr |
||||||
debug_mgrc |
||||||
debug_dpdk |
||||||
debug_eventtrace |
||||||
throttler_perf_counter |
默认开启,可以观察阈值是否达到瓶颈。性能调节到最佳后,建议关闭,tracker影响性能 |
默认值:True 修改建议:False |
||||
ms_dispatch_throttle_bytes |
等待调度的最大消息数,建议调大,提高消息处理效率 |
默认值:104857600 修改建议:2097152000 |
||||
ms_bind_before_connect |
消息队列绑定,保证多网口流量均衡 |
默认值:False 修改建议:True |
||||
[client] |
||||||
rbd_cache |
关闭客户端cache。关闭后rbd cache一直是writethrough模式 |
默认值:True 修改建议:False |
||||
[osd] |
||||||
osd_max_write_size |
OSD一次可写入的最大值(MB) |
默认值:90 修改建议:256 |
||||
osd_client_message_size_cap |
客户端允许在内存中的最大数据(Bytes) |
默认值:524288000 修改建议:1073741824 |
||||
osd_map_cache_size |
保留OSD Map的缓存(MB) |
默认值:50 修改建议:1024 |
||||
bluestore_rocksdb_options |
rocksdb配置参数 |
默认值:
修改建议:
|
||||
mon_osd_full_ratio |
将OSD视为已满之前使用的磁盘空间的百分比。数据量超过这个百分比后会停止一切读写操作,直到扩容或清除数据量至小于该百分比 |
默认值:0.95 修改建议:0.97 |
||||
mon_osd_nearfull_ratio |
将OSD视为近似之前使用的磁盘空间的百分比。数据量超过这个百分比后会产生告警,提示空间即将耗尽 |
默认值:0.85 修改建议:0.95 |
||||
osd_min_pg_log_entries |
PGLog记录条数下阈值 |
默认值:3000 修改建议:10 |
||||
osd_max_pg_log_entries |
PGLog记录条数上阈值 |
默认值:3000 修改建议:10 |
||||
bluestore_cache_meta_ratio |
bluestore cache中分配给meta的比例 |
默认值:0.4 修改建议:0.8 |
||||
bluestore_cache_kv_ratio |
bluestore cache中分配给kv的比例 |
默认值:0.4 修改建议:0.2 |
调整每个OSD上承载的PG数量,使每个OSD的负载更加均衡。
Ceph默认为每个存储池分配8个“pg/pgp”,在创建存储池的时候使用ceph osd pool create {pool-name} {pg-num} {pgp-num}指定“pg/pgp”数量,或者使用ceph osd pool set {pool_name} pg_num {pg-num}和ceph osd pool set {pool_name} pgp_num {pgp-num}修改已创建好的存储池的“pg/pgp”数量。修改完成后使用ceph osd pool get {pool_name} pg_num/pgp_num查看存储池的“pg/pgp”数量。
“ceph balancer mode”默认为“none”,用ceph balancer mode upmap命令调整为“upmap”。“ceph balancer”功能默认不打开,ceph balancer on/off用来打开/关闭“ceph balancer”功能。
PG分布参数配置如表2所示:
参数名称 |
参数说明 |
优化建议 |
---|---|---|
pg_num |
Total PGs = (Total_number_of_OSD * 100) / max_replication_count,得出的结果向上取到最近的2的整数次幂。 |
默认值:8 现象:pg数量太少的话会有warning提示 修改建议:根据计算公式具体计算得到的值 |
pgp_num |
pgp数量设置为与pg相同。 |
默认值:8 现象:pgp数量建议与pg数量相同 修改建议:根据计算公式具体计算得到的值 |
ceph_balancer_mode |
使能balancer均衡器插件,并设置均衡器插件模式为“upmap”。 |
默认值:none 现象:若PG数量不均衡会出现个别OSD负载较大而成为瓶颈 修改建议:upmap |
建议将OSD进程绑定到固定CPU上。
通过修改“/etc/ceph/ceph.conf”文件,添加“osd_numa_node = <NUM>”即可。
具体优化项如表3所示。
参数名称 |
参数说明 |
优化建议 |
---|---|---|
[osd.n] |
||
osd_numa_node |
将osd.n守护进程绑定到指定空闲NUMA节点上,此处的空闲NUMA节点指处理网卡软中断的节点以外的节点。 |
默认值:无 现象:若OSD进程所在CPU和与网卡中断相同,可能会出现个别CPU的压力过大的情况 修改建议:分离CPU负载压力,避免OSD进程与网卡中断或其他高CPU消耗的进程运行在同一NUMA节点上 |