MFS

来源:互联网 发布:labelone条码打印软件 编辑:程序博客网 时间:2024/06/02 13:12

MFS介绍

MFS的优点

MFS文件系统结构
MFS
的监控

MFSHADOOP的比较

MFS工作原理

MFS的双机方案

==========

MFS介绍

MooseFS是波兰开发的分布式文件系统
官方网站:http://www.moosefs.org/
MooseFS是一个分布式存储的框架,是类似google filesystem的一个c实现
目前官方的CASE已扩展到了70台,最大的数据量达PB级别。
使用案例:http://www.moosefs.org/who-is-using-moosefs.html
国内的有: YOKA时尚网,大众报业,搜狐听书,UC优视,豆瓣等等
===========

MFS的优点

Free(GPL)通用文件系统,不需要修改上层应用就可以使用
部署简单,可以在线扩容,体系架构可伸缩性极强。
高可用,可设置任意的文件冗余程度
支持特殊文件(管道,套接字,符号链接和硬链接)
支持快照snapshot功能
提供webgui监控功能
可回收在指定时间内删除的文件
===========
MFS文件系统结构
1 管理服务器managing server (master)
管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
常用配置介绍mfsmaster.cfg
DATA_PATH = /usr/local/mfs/var/mfs数据存放路径,此目录下大致有三类文件,changelogsessionsstats
BACK_LOGS = 50 metadata 的改变log文件数目
CHUNKS_WRITE_REP_LIMIT = 1 在一个循环里复制到一个chunkserver的最大chunk数目
CHUNKS_READ_REP_LIMIT = 5 在一个循环里从一个chunkserver复制的最大chunk数目
 
2 元数据日志服务器Metaloggerserver(Metalogger
元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在masterserver出问题的时候接替其进行工作.
常用配置介绍mfsmetalogger.cfg
META_DOWNLOAD_FREQ = 24 元数据备份文件下载请求频率,即每隔一天从Master下载metadata.mfs.back文件。
 
3 数据存储服务器data servers (chunkservers)
数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,数据实际存储的地方,由多个物理服务器组成
常用配置介绍mfshdd.cfg
/mnt/hd1:数据存储目录
 
4 客户机挂载使用client computers
客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地文件系统使用一样的效果
常用命令:
挂载文件系统:mfsmount /mnt/mfs -H主控服务器IP
卸载文件系统:umount /mnt/mfs
查看文件拷贝的份数:mfsgetgoal /mnt/mfs
指定文件拷贝的份数:mfssetgoal 【-r】 3 /mnt/mfs (–r选项表示对子目录递归)
实际的拷贝查看:mfsfileinfo /mnt/mfs
 
5 垃圾箱
挂载时通过-m -o的选项,可以挂接一个辅助的文件称为垃圾箱,系统一个删除文件能够存放在一个“ 垃圾箱”的时间就是一个隔离时间,这个时间可以用mfsgettrashtime命令来醒看,也可以用mfssettrashtime命令来设置,时间的单位是秒。
查看垃圾箱隔离时间:mfsgettrashtime /mnt/mfs
mfsgettrashtime 【-r】 604800 /mnt/mfs (–r选项表示对子目录递归)
包含三个目录:
/trash:包含任然可以被还原的被删除文件的信息
/trash/undel:在垃圾箱的文件,移动到/trash即可还原删除文件
/reserved:已经删除的文件,但却有一直打开着。在用户关闭了这些被打开的文件后,reserved目录中的
文件将被删除,文件的数据也将被立即删除。
============
MFS的监控
Mfscgiserv 是用python编写的一个web服务器, 它的监听端口是9425,可以利用:
/usr/local/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可全面监控所有客户挂接,chunkserver
master server,客户端的各种操作等等
 
==========

MFSHADOOP的比较

MooseFS (MFS)

Ceph

GlusterFS

Lustre

HadoopHDFS

MetadataServer

单个MDS,存在单点故障和瓶颈

多个MDS,不存在单点故障和瓶颈。

无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/O瓶颈。

MDS(互相备份)MDS不可以扩展,存在瓶颈。

单个MDS,存在单点故障和瓶颈

FUSE

支持

支持

支持

支持

不支持,特定API

访问接口

POSIX

POSIX

POSIX

POSIX/MPI

支持部分POSIX

文件分布

文件被分片,数据块保存在不同的存储服务器上

文件被分片,保存在不同的存储服务器上。

AFR相当于RAID1,每个文件都被复制到多个存储节点上。Stripe相当于RAID0,文件被分片,数据被条带化到各个存储节点上。

Translators可以组合AFRstripe

可以把大文件分片并以类似RAID0的方式分散存储在多个存储节点上。

文件被分片,数据块保存在不同的存储服务器上

冗余保护/副本

多副本

多副本

镜像

无,由存储节点上的RAID1RAID5/6提供可靠性。

多副本

扩展性

增加存储服务器,可以提高容量和文件操作性能

可以增加元数据服务器和存储节点。

容量可扩展

可增加存储节点,提高容量可文件操作性能

容量可扩展

安装/部署

简单

简单

简单

复杂。而且Lustre严重依赖内核,需要重新编译内核。

简单

适合场景

大量小文件读写

小文件

适合大文件

大文件读写

大文件读写

应用/优缺点

国内较多,实施简单,但是存在单点故障

不稳定,目前还在实验阶段

较多用户使用,无元数据服务器,堆栈式架构,具有线性横向扩展能力。由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存。

HPC领域,很成熟、很庞大

使用较多,主要使用在MAPREDUCE方面

==============

MFS工作原理

MFS的读数据过程

1.client当需要一个数据时,首先向masterserver发起查询请求

2.管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid,发送给客户端;

3.客户端向具体的数据服务器发起数据获取请求;

4.数据服务器将数据发送给客户端;

MFS的数据存储格式:

Chunk文件名格式为{“chunk_%x_%x.mfs”,chunkid ,version},文件头部长度为5120字节, 前1024字节包括ChunkID, 版本信息等元数据信息,1024 ~ 5120字节是block checksumChunk包含1Kblock,每个block4个字节CRC校验,总共占用4096字节,5120字节之后才是Chunk数据

MFS的写数据过程

1.当客户端有数据写需求时,首先向管理服务器提供文件元数据信息请求存储地址(元数据信息如:文件名|大小|份数等);

2.管理服务器根据写文件的元数据信息,到数据服务器创建新的数据块;

3.数据服务器返回创建成功的消息给管理服务器;

4.管理服务器将数据服务器的地址返回给客户端(chunkIP|port|chunkid)

5. Client与第一个ChunkServer建立连接,发送包含ChunkServer链信息的写请求和数据;

6.数据服务器调用写本地Chunk文件,同时 forward写请求到下一个Chunk Server,处理完之后返回给客户端写成功的消息;

7.客户端将通知Master写操作完成,Master记录相关的日志,并更新文件的长度和最后修改时间及释放ChunkLease

MFS的删除文件过程

1.客户端有删除操作时,首先向Master发送删除信息

2.Master定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理;

3.响应客户端删除成功的信号

MFS修改文件内容的过程

1.客户端有修改文件内容时,首先向Master发送操作信息

2.Master申请新的块给.swp文件,

3.客户端关闭文件后,会向Master发送关闭信息;

4.Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块;

5.若无,则直接删除.swp文件块。

==============

MFS的双机方案

==============

MFS测试

       MFS虚机压力测试

       MFS虚机稳定性测试

        MFS双机测试

============

  MFS虚机压力测试

测试环境:1MASTER服务器,1台日志服务器,2台数据存储服务器

测试方法:采用系统命令(time dd if= of=  bs=1024k count=500)

=========

MFS虚机稳定性测试

采用70并发,MFS服务正常运行。在半个月的压力测试中也没有发现MFS的异常。

========

MFS双机测试

采用rsync+inotify机制时实同步元数据镜像和日志等相关文件。
通过Heartbeat监控主控服务器进程。
目前在断网和MFS主控停止情况下均可正常切换。

 

 

原创粉丝点击