MFS(MooseFS)是一个容错的、网络分布式文件系统,是GFS的开源实现。它把数据分散在多个物理机上,对外展现为一个整体资源。

支持的功能

Unix的通用文件系统功能:目录树;记录POSIX文件属性(权限、最近读取、修改时间);支持特殊文件(块和字符设备、管道和套接口);符号链接和硬链接;根据IP和密码来设置读取文件的权限。

特殊功能:高可靠(数据有多个备份存放在不同的机器上);通过增加新机器或硬盘可以动态扩展容量;回收在指定时间内删除的文件(有系统级的垃圾回收站);文件读写时也能进行一致性快照保存。

四个组成单元

管理服务器(master server):负责各个数据存储服务器的管理、文件读写调度、文件空间回收以及恢复、多节点拷贝。
数据存储服务器(chunk server):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
元数据日志服务器(metalogger server):负责备份master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs ,以便于在master server 出问题的时候接替其进行工作。
挂载或读取MFS文件的客户机(client computers):用mfsmount进程与管理服务器(读写文件元数据)、数据存储服务器(交换文件数据)通信。mfsmount基于fuse机制,在linux、freebsd,macos x等实现了fuse的操作系统上都能运行。

优点

高可用性:表现在chunkserver端任何文件可以设置多个数据备份,这样任何一个数据备份丢失,不会导致文件的丢失,避免单点或多点故障;在metalogger端会实时的同步master端的元数据信息,当master出现故障时,可以采用metalogger接管master提供的服务。

高可扩展性:主要表现在数据存储可以支持在线的扩容,不会影响服务。

高性能:表现在master端支持高并发的client读写请求处理,同时在client端对文件的读写时,master会采用就近原则分配chunkserver来进行读写操作,这样可以提高整个系统的读写性能。

系统结构

工作原理

元数据存储同时存储在管理服务器的内存和磁盘上,二进制文件和log会传送到metalogger上以备份。文件会被切分成最大64MB的块,每块都以文件的形式存在各自的数据服务器上,通过配置冗余多份来实现高可靠。
在挂载到MFS的客户机上操作文件,操作系统内核会把所有的操作传送给fuse模块,fuse与mfsmount进程通信。mfsmount进程通过网络与管理服务器和数据服务器通信,整个过程对用户是透明的。
每当操作元数据的时候,mfsmount都会通知管理服务器,如创建文件、删除、读目录、改变文件属性、改变文件大小、读写数据开始时、获取文件元数据等。
mfsmount会直接读取存有数据块的数据服务器;写文件完成后会通知管理服务器更新文件长度和最后修改时间。
数据服务器间会互相通信备份数据,让一个文件在不同的机器上有适当数量的备份。

补:FUSE(filesystem in userspace)-用户空间文件系统,完全在用户态实现的文件系统,通过linux的fuse内核模块实现。

MooseFS学习-概述的更多相关文章

  1. 深度学习概述教程--Deep Learning Overview

          引言         深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...

  2. WPF学习概述

    引言 在桌面开发领域,虽然在某些领域,基于electron的跨平台方案能够为我们带来某些便利,但是由于WPF技术能够更好的运用Direct3D带来的性能提升.以及海量Windows操作系统和硬件资源的 ...

  3. iOS开发学习概述及知识整理

    设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...

  4. CentOS x 64 MooseFS 学习

    一.MFS 简介.... MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的 不同服务器上,支持FUSE,客户端可以作为一个 普通的Unix 文件 ...

  5. PGM:图模型学习概述

    http://blog.csdn.net/pipisorry/article/details/52571640 动机 前面我们讨论的问题出发点是给定一个图模型.如在独立性和推理讨论中,假定模型--结构 ...

  6. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  7. mooseFS学习篇

    官方网站:http://www.moosefs.org/ About MooseFS MooseFS is a fault tolerant, network distributed file sys ...

  8. Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟篇

    xilinx的7系列FPGA根据不同的器件类型,集成了GTP.GTX.GTH以及GTZ四种串行高速收发器,四种收发器主要区别是支持的线速率不同,图一可以说明在7系列里面器件类型和支持的收发器类型以及最 ...

  9. BS学习概述

    从最初的牛腩新闻公布系统,到如今的JS,回想一下,自己的BS也算是学了大半,可是有时候想起来还是总是有一种不踏实的感觉,一是由于从开学到如今赶上了三级考试,自考.软考,导致BS学习时间被大大压缩了,代 ...

随机推荐

  1. datagridview 定位到最后一行,定位不准的原因

    C# 写的 winform 程序,定位到最后一行 dgvGoods.FirstDisplayedScrollingRowIndex = dgvGoods.Rows.Count - 1; 测试中发现,一 ...

  2. jquery修改table某列的值

    开发的过程中,我们经常会遇到一些数和值之间的转换,比如本例:学部:1.小学,2.初中,3.高中;当然实现方法很多种,可以后台代码,也可以使用脚本... 修改前: 修改后: 代码: $("#t ...

  3. maven SpringMVC easyUI项目创建

    在Eclipse中使用Maven创建SpringMVC项目,项目所需软件及工具可以在官网下载.Maven.Nexus及Eclipse集成Maven等到此配置完毕. 1.Maven创建Web项目. 打开 ...

  4. Gray Code

    Gray Code The gray code is a binary numeral system where two successive values differ in only one bi ...

  5. AD帐户操作C#示例代码(一)——导入用户信息

    最近写了一个AD帐户导入的小工具(为啥写作“帐”户呢?),跟大家分享下相关代码,欢迎各位高手指教! 首先,我准备一个这样的Excel文件作为导入模版,并添加了一些测试数据. 然后,我打开Visual ...

  6. mac系统 下 npm 安装 bower报错

    在mac终端运行 sudo npm install -g bower (安装之前你要确定你已经成功安装了node 和 git) 然后会报错 like this: npm ERR! Darwin 15. ...

  7. MVC, MVP, MVVM比较以及区别

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  8. 十分钟能学会的框架,MVC+20个常用函数

    LazyPHP(以下简称LP)是一个轻框架. 之所以开发这么一个框架,是因为其他框架给的太多.在高压力的情况下,ORM和盘根错节的对象树反而将简单的页面请求处理复杂化,在调试和性能上带来反面效果. L ...

  9. C#交错数组

    交错数组本质上是一维数组只不过这个一维数组里的元素都是数组.因为该一维数组里面的元素可以是任何大小的数组所以定义时只能以这样的格式定义 ][]; 定义完后必须对该数组进行初始化后方可进行赋值等操作否则 ...

  10. 创建Xml文件与修改Xml文件

    /// <summary> /// 修改节点 /// </summary> /// <param name="user">UserSafe 实体 ...