当前位置: 首页 > Linux

ceph故障排除记录

时间:2023-04-06 20:22:17 Linux

mon故障Mon无法启动现象描述由于某种原因,ceph-mon无法启动。Ceph-mon无法启动,原因可能是mointor级别的db损坏,数据丢失等。在OS正常的情况下(osd运行正常),只有ceph-mon无法启动。在这种情况下,删除节点然后添加它们将导致数据的二次平衡。如果数据量很大,则需要很长时间。因此,处理1可以通过重建ceph-mon来实现。在当前节点上,停止ceph-mon,导出monmap,然后通过monmaptool工具手动修改monmap,修改后导入到剩余的monmap中,最后通过cephmondump验证是否删除成功ceph-mon-i{mon-id}--extract-monmap{map-path}#例如,ceph-mon-ia--extract-monmap/tmp/monmapmonmaptool{map-path}--rm{mon-id}#forexamplemonmaptool/tmp/monmap--rmbceph-mon-i{mon-id}--inject-monmap{map-path}#例如ceph-mon-ia--inject-monmap/tmp/monmap2,删除成功后,重新开始添加,通过ceph-monleaderceph-m10.10.10.62mongetmap-omonmap3导出已有的monmap,在/data/目录下生成ceph-mon目录,mon-id为5个字符串,ceph-mon-iwsgws--mkfs--monmapmonmap4,addnewceph-montomonmapcephmonaddwsgws10.10.10.61:67894,restartezs3-agentwilladdnewmontoceph.confOSDFAILEDassert(0=="unexpectederror")现象描述Ceph0.67版本,osd日志有如下错误-3>2017-10-1816:44:55.3653257fdb5a6c0bc00filestore(/data/osd.13)error(39)Directorynotemptynothandledonoperation21(28581659019.0.0,或op0,从0开始计数)-2>2017-10-1816:44:55.3653407fdb5a6c0bc00filestore(/data/osd.13)ENOTEMPTY建议osd数据目录中的垃圾数据-1>2017-10-1816:44:55.3653437fdb5a6c0bc00filestore(/data/osd.13)transactiondump:{"ops":[{"op_num":0,"op_name":"rmcoll","collection":"24.36_TEMP"}]}0>2017-10-1816:44:55.3673807fdb5a6c0bc0-1os/FileStore.cc:在函数'unsignedintFileStore::_do_transaction(ObjectStore::Transaction&,uint64_t,int)'thread7fdb5a6c0bc0time2017-10-1816:44:55.365391os/FileStore.cc:2471:FAILEDassert(0=="unexpectederror")处理,可以看到日志提示24.36_TEMP中有垃圾数据,手动进入目录,找到一个文件,删除Unfoundobject处理现象描述Ceph0.67版本,osd故障恢复后,发现集群有2个unfoundobject处理1、确认unfound所在pgroot@Storage-b6:/etc/cron.d#cephhealthdetail|grepunfoundHEALTH_WARN1219pgs回填;1pgs回填;1079pgs降级;2pgs恢复;1222pgs卡住不干净;回收3661003/50331903降解(7.274%);3/25061739未找到(0.000%);s)setpg17.2c3处于活动状态+正在恢复+降级状态,执行[20,2],1unfoundpg17.2b1处于活动状态+正在恢复+降级状态,处于[20,2],2无法打开/data/osd.22上的OSD超级块,如果要确认具体的对象,可以使用cephpg17.2b1list_missing3标记对象cephpg2.5mark_unfound_lostrevert这个命令不一定回滚。如果对象是新的,ceph对象有版本信息吗?参考http://docs.ceph.com/docs/arg...unabletoopenOSDsuperblockon/data/osd现象描述2017-10-1012:00:15.5348317fda0e7b97c0-1^[[0;31m**错误:无法在/data/osd.2上打开OSD超级块:(2)没有这样的文件或目录^[[0m2017-10-1014:14:58.1961447f71363c27c00ceph版本0.94.9-1061-g9bcd143(9bcd143a70b819086b9e58e0799ba93364d7ee31),进程ceph-osd,pid72502017-10-1014:14:58.1984767f71363c27c0-1无法打开ERRD/OSdata/OSM上的^[[0;/osd.2:(2)Nosuchfileordirectory^[[0m这个错误说明osd盘没有挂载,所以无法打开superblock文件(superblock),df-h查看osd盘没有挂载并检查/var/log/kern.logOct1014:14:54142kernel:[120.133734]EXT4-fs(dm-0):ext4_check_descriptors:Checksumforgroup32640failed(58283!=0)中报告了以下错误)Oct1014:14:54142kernel:[120.133739]EXT4-fs(dm-0):groupdescriptorscorrupted!Oct1014:14:54142kernel:[120.214674]EXT4-fs(dm-1):not4_check_descriptors:Inodebitmapforgroup34688ingroup(block2037277037)!Oct1014:14:54142kernel:[120.214679]EXT4-fs(dm-1):groupdescriptorscorrupted!tune2fs检查了dm设备发现没有EXT-4错误记录,里面也显示tune2fs也有不及时的时候。处理方法:e2fsck-p/dev/dm-0提示notworkinge2fsck-y/dev/dm-0勉强修复,需要重新格式化osd才能彻底修复原因描述检查磁盘缓存策略是否关闭,设备强制关机前被关机(raid卡透传的Converger环境)mdsfaultmds/MDCache.cc:216:FAILEDassert(inode_map.count(in->vino())==0)mdsstateisreplay,hasbeenunable要恢复,ceph版本是0.67oldversion-4>2017-10-0621:21:23.1994407f5c636317000mds.0.cache.dir(609)_fetchedbadness:got(butialreadyhad)[inode1000004e2b0[2,head]/shareroot/block-hz/routinebackup/2017-09-29/log/check_img.5b8ebf83-30c9-4c3c-b6be-bb37544d672f.logauthv296s=0n(v01=1+0)(版本锁)0x368f050]模式33188mtime2017-09-2905:09:03.364737-3>2017-10-0621:21:23.1994707f5c636317000日志[ERR]:加载dupinode1000004e2b0[2,head47at49d4915]/1000004e2b0,但inode1000004e2b0。headv296已经存在于/shareroot/block-hz/routinebackup/2017-09-29/log/check_img.5b8ebf83-30c9-4c3c-b6be-bb37544d672f.log-2>2017-10-0621:21:23.1994787f570603mds.0.cache.dir(609)_fetchedbadness:got(但我已经有了)[inode1000004e2b1[2,head]/shareroot/block-hz/routinebackup/2017-09-29/log/check_img.bf45b4c0-717f-4ae4-b709-0f3cb8cd8650.logauthv298s=0n(v01=1+0)(版本锁)0x3695590]模式33188mtime2017-09-2905:09:03.413889-1>2017-10-0621:21:23.1995007f5c636317000log[ERR]:已加载dupinode1000004e2b1[2,head]v4917497407at~mds0/stray9/1000004e2b1,但inode1000004e2b1.headv298已存在于/shareroot/block-backup07-hz/2-rout1029/log/check_img.bf45b4c0-717f-4ae4-b709-0f3cb8cd8650.log0>2017-10-0621:21:23.2017317f5c63631700-1mds/MDCache.cc:在函数'voidMDCache::add_inode(CI*'thread7f5c63631700time2017-10-0621:21:23.199831mds/MDCache.cc:216:FAILEDassert(inode_map.count(in->vino())==0)处理方法可以在ceph.conf中加入添加mds配置:mds_wipe_ino_prealloc=true重启mds,然后删除ceph.conf中的配置项mds/journal.cc:1397:FAILEDassert(mds->sessionmap.version==cmapv)activemdslog有这个assert处理方式因为ceph0.67版本,重新构建了mdsbinary,去掉了assert