metadata文件_cephfs文件系统只读(MDS in read-only mode)分析

本文详细分析了CephFS文件系统因metadata文件导致的只读问题,指出是由于client的sessionmap数据量过大,超过osd_max_write_size阈值,使得MDS无法成功更新元数据。文中探讨了completed_requests的增加与删除机制,并提供了临时解决方案——增大osd_max_write_size配置并重启服务,以及长期预防措施——排查异常客户端并重新挂载。
摘要由CSDN通过智能技术生成

e862dd5aaf0abf2b992196cf78ed3d9c.png

问题描述

网易轻舟是一站式云原生软件生产力平台,其底层存储使用到了cephfs文件系统。在使用过程中遇到了cephfs文件系统只读导致的所有目录挂载都只读,无法提供写入服务的问题。所以希望对该问题进行一个记录,希望可以帮助到有需要的朋友。

问题分析

问题现象梳理

通过ceph status命令可以看到输出信息中是有文件系统只读告警信息的。但是为了知道文件系统具体在哪个时间点可读了,可以查看mds日志,如下:

root@****:/var/log/ceph# zcat ceph-mds.***.log.5.gz  |grep read
2020-09-02 18:59:11.047289 7f7eebecb700 -1 mds.0.11 unhandled write error (90) Message too long, force readonly...
2020-09-02 18:59:11.047306 7f7eebecb700  0 log_channel(cluster) log [WRN] : force file system read-only

从上面mds的日志,找到mds输出日志的对应函数为handle_write_error,这条错误的大概意思就是写入数据的时候,消息太长。所以查看mds对应的元数据osd池子对应的osd日志信息,找到对应超出写入数据阈值的错误日志,如下:

root@***:/# grep osd_max_write_size /var/log/ceph/ceph-osd.*.log | grep -v obs
/var/log/ceph/ceph-osd.29.log:2020-09-02 18:59:11.034295 7f204d920700 -1 osd.29 pg_epoch: 6549 pg[1.b( v 6549'49473573 (6549'49472028,6549'49473573] local-lis/les=142/143 n=2885 ec=118/118 lis/c 142/142 les/c/f 143/143/0 142/142/142) [29,19,9] r=0 lpr=142 crt=6549'49473573 lcod 6549'49473572 mlcod 6549'49473572 active+clean] do_op msg data len 94389873 > osd_max_write_size 94371840 on osd_op(mds.0.11:14836130260 1.b 1:d0630e4c:::mds0_sessionmap:head [omap-set-header,omap-set-vals,omap-rm-keys] snapc 0=[] ondisk+write+known_if_redirected+full_force e6549) v8

从上面的osd日志可以看出,是写入的sessionmap相关的数据量太大了。sessionmap可以通过rados -p fs_meta listomapvals mds0_sessionmap > test命令导出来,该文件大小已经超过了osd_max_write_size的阈值90M,进而查看该文件。发现有一个client对应的session值特别大,sessionmap的容量基本就是其占据的,如下图所示:

775d61c831089e2d8b68f47750f60716.png

原因分析

通过上面的现象梳理,我们已经知道是因为客户端的sessionmap相关的数据量太大了,然后mds把session发送给osd的时候,osd因为收到的该消息阈值大于osd_max_write_size,所以引发了mds的元数据session信息更新失败,然后导致了文件系统只读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值