Moosefs分布式文件系统

一、简介

1.什么是分布式文件系统

  • 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。
  • 是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。
  • 通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般。
  • 容错。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。
  • 适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。
    为什么小文件不适合呢?瓶颈在于存储元数据信息。元数据信息存放在namenode上,为保证数据安全和快速读写,namenode把信息放到磁盘一份和内存一份。

常见的分布式文件系统
GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

2.什么是MooseFS

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

MFS基于TCP/IP协议,存储对网络要求比较高,尽量在一个vlan里,也可以不在一个vlan,但是必须保证他们之间是高速网络(通过光纤或者无线带宽技术),网络不好会增加延迟。

3.适用场景

MooseFS是一款相对小众的分布式文件系统,不需要修改上层应用接口即可直接使用,支持FUSE的操作方式,部署简单并提供Web界面的方式进行管理与监控,同其他分布式操作系统一样,支持在线扩容,并进行横向扩展。MooseFS还具有可找回误操作删除的文件,相当于一个回收站,方便业务进行定制;同时MooseFS对于海量小文件的读写要比大文件读写的效率高的多。
但MooseFS的缺点同样明显,MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展。短期的对策就是按照业务来做切分,随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大。并且对于其单点问题官方自带的是把数据信息从Master Server同步到Metalogger Server上,Master Server一旦出问题Metalogger Server可以恢复升级为Master Server,但是需要恢复时间。目前,也可以通过第三方的高可用方案(heartbeat+drbd+moosefs)来解决 Master Server 的单点问题。

4.四大组件

  • 管理服务器(Master Server):这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中的每个数据文件的metadata信息,metadata(元数据)信息包括文件(也可以是目录、socket、管道、设备等)的大小、属性、文件位置路径等,以及文件空间的回收和恢复,控制多chunk server节点的数据拷贝。很类似lvs负载均衡主服务器,不同的是lvs仅仅根据算法分发请求,而master根据内存里的metadata信息来分发请求。这个master只能有一台处于激活工作的状态。
  • 元数据日志服务器(metalogger Server):作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_ml.*.mfs,以便于在主服务器出现问题的时候,可以经过简单的操作即可让新主服务器进行工作。这很类似Mysql的主从同步,只不过他不像mysql从库那样在本地应用数据,而只是接收主服务器上文件写入时记录的文件相关的metadata信息。这个backup可以有一台或多台,它很类似于lvs从负载均衡器。
  • 数据存储服务器(Chunk Servers):存放数据文件实体的服务器,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,剧写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。
  • 客户端(Client):挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体。mfs客户端通过FUSE mechanism实现挂载MFS文件系统的。因此,只要系统支持FUSE,就可以作为客户端访问MFS整个文件系统。所谓的客户端并不是网站用户,而是前端访问文件系统的应用服务器,如web

5.工作方式(读写原理)

Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。

读的工作方式

  • 首先client客户端访问主服务器master,获取文件实体的位置等相关信息。
  • 主服务器master查询缓存记录,把文件实体的位置等相关信息发给client客户端。
  • Client客户端根据拿到的信息去访问对应的存储实体数据的服务器(data servers或者chunk servers)。
  • 存储实体数据的服务器(data servers或者chunk servers)把对应的数据返回给Client客户端。
    我们还可以看出,当多个MFS客户端读数据的时候,master服务器充当路由为这些客户端分发指路的作用,而数据的返回时由不同的数据服务器直接返回给请求的客户端,这样的模式可以极大的减轻主服务器的系统及网络瓶颈,增加了整个系统的吞吐。

在这里插入图片描述

写的工作方式

  • Client客户端访问主服务器master,请求写入数据。
  • 主服务器master查询缓存记录,如果是新文件,则会联系后面的数据服务器创建对应的chunk对象准备存放文件。
  • 数据服务器返回创建对应的chunk对象成功给主服务器。
  • 主服务器master把文件实体的位置等相关信息发给client客户端。
  • Client客户端访问对应的数据服务器写数据。
  • 数据服务器之间进行数据同步,互相确认成功。
  • 数据服务器返回成功写入信息给Client客户端。
  • Client客户端回报给主服务器master写入结束。

写分为更新和创建,如果是更新直接执行第三步

在这里插入图片描述

实验环境:
master:server4
chunk:server5,server6,server7
client:foundation5

创建3个虚拟机,server4内存给2G,server4储存元数据,性能消耗大。server5,server6给1G。

二、安装配置Moosefs主节点

Moosefs官网
软件或配置可以直接在官方网站进行查看
我选择的是CentOS / Fedora / RHEL

1.配置yum源(直接从官网进行下载)

首先真机做一个火墙的伪装,使虚拟机能上网

[root@foundation5 ~]# iptables -t nat -I POSTROUTING -s 172.25.5.0/24 -j MASQUERADE 
[root@server4 ~]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168  100   168    0     0    243      0 --:--:-- --:--:-- --:--:--   242
[root@server4 ~]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
MooseFS                                                                   | 2.9 kB  00:00:00     
rhel7.6                                                                   | 4.3 kB  00:00:00     
(1/3): rhel7.6/group_gz                                                   | 146 kB  00:00:00     
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值