4、MFS存储

MFS简介

定义

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

特性

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

缺点

Master 社区版:目前是单点,虽然会把数据信息同步到备份服务器,但是恢复需要时间
Master 服务器对主机的内存要求略高
默认 Metalogger 复制元数据时间较长(可调整)
# 内存使用问题:
    处理一百万个文件chunkserver,大概需要300M的内存空间。据此,推算如果未来要出来1个亿的文件chunkserver,大概需要30G内存空间

应用场景:

大规模高并发的线上数据存储及访问(小文件,大文件都适合)
大规模的数据处理,如日志分析,小文件强调性能不用 HDFS

两种分布式方案

分布式一

在这里插入图片描述

将一个单独的文件拆分为3个文件,分别放在3个机器上。客户端读取数据从3太服务器同时读取
优点:当数据比较大时,可利用多台机器的磁盘I/O,读取速度快、
缺点:只适用数据量大的环境上

分布式二

在这里插入图片描述

当有一组文件时,将文件分别放在不同的服务器上,此时无论数据的大小到适用,并且保留了文件的完整性。
(MFS选用的就是此种分布式)

MFS 组件说明

MFS 结构及其原理

在这里插入图片描述

角色说明

管理服务器 managing server 简称 master

	这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的 metadata 信息,metadate(元数据)信息包括文件(也可
以是目录,socket,管道,块设备等)的大小,属性,文件的位置路径等
承接用户请求、存储元数据信息
	客户端连接Master服务器请求获取数据,M在自己内存中检索,返回Chunkserver的ip、端口以及数据的id给C,C根据返回的报文连接到Chunkserver上,数据获取完成后返回给客户端 
缺点:发起多次TCP连接

在这里插入图片描述

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

	这个组件的作用是备份管理服务器 master 的变化的 metadata 信息日志文件,文件类型为 changelog_ml.*.mfs 。以便于在管理服务器出问题时,可以经过简单的操作即可让新
的主服务器进行工作
 
# 备份Mster 节点元数据信息,一般在MFS集群中拥有多

数据存储服务器组 data servers(chunk servers)简称 data

	这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,据写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份

#真实存储数据的服务器节点,可以基于磁盘目录乃至分区,可以轻松扩容

客户机服务器组(client servers)简称 client:

	这个组件就是挂载并使用 mfs 文件系统的客户端,当读写文件时,客户端首先会连接主管理服务器获取数据的 metadata 信息,然后根据得到的 metadata 信息,访问数据服务器
读取或写入文件实体,mfs 客户端通过 fuse mechanism 实现挂载 mfs 文件系统的,因此,只有系统支持 fuse,就可以作为客户端访问 mfs 整个文件系统

#FUSE(用户空间文件系统),位于用户空间,跨平台性强。

MFS的数据操作流程

查询数据

# 遍历查询 ls /root
		  C 连接 M 发送遍历目录请求,M 检索元数据信息返回至 C,C 展现数据查看文件内容  cat a.txt
       C 连接 M 发起查看文件请求,M 检索元数据信息,返回 chunkip port id 至 C
		  C 连接对应的 chunkserver 的 块,读取数据

在这里插入图片描述

在这里插入图片描述

删除数据

# 删除 rm filename
		C 连接 M 发起删除文件请求
		M 删除对应文件的元数据信息,并且将删除真实文件数据块的操作加入的对应节点的异步清除队列中,到达清除时间后,chunkserver负责清除自己的无效块数据,返回成功请求致C

增加数据

# copy
	C 连接 M 发送拷贝文件请求,发送目标元数据信息
	M 选择最优节点,要求创建新块
	chunkserver 创建完新块以后,返回块ID 至 M
	M 将新块 ID 返回至 C
	C 连接至对应chunkserver 新块写入数据,写入完成后,向 M 发送关闭文件请求
	M 连接新块确认数据信息,更新元数据

在这里插入图片描述

修改文件(vi xxx)

文件是新文件
		C 连接 M 发起创建文件请求,M 选择对应 chunkserver 创建新块
		chunkserve 创建新块(临时块) 返回至 M,
        M 返回 chunkserver ip port id 至 C,C 连接对应 chunkserver 写入数据
		C 向 M 发起关闭文件请求,M 连接 chunkserver 查看块
		如果块为空,更新元数据信息,如果块有数据
		按照 64 MB 分配原则,创建块拷贝临时块数据至 新块,更新元数据信息
文件是已经存在
		C 连接 M 发起修改文件请求
        M 连接至 CHUNKSERVER ,通知创建临时块拷贝源块数据
		CHunks
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值