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. 原创:USB HID读卡器数据解析(R321-13.56MHZ读卡器)

    1.工具准备 USB 监视软件:Device Monitoring Studio7.25 PC端软件:单片机多功能调试助手 2.发送数据包 接收数据包 3.数据分析 usb hid(pc软件)发送帧( ...

  2. PyMySQL删除

    title: PyMySQL删除 author: 杨晓东 permalink: PyMySQL删除 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - ...

  3. nginx的nginx.conf配置文件如何修改代理的路由

    方法 location /api/ { set $request_uri_new $request_uri; if ($request_uri ~ "^/api/(.*)$") { ...

  4. canvas合并图片并长按保存

    代码实现 <div class="pho-bg"> <img src="../../assets/images/FeedbackActivity/pos ...

  5. 实验:在Arduino上使用printf格式化输出到串口

    那么在pcDuino上如何用printf函数将数据从串口送出来呢?这就需要修改Arduino上的串口的库文件了.修改 步骤如下:  1.在 pcduino上arduino的库文件路径是:/usr /a ...

  6. js检测邮箱格式,正则检测邮箱格式

    网上搜了关于邮箱格式的检测,发现很多不太适用,我自己写了一个,可以检测有开头和没开头的,又可以检测@,@qq. 后的格式 var myReg=/^(\w|(\.\w+))+@([a-zA-Z0-9_- ...

  7. Cxf框架中@WebService注解的使用

    最近工作中总是不可避免的使用WebService来对接功能,经过自己一番摸索,总结出了一些使用方法,做一下记录: 记录了两个SpringBoot版本使用WebService的一些问题和用法,Sprin ...

  8. iOS开发--APP性能检测方案汇总

    1 . CPU 占用率 CPU作为手机的中央处理器,可以说是手机最关键的组成部分,所有应用程序都需要它来调度运行,资源有限.所以当我们的APP因设计不当,使 CPU 持续以高负载运行,将会出现APP卡 ...

  9. javase我的笔记

    学习java编程 |--需要遵循其语法规范 |--在其开发环境下编程 准备开发java环境 |--安装jdk |--配置jdk jdk:含义是java提供的一套开发工具,包含jre\编译器等 |--编 ...

  10. Debug --> wireshark中的lua插件使用

    一.使用Lua脚本对pcap文件按流进行存储 https://zhuanlan.zhihu.com/p/35188803 二.使用tshark对pcap报文进行批量切流 https://blog.cs ...