问题描述
我们有9个节点的Ceph集群。 Ceph版本是15.2.5。群集具有175 OSD(HDD)+ 3 NVMe作为“ cephfs_data”池的缓存层。 CephFS池信息:
kubectl port-forward --namespace default svc/my-release-mongodb-headless 27017:27017
我们使用了多个活动的mds实例:3个“活动”和3个“备用”。每个mds服务器都有128GB RAM,“ mds缓存内存限制” = 64GB。
故障转移到备用mds实例需要10到15个小时!客户端一直无法访问CephFS。在这段时间内,mds实例一直处于“ up:replay”状态。看起来mds恶魔在此步骤中检查了所有文件夹。我们有数百万个文件夹和数百万个小文件。文件夹/子文件夹扫描完成后,CephFS再次处于活动状态。我认为mds故障转移期间的10个小时停机是意外的行为。有什么方法可以强制mds将状态更改为活动状态并在后台运行所有必需的目录检查?如何定位根本原因?
P.S .:我们尝试了待机重播,它虽然有帮助,但并未消除根本原因。
解决方法
mds_log_max_segments = 100000是根本原因。该值应小于1000。