mfs源码分析,学习笔记

  • MFS架构


  1. mfsmout向master获取chunk信息,向mfschunkserver发出读写数据的命令,chunkserver是磁盘IO的执行者。mfsmount是用户发出IO请求的命令接收者,master是mfs所有chunk和node信息的维护者。
  2. mfsmount:本地文件系统代理,挂接FUSE,监听文件系统IO。
  3. mfschunckserver:本地数据代理,数据节点间的数据复制,等待mfsmaster的调度。
  4. mfsmetalogger:元数据日志服务器,记录数据更改日志,便于recover。
  5. mfsmaster:总控制器,各个数据服务器的读写调度,节点间数据拷贝,数据节点管理等等。


  • mfsmount模块分析


  • mfschunkserver模块分析

  1. mfsmount向mfschunckserver发起READ指令,mfschunkserfer首先检查chunk的版本是否正确,需要读取chunk数据的大小以及偏移量是否合法,然后根据chunkid查找对应的chunk,打开chunk映射的文件。创建一个job异步读取数据。
  2. mfsmount向mfschunkserver发起WRITE指令,mfschunkserver首先验证chunk的版本是否正确,该请求是否需要chunkserver帮其转发到另外一个chunkserver中去处理,如果需要,请求的报文会带有另外一个chunkserver的ip地址和端口,cs为其建立连接转发请求。如果不需要转发,cs将创建一个job,异步的打开该chunk对应映射的文件。
  3. mfsmount从cs获取指定chunk对应的block的数量。
  4. mfsmount从cs获取指定chunk的校验和。
  5. mfsmount向cs获取disk的size信息。
  6. mfsmount向cs发出写数据请求,cs建立job,异步的完成写操作。

  • mfsmaster模块分析
inode维护在master端,用户维护文件信息,比如权限,路径等等,数据结构为:

chunk维护在master端,用于维护数据chunk信息,数据结构为:

  1. master同chunk server,mfsmount和metalogger都有交互。
  2. master会收到来自meta logger server的metadata.mfs/session.mfs的下载命令,命令阶段包括:MLTOMA_DOWNLOAD_START,MLTOMA_DOWNLOAD_DATA以及MLTOMA_DOWNLOAD_END三个阶段。第一阶段master先open相应的文件,第二阶段为传输文件数据,第三阶段为关闭文件。
  3. master会收到来自mete logger server的注册信息,将其维护在一个单链表中。这个单链表的节点,维护了meta logger server的文件描述符(socket),ip,版本号,心跳检测的timeout以及正在下载的metadata/session的文件描述符,具体的数据结构为matomlserventry。
  4. master会收到来自chunk server的注册信息,注册信息被维护在一个单链表中,具体的数据结构为matocsserventry。
  5. chunk server向master询问总空间和已经使用了多少空间。
  6. chunk server向master发送让某个chunk失效的指令。将chunk的状态置为INVALID。
  7. chunk server向master发送删除某个chunk的指令。
  8. 当chunk server发生错误,向master发出统计指令,发生错误的次数将记录在master中。
  9. chunk server向master发出获取创建chunk的状态的指令。
  10. chunk server向master发出获取删除chunk的状态指令。
  11. chunk server向master发出获取replicate chunk的状态指令。
  12. chunk server向master发出获取duplicate chunk的状态指令。
  13. chunk server向master发出获取设置chunk的版本号状态指令。
  14. chunk server向master发出获取truncate某个chunk的状态指令。
  15. master定时向自己维护的所有的TCP链路发出心跳检测包,确保TCP长连接有流量不会被断开。
  16. master将每秒钟,触发一次回收未使用的chunk定时任务。
  17. master有一个定时任务,每秒钟做一次内存中的chunk到文件系统的同步,写在metadata.mfs文件中。进程启动的时候,将从文件系统中同步所有的chunk信息到内存。
  18. master收到mfsmount进程的注册信息,并维护在单链表中,数据结构为matocuserventry。
  19. mfsmount向master查询文件系统摘要,包括chunk数量,版本号,ip,端口,已使用空间,总空间等信息。
  20. mfsmount向master查询session相关信息,metalog的信息,chunk矩阵等等。

  • mfsmetalogger模块分析
  1. mfsmetalogger作为客户端,建立和mfsmaster之间的TCP长连接,连接建立成功后,向mfsmaster发送注册信息,将major、minor和middle版本号以及将metalogger的连接超时时间一起送给mfsmaster验证。
  2. metalogger定时向自己发送心跳检测,保证自己的TCP连接不被底层协议栈断开。
  3. metalogger处理来自mfsmaster的获取change log的请求。metalogger将change log的长度和内容返回给mfsmaster。
  4. mfsmaster向metalogger发送开始下载meta data或session文件的请求,metalogger打开文件描述符,将文件总大小返回给mfsmaster。
  5. mfsmaster向metalogger发送下载meta data或session数据的请求,metalogger根据请求中提供的下载大小和偏移量,返回数据给mfsmaster。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值