随着数据量越来越大,MFS的使用也出现了一些问题。以下是一些分析和总结。分享给大家: 先提一下MFS的问题经常出现两个信息:连接中断坏块问题 连接中断问题Master端会出现如下错误:mfsmaster[15861]:connectionwithclient(ip:10.11.18.175)hasbeenclosedbypeer表示client与master的连接中断mfsmaster[15861]:connectionwithML(10.11.19.76)hasbeenclosedbypeer表示Metalogger与Master的连接中断。MFS本身可以自动重连,不会出问题。Clinet或者ChunkServer主动断开连接,比如Kill进程,也会导致这个错误。ChunkServer或者Client到Master的连接会超时,也会断开。超时可能有两种原因。原因:Client请求过多,导致Master请求队列满,导致网络响应慢导致连接超时(区别于网闪)导致的问题:对于2-a:Client控制请求,比如ultra-高并发读写删除,另外一个需要注意的操作是ls,众所周知linux系统本身对一个目录下文件数的显示有限制(比如10W,那么涉及到的遍历命令会报错,列表太长)。同样,我们在MFS中遍历目录下的文件时,也要注意。遍历的文件过多会导致超时,导致连接中断等问题。对于2-b:合理分配带宽资源,优化网络环境。备注:Client或Chunk与Master的连接中断后,Client或Chunk会自动发出重连(Reconnection)和注册(Register)操作。坏块问题在Master端会出现如下错误:mfsmaster[3250]:chunkserverhasnonexistentchunk(000000000002139F_00000001),socreateitforfuturedeletionmfsmaster[3250]:(10.11.18.199:9422)chunk:000000000002139Fcreationstatus:20mfsmaster[3250]:chunk000000000002139Fhasonlyinvalidcopies(1)–pleaserepairitmanuallymfsmaster[3250]:chunk0000000000002139F_00000001–invalidcopyon(10.11.18.199–ver:00000000)mfsmaster[3250]:currentlyunavailablechunk000000000002139F(inode:135845:00000002139F)message3上面的master表示log2上面没有metadataChunkServer中有这样的block,系统会自动在ChunkServer上创建这个block,以便后续删除。因为没有内容,是非法拷贝,我们不能访问这个块。原因可能有很多,比如:客户端传输大文件时,强行拔掉master主机的电源,导致master非法关机。用mfsmetarestore-a修复后,master日志报错,ChunkServer的csstats.mfs存储空间有badblockInsufficient,导致无法写入文件blocks,也会导致block错误。手动删除ChunkServer上的块文件。删除文件后,Master异常终止后重启,但没有结果。变更日志。有很多,以后遇到了再补充。解决方法:在客户端使用mfsfilerepair修复文件。我理解的坏块有两种:一种是任何trunk节点都没有数据(修复工作其实就是生成chunk,在需要补充内容的地方填0,这种block需要之后被删除)另一种是有数据块的节点修复后可能会出现如下日志信息(从现有数据块复制过来,这里的块不需要删除):mfsmaster[3250]:Chunkhasnoteletedsprevious-retrymfsmaster[3250]:(10.11.18.199:9422)chunk:00000000000000000002139FDELETIRINSTATUS:13如果客户将无法显示此信息,则将显示此信息,例如:
