概述
Ceph的配置参数很多,从网上也能搜索到一大批的调优参数,但这些参数为什么这么设置?设置为这样是否合理?解释的并不多
本文从当前我们的ceph.conf文件入手,解释其中的每一项配置,做为以后参数调优和新人学习的依据;
参数详解
1,一些固定配置参数
fsid = 6d529c3d-5745-4fa5-*-*
mon_initial_members = **, **, **
mon_host = *.*.*.*, *.*.*.*, *.*.*.*
以上通常是通过ceph-deploy生成的,都是ceph monitor相关的参数,不用修改;
2,网络配置参数
public_network = 10.10.2.0/24 默认值 ""
cluster_network = 10.10.2.0/24 默认值 ""
public network:monitor与osd,client与monitor,client与osd通信的网络,最好配置为带宽较高的万兆网络;
cluster network:OSD之间通信的网络,一般配置为带宽较高的万兆网络;
3,pool size配置参数
osd_pool_default_size = 3 默认值 3
osd_pool_default_min_size = 1 默认值 0 // 0 means no specific default; ceph will use size-size/2
这两个是创建ceph pool的时候的默认size参数,一般配置为3和1,3副本能足够保证数据的可靠性;
4,认证配置参数
auth_service_required = none 默认值 "cephx"
auth_client_required = none 默认值 "cephx, none"
auth_cluster_required = none 默认值 "cephx"
以上是Ceph authentication的配置参数,默认值为开启ceph认证;
在内部使用的ceph集群中一般配置为none,即不使用认证,这样能适当加快ceph集群访问速度;
5,osd down out配置参数
mon_osd_down_out_interval = 3600 默认值 300 // seconds
mon_osd_min_down_reporters = 3 默认值 2
mon_osd_report_timeout = 900 默认值 900
osd_heartbeat_interval = 10 默认值 6
osd_heartbeat_grace = 60 默认值 20
- mon_osd_down_out_interval:ceph标记一个osd为down and out的最大时间间隔
- mon_osd_min_down_reporters:mon标记一个osd为down的最小reporters个数(报告该osd为down的其他osd为一个reporter)
- mon_osd_report_timeout:mon标记一个osd为down的最长等待时间
- osd_heartbeat_interval:osd发送heartbeat给其他osd的间隔时间(同一PG之间的osd才会有heartbeat)
- osd_heartbeat_grace:osd报告其他osd为down的最大时间间隔,grace调大,也有副作用,如果某个osd异常退出,等待其他osd上报的时间必须为grace,在这段时间段内,这个osd负责的pg的io会hang住,所以尽量不要将grace调的太大。
基于实际情况合理配置上述参数,能减少或及时发现osd变为down(降低IO hang住的时间和概率),延长osd变为down and out的时间(防止网络抖动造成的数据recovery);
参考:
http://docs.ceph.com/docs/master/rados/configuration/mon-osd-interaction/
http://blog.wjin.org/posts/ceph-osd-heartbeat.html
6,objecter配置参数
objecter_inflight_ops = 10240 默认值 1024
objecter_inflight_op_bytes = 1048576000 默认值 100M
osd client端objecter的throttle配置,它的配置会影响librbd,RGW端的性能;
配置建议:
调大这两个值
7,ceph rgw配置参数
rgw_frontends = "civetweb num_threads=500" 默认值 "fastcgi, civetweb port=7480"
rgw_thread_pool_size = 200 默认值 100
rgw_override_bucket_index_max_shards = 20 默认值 0
rgw_max_chunk_size = 1048576 默认值 512 * 1024
rgw_cache_lru_size = 10000 默认值 10000 // num of entries in rgw cache
rgw_bucket_default_quota_max_objects = * 默认值 -1 // number of objects allowed
- rgw_frontends:rgw的前端配置,一般配置为使用轻量级的civetweb;prot为访问rgw的端口,根据实际情况配置;num_threads为civetweb的线程数;
- rgw_thread_pool_size:rgw前端web的线程数,与rgw_frontends中的num_threads含义一致,但num_threads 优于 rgw_thread_pool_size的配置,两个只需要配置一个即可