1. CEPH系统 MDSs behind on trimming 的警报
在CEPH系统的MDS服务中,文件系统的元数据以日志形式存放于segment中,每个sgement存放1024个操作记录。当文件系统的数据使用完毕,CEPH系统则会以一定的速度Trim (消除) 元数据信息,此时会将MDS服务器中的数据回写到CEPH的磁盘OSD中,以降低MDS服务器上运行的mds服务的内存消耗。当segment数量超过默认128个时,则CEPH报警,意味着MDS服务器中保存了过量的元数据信息,占用内存可能较多,需要及时注意。
[root@ceph101 ~]# ceph health detail HEALTH_WARN 2 MDSs behind on trimming [WRN] MDS_TRIM: 2 MDSs behind on trimming mds.cephfs.ceph102.imxzno(mds.1): Behind on trimming (2235/128) max_segments: 128, num_segments: 2235 mds.cephfs.ceph106.hggsge(mds.2): Behind on trimming (4260/128) max_segments: 128, num_segments: 4260
当遇到以上警告,若发现MDS服务器的内存足够,可以将默认阈值128提高,或加大Trim速度。
2. 解决办法
通过设置mds_log_max_segments参数来提高CEPH的 max_segments 数,在CEPH系统任意主机上运行即可。
ceph config set mds mds_log_max_segments 1024
通过设置参数来提升Trim速度。CEPH系统根据mds_cache_trim_threshold (默认256Ki)和mds_cache_trim_decay_rate (默认1.0)两个参数设置sgements的消除速度。默认设置下,当CEPH系统进行持续且Trim速度达到最大时,每秒钟Trim的记录数量为 ln(0.5)/rate*threshold 。当在CEPH系统中并行化读取或写入文件时,短时间内进行大量的文件操作,极容易导致segments过多,无法及时Trim。因此,需要提高Trim速度,其实也消耗不了太多CPU资源。
mds_cache_trim_threshold 设置了一定时间内能消除的最大文件数量。在进行Trim时,CEPH系统中有一个Counter程序记录了一定时间内被消除的文件数量。mds_cache_trim_decay_rate 参数和Counter程序的半衰期相关,该值越小,则半衰期越短。
默认参数值过于保守,下当为了提高Trim速度,推荐将 mds_cache_trim_threshold 参数提升到100倍,将mds_cache_trim_decay_rate参数降低到100倍。在任意一台CEPH主机中运行命令:
ceph config set mds mds_cache_trim_threshold 25600000
ceph config set mds mds_cache_trim_decay_rate 0.01