初识分布式文件系统之MFS            

MooseFS

Posted by     BY   杨晓明              on September 8, 2017

MFS分布式文件系统介绍与部署

一、简介

1.概述

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

  • mfs是一个分层的目录树结构
  • 存储支持POSIX标准的文件属性(权限,最后访问和修改时间)
  • 支持特殊的文件,如:块设备,字符设备,管道和套接字,链接文件(符号链接和硬链接)
  • 支持基于IP地址和密码的方式访问文件系统

2.特性

  • 高可靠性,每一份数据可以设置多个副本(多份数据),并可以存储在不同的主机上
  • 高可扩展性,可以很轻松的通过增加主机磁盘容量或增加主机数量来动态扩展整个文件系统的存储量
  • 高可容错性,我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依然存放于主机的回收站中,以备误删恢复数据
    1. 高数据一致性,即便文件被写入/访问时,我们依然可以完成对文件的一致性快照

3.优缺点

1).优点

  • 数据高可用性(数据可以存储在多个机器上的多个副本)
  • 在线动态扩展存储
  • 垃圾回收站
  • 文件快照(本文不研究)

    2).缺点

  • 单点故障:即使V1.6增加了Metalogger,但不能达到故障自动切换
  • 数据校验:为了提高存储效率,MFS的数据块不创建校验值(checksum),降低了一定的数据安全性
  • 规模试用:适用于小规模的分布式文件系统,除非进行相关的二次开发
  • Metalogger Server 复制元数据的间隔时间较长(可调整)

4.应用场景

谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。

  • 大规模高并发的数据存储及访问(小文件、大文件),TFS适合小文件(<1M)
  • 大规模的数据处理,如日志分析

    二、工作原理

    1.架构

    Alt text

    图片来自:http://bigbo.github.io/pictures/mfs_pic3.png

1).MFS文件系统结构包含4种角色:

  • 管理服务器managing server(master) 负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝.单个机器管理整个文件系统,用来存储记录每一个文件的Metadata(记录文件的大小;文件的属性;文件的位置;也包括非规则文件的系统;如目录;sockets;管道和设备)
  • 元数据日志服务器Metalogger server(Metalogger) 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作.
  • 数据存储服务器data servers (chunkservers) 负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
  • 客户机挂载使用client computers 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地unix文件系统使用一样的效果.

2).MFS的读数据过程

  • client当需要一个数据时,首先向master server发起查询请求
  • master server检索自己的数据,获取到数据所在的可用数据服务器位置ip/port/chunk_id
  • master server将数据服务器(chunk server)的地址发送给客户端
  • chunk server将数据发送给客户端

    3).MFS的写数据过程

  • 当客户端有数据写需求时,首先向master server提供元文件元数据信息请求存储地址(元数据信息如下:文件名/大小/分数等)
  • master server根据写文件的元数据信息,到chunk server创建新的数据块
  • chunk server返回创建成功的消息
  • master server将chunk server的地址(chunk_ip/port/chunk_id)返回给客户端
  • 客户端向chunk server写数据
  • chunk server返回给客户端写成功的消息
  • 客户端将此次写完成结束信号和一些信息发送到master server来更新文件的长度和最后修改时间

    4).MFS的删除文件过程

  • 客户端有删除操作时,首先向master server发送删除信息
  • master server定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理
  • 响应客户端删除成功的信号

    5).MFS修改文件内容过程

  • 客户端有修改文件内容时,先向master server 发送操作信息
  • master server申请新的块给.swp文件
  • 客户端关闭文件后,会向master server发送关闭信息
  • master server 会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块
  • 若无,则直接删除.swp文件块

    6).MFS重命名文件过程

  • 客户端重命名文件时,向master server 发送操作信息
  • master server直接修改元数据信息中的文件名,返回重命名完成信息

    7).MFS遍历文件的过程

  • 遍历文件不需要访问chunk server,当有客户端遍历请求时,向master server发送操作信息
  • master server返回相应元数据信息
  • 客户端接收到信息后显示