mfs分布式文件系统


MFS原理:

数据分散在多个物理服务器上,呈现给用户统一的资源


mfs角色

1:master (master记录数据存放信息,类似于lvs,只是lvs仅仅依靠算法分发请求而master是根据内存中记录的metadata信息来分发请求的)

2:metalogger(把master中记录的数据存放信息实时同步到热备服务器(文件类型chagelog_ml.*.mfs)如果master挂了可以直接启用metalogger)

3:chunkserver(存储数据的服务器,数据存放方式为二进制)

4:client_server (通过fuse挂载到master上,通过master来请求chunkserver的数据)


mfs读取数据的处理过程:

客户端向元数据发出读请求。

元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Churk编号)告知客户端。

客户端向已知的Churk Server请求发送数据。

Churk Server向客户端发送数据。


mfs写入数据的处理过程。

客户端向元数据服务器发送写入请求。

元数据服务器与Churk Server进行交互(只有当所需的分块Churks存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块Churks,创建成功后由ChurkServers告知元数据服务器操作成功。

元数据服务器告知客户端,可以在哪个Churk Server的那些Churks写入数据。

客户端向指定的Churk Server写入数据。

该Churk Server与其他Churk Server进行数据同步,同步成功后Churk Server告知客户端数据写入成功。

客户端告知元数据服务器本次写入完毕。


mfs故障模拟以数据恢复方式

第一种:利用rsync+intofy实时备份master的etc和var文件下的所有数据到备服务器

第二种:利用matelogger来恢复,将matelogger的var目录下的数据上传到master服务器上

用/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*来恢复数据

第三种:将matelogger启用代替为master

将matelogger停掉,用/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*来恢复数据