MFS分布式文件系统简介

分布式原理

  • 分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。

MFS概述

  • MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MFS特性

MooseFS是一个分布式存储的框架,其具有如下特性:

  • Free(GPL)
  • 通用文件系统,不需要修改上层应用就可以使用。
  • 可以在线扩容,体系架构可伸缩性极强。
  • 部署简单。
  • 高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!)
  • 可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性!)
  • 提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)
  • google filesystem的一个c实现。
  • 提供web gui监控接口。
  • 提高随机读或写的效率(有待进一步证明)。
  • 提高海量小文件的读写效率(有待进一步证明)。
可能的瓶颈
  1. master 本身的性能瓶颈。mfs 系统 master 存在单点故障如何解决?moosefs+drbd+heartbeat
    来保证 master 单点问题?不过在使用过程中不可能完全不关机和间歇性的网络中断!
  2. 体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存中,文
    件越多,master 的内存消耗越大,8g 对应 2500w 的文件数,2 亿文件就得 64GB 内存 )。
    master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。
MFS的组成
  • 元数据服务器(Master,也称为管理服务器):在整个体系中负责管理文件系统,维护元数据,负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝。
  • 元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,当master服务器损坏,可以从日志服务器中取得文件恢复。
  • 数据存储服务器(Chunk Server):真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好。负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
  • 客户机挂载使用( client computers): 可以像挂载NFS一样,挂载MFS文件系统。通过fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地unix 文件系统使用一样的效果。
    在这里插入图片描述
MFS读数据的处理过程
  • 客户端当需要一个数据时,首先向元数据服务器(master)发出读请求;
  • 元数据服务器检索自己的数据,获取到数据所在的存储服务器chunk server的ip|prot|chunkid;
  • 元数据服务器把chunk server存储服务器的地址等告知客户端;
  • 客户端向已知的Chunk Server请求获取数据;
  • Chunk Server向客户端发送数据 。
    在这里插入图片描述
MFS的写数据的过程
  • 当客户端有数据写需求时,首先,客户端向元数据服务器(master)发送写入请求,向master服务器提供文件元数据信息请求存储地址(元数据信息比如:文件名|大小|份数);
  • 元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由chunk Servers告知元数据服务器操作成功
  • 元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
  • 客户端向指定的Chunk Server写入数据
  • 该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功;
  • 客户端告知元数据服务器本次写入完毕 。
    在这里插入图片描述
    注意:原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬
    盘和网络的吞吐量越好,整个系统的性能也就会越好。
MFS的删除文件过程
  • 客户端有删除操作时,首先向元数据服务器Master发送删除信息;
  • Master定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理;
  • 响应客户端删除成功的信号。
MFS修改文件内容的过程
  • 客户端有修改文件内容时,首先向Master发送操作信息;
  • Master申请新的块给.swp文件
  • 客户端关闭文件后,会向Master发送关闭信息;
  • Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块;
  • 若无,则直接删除.swp文件块
MFS重命名文件的过程
  • 客户端重命名文件时,会向Master发送操作信息;
  • Master直接修改元数据信息中的文件名;
  • 返回重命名完成信息;
MFS遍历文件的过程
  • 遍历文件不需要访问chunk server,当有客户端遍历请求时,向Master发送操作信息;
  • Master返回相应元数据信息;
  • 客户端接收到信息后显示。

注意

  • Master记录着管理信息,比如:文件路径|大小|存储的位置(ip,port,chunkid)|份数|时间等元数据信息存在于内存中,会定期写入metadata.mfs.back文件中,定期同步到metalogger操作实时写入changelog.*.mfs,实时同步到metalogger中。master启动将metadata.mfs载入内存,重命名为metadata.mfs.back文件。
  • 文件以chunk大小存储,每chunk最大为64M小于64M的,该chunk的大小即为该文件大小(验证实际chunk文件略大于实际文件)超过64M的文件将被切分,以每一份(chunk)的大小不超过64M为原则;块的生成遵循规则:目录循环写入(00-FF 256个目录循环,step为2)、chunk文件递增生成、大文件切分目录连续。
  • Chunkserver上的剩余存储空间要大于1GB(Reference Guide有提到),新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不行写入了,当时可用空间为1.9GB。
  • 文件可以有多份copy,当goal为1时,文件会被随机存到一台chunkserver上,当goal的数大于1时,copy会由master调度保存到不同的chunkserver上,goal的大小不要超过chunkserver的数量,否则多出的copy,不会有chunkserver去存。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值