1、MFS

  MooseFS是一个具有冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFs就相当于UNIX的文件系统。

2、MFS特性

  a、高可靠性:每一份数据可以设置多个备份(多分数据),并可以存储在不同的主机上;

  b、高可扩展性:可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个文件系统的存储量;

  c、高可容错性:我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依旧存放于主机的回收站中,以备误删除恢复数据;

  d、高数据一致性:即使文件被写入、访问时,我们依然可以轻松完成对文件的一致性快照;

3、MFS缺点

  a、Master目前是单点,虽然会把数据信息同步到备份服务器,但是恢复需要时间(这里指的社区免费版,企业版可提供高可用方案,社区版可通过keepalive+drdb实现)

  b、Master服务器对主机的内存要求略高(读写存储在内存)

  c、默认Metalogger复制元数据时间较长(即完整备份,可调整)

  内存使用问题:

    处理一百万个文件chunkserver,大概需要300M的内存空间。以此类推,如果要处理1个亿的文件chunkserver,大概需要30G内存空间。

4、MFS适用场景

  a、大规模高并发的线上数据存储及访问(小文件、大文件都适合)

  b、大规模的数据处理,如日志分析,小文件强调性能不用HDFS

5、MFS结构及原理

  

MFS Master 存储元数据信息

chunkserver存储真实数据的服务

6、组件说明

  管理服务器managing server 简称master:

    这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的metadata信息,metadate(元数据)信息包括文件(也可以是目录、socket、管道、块设备等)的大小,属性,文件的位置路径等

  元数据备份服务器Metadata backup server简称metalogger:

    这个组件的作用是备份管理服务器master的变化的metadate信息日志文件,文件类型为changelog_ml.*.mfs。以便于在管理服务器出问题时,可以经过简单的操作即可让新的主服务器进行工作。

7、遍历访问过程

  读取过程

  

  删除过程

  

  修改过程

  增加文件过程

8、存储文件变更

  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,新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不能写入了,当时可以空间为1.9GB

  文件可以有多份copy,当goal为1时,文件会被随机存到一台chunkserver上,当goal的数大于1时,copy会由master调度保存到不同的chunkserver上(如goal为2会在写入一台chunkserver后再copy到另一台chunkserver上做冗余并保持两个,如果chunkserver只有一台,则只保存一份数据),goal的大小不要超过chunkserver的数量,否则多次的copy,不会有chunkserver去存

MFS分布式存储特性及组件说明的更多相关文章

  1. CentOS6.5下安装mfs分布式存储(转)

    MFS文件系统的组成 1.  元数据服务器.在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当.希望今后MFS能支持多个m ...

  2. SpringBoot核心特性之组件自动装配

    写在前面 spring boot能够根据依赖的jar包自动配置spring boot的应用,例如: 如果类路径中存在DispatcherServlet类,就会自动配置springMvc相关的Bean. ...

  3. vue组件参数校验与非props特性

    组件参数校验 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  4. ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS.Cloud-ready环境配置降低了云端部 ...

  5. Vue.js学习 Item11 – 组件与组件间的通信

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...

  6. [转] HTC:html组件

    ~~~不时会看到 用htc实现 hover, border-raius等效果,可以用来弥补IE6-8的不足.那么htc到底是什么呢? 1.摘要 本文在实例的基础上讨论了HTC(HTML Compone ...

  7. 基于NHibernate二级缓存的MongoDB组件

    设计一套基于NHibernate二级缓存的MongoDB组件(上)   摘要:NHibernate Contrib 支持很多第三方的二级缓存,如SysCache,MemCache,Prevalence ...

  8. Omi树组件omi-tree编写指南

    Omi框架能够以少量的代码声明式地编写可拖拽移动节点的树形组件. 通常树组件能够考验UI框架的健壮性,因为需要使用到UI框架的如下特性: 组件嵌套 组件传值 组件批量传值 组件依赖自身递归嵌套(nes ...

  9. react - 解刨组件的多种写法

    一,原始的createClass写法 对于写react组件,很多人第一印象往往是createClass,这是因为createClass是react组件最原始的写法,基本每个学react的人都是接触这种 ...

  10. 前端MVC Vue2学习总结(五)——表单输入绑定、组件

    一.表单输入绑定 1.1.基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖, ...

随机推荐

  1. Ubuntu: 升级或安装最新版本的 Nginx

    Ubuntu 默认 apt 源中的 Nginx 版本比较旧,今天介绍下如何在 Ubuntu 中安装最新版本的 Nginx. 要安装较新版本的 Nginx, 可以使用 Nginx 的 APT 源.执行如 ...

  2. Qt中的线程编程

    在基于操作系统的程序设计中,在处理多任务时,可以有多种方法,但效率较高的当属线程方式,下面就来讨论一下在Qt中如何实现线程编程. 先来说一下什么是线程.线程(thread)是操作系统能够进行运算调度的 ...

  3. 使用element上传图片的时候的限制只上传一个的问题

    <el-form-item label="轮播图图片" prop="image"> <el-upload class="avatar ...

  4. NIO 缓冲区 ByteBuffer 基本认识

    一.差别 java.nio.HeapByteBuffer 0. 获取方式:ByteBuffer.allocate(int value); 1. java堆内存,读写效率较低,但分配内存较块. 2. 受 ...

  5. 每日一抄 Go语言使用select切换协程

    看了两篇博客,一个说:在任何一个 case 中执行 break 或者 return,select 就结束了. 另一个说:break只能跳出select中的一个case 验证了一下,不知道对不对,感觉是 ...

  6. 最简单明了的yield from解释

    def one(): print('one start') res = yield from two() print('function get res: ', res) return 'one' + ...

  7. Jetbrains Rider 2020.1.4 安装教程

    话说Visual Studio 是世界第亿的IDE没人反对吧!!! 用惯了VS之后就不得不吐槽他的运行效率,五步一停十步一卡的岁月也不得不熬过来了,然而!!! 看到了视频里别人使用了Rider,集成了 ...

  8. C# NN算法实现

    NN算法的核心是,欧式距离(Euclid),在分类的数据中,找到与目标数据欧式距离最近的点,把目标点分类到其类,算法很简单,下面是C#代码的实现: namespace LocationService. ...

  9. 【shell脚本实战】脚本#35 分析每个用户使用的磁盘空间大小

    #!/bin/bash #设置 一个变量代表临界值,看看是否能超过这个值,单位是MB MAXDISKUSAGE=20000 #cut -d: -f1,3 /etc/passwd | awk -F: ' ...

  10. ADC参悟

    SFDR比信噪比大15dB,怎么跟应用联系起来,分别决定了啥?