mfs分布式文件系统原理

运维技术 jikk345 1284℃ 0评论

一、MooseFS介绍

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

a)mfs是一个分层的目录树结构。
b)存储支持POSIX的标准文件属性(权限,最后访问和修改时间)。
c)支持特殊的文件,如:块设备,字符设备,管道和套接字,连接文件(符号连接和硬链接)。
d)支持基于IP地址和密码的方式访问文件系统。
以上内容来自:http://www.moosefs.org 
2、MooseFS的特性
a)高可靠性,每一份数据可以设置多个副本(多份数据),并可以存储在不同的主机上。
b)高可扩展性,可以很轻松的通过增加主机磁盘容量或增加主机数据来动态扩展整个文件系统的存储量。
c)高容错性,我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依然存放于主机的回收站中,以备误删恢复数据。
d)高数据一致性,即使文件被写入/访问时,我们依然可以轻松完成对文件的一致性快照。
3、MooseFS系统优点
a)轻量、易配置、易维护。
b)开发活跃,社区也较活跃。资源丰富。
)扩容成本低,支持在线扩容,不影响业务。
d )以文件系统方式展示:如存图片,虽然存储在ChunkServer上的数据是二进制文件,但是挂载mfs的客户端仍以图片文件形式展示,便于数据备份。
e)硬盘利用率较高、测试需要较大的磁盘空间。
)可设置删除文件的空间回收时间,避免误删文件丢失及恢复不及时影响业务。
g) 系统负载,即数据读写分配到所有的服务器上。
h)可以设置文件备份的副本数量。一般建议3份,未来硬件容量也要是存储单份容易的3倍。
4、Mooefs系统缺点
a)Master 目前是单点(虽然会把数据信息同步到备份服务器,但是恢复需要时间。因此,会影响线上业务。针对这个问题,可通过DRBD+Hearbeat方案或DRBD+inotify方案解决)。现在更新了一种master和backup之间的同步,类似于MySQL的主从同步。
b)Master 服务对主机的内容要求略高()
c)metalogger复制元数据间隔时间较长(可调整)
5、MooeFS 应用场景
分布式文件系统的应用场景。
a)大规模高并发的线上数据存储及访问(小文件,大文件)。
b)大规模的数据处理,如日志分析。小文件强调性能不用HDFS。
有太多的应用不适合分布式文件系统。不建议为了使用而使用。
尽量在前端加Cache就用,而不是一味的扩充文件系统。
二、主流分部式文件系统
主流分布式文件系统比较
Lustre
是一个大规模的、安全可靠的,具体高可能性的集群文件系统,它是由SUN公司开发并维护的。
该项目主要的目的就是开发下一代集群文件系统,可以支持超过10000个节点,数以PB的数量存储系统。
适合大型集群。
支持动态扩展。
需要对内核打补丁,深度依赖Linux内核和ext3文件系统。
使用用户不活跃,被Oracle公司收购后,这个东西连下载地址都很难找到。
CEPH
网上搜索了一些资料,说ceph性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖。
具体可以去网上搜索了解,该文件系统几乎没有人用。
Glusterfs
网上说Gluserfs比较不错,稳定,适合大型应用,关键是没有单点故障依赖,C语言的代码,支持FUSE,安装配置简单,启动能动后进行测试。
开始感觉不错,后来用压力测试工具对其吞吐量进行测试,发现性能不满足我们的生产需求。
测试的大文件读操作和大文件的写操作,吞吐量在5MB/秒左右,显示不能满足要求。但是没有找到具体的瓶颈。
Hadoop(HDFS)
授权协议为apache,开发语言JAVA,资源耗费有点大。
本地写缓存,够一定大小(64MB)时传给服务器
使用流的方式访问数据
不适合通过文件系统同,一般来讲用于日志分析或数据分析(赶集在用)。
MogileFs
MogileFS用perl编写
支持应用层的组件扩展
无单点故障
自动文件复制
适合存储静态只读小文件,比如图片。
网上说这个性能最高的,不过是perl编写的代码,对外提供API进行使用,搭建起来相对比较复杂一点,因为需要安装很多依赖的第三方perl包,另外还要安装Mysql数据库来支持
安装完毕后,服务器端起来了,客户端有JAVA,PHP,PERL,RUBY等开发的,我们需要的是支持FUSE的,但是这个分布式的文件系统对FUSE的支持需要安装一个PERL与C通信的模块,这个模块死活编译不过去,最后无法测试成功,只能有时间再研究。
FreeNAS
FreeNAS 是网络附加存储(NAS)服务专用操作系统(FreeBSD的简化版)。基于m0n0wall防火墙,该系统通过提供磁盘管理及RAID软件,可以让用户home将PC转换为NAS服务器,支持FTP/NFS/RSYNC/CIFS/AFP/UNISON/SSH sourceforge.net/pro协议,旨在让人们重新使用硬件。
FastDFS
FastDFS用c编写
国人在mogileFS基本上进行改进的key-value型文件系统,不支持FUSE,提供比mogileFS更好的性能。
-轻量级:(移植性比较强,资源依赖性小)的开源分布式文件系统
-解决的问题:-大容量的文件存储
                      -高并发的访问
                      -文件存取时的负载均衡
-特色:实现了软件方式的RAID,支持服务器在线扩容,支持相同的文件只存一份,节省磁盘空间。
-限制:只能通过client api方式访问,不支持posix方式访问
-适合范围:大中型网站用来存储资源文件(如图片、文档、音频、视频、音频等),即以文件为载体的在线服务。
-FastDFS服务端有两个角色:跟踪器()和存储节点(),跟踪器总要做高度工作,在访问上做负载均衡的作用,且跟踪器可用多台服务器进行均衡,这样可避免单点故障的发生。
NFS
允许一个系统在网络上与它人共享目录和文件。通过NFS,用户和程序可以像访问本地文件一样访问元端系统上的文件本地工作站使用更少的磁盘空间,通常的数据可以存放在一台机器上而且通过网络访问到。用户不必在每个网络机器里面都有一个home目录。home目录可以被放在NFS服务器上并且在网络上处处可用。
诸如软驱、CDROM和ZIP之类的存储设备可以在网络上面被别的机器使用。可以减少整个网络上的可移动介质设备的数据。
MooseFs
Moose File System 是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上,MooseFS通过FUSE使之看起来就是一个Unix的文件系统。
一个unix的文件系统
支持文件元信息。
支持fuse,可以直接使用mount命令挂载
编译依赖少,文件全,默认配置可满足大部分需求
开发很活跃,用户使用也比较活跃。
可以以非root用户身份运行
支持在线扩容
支持回收站
支持快照
对master server存在单点依赖骨metalogger服务器同步日志,进行切换。
安装配置比较简单。很快搭建好环境,进行测试,性能不错,吞吐量在15MB/秒以上。
三、分布式文件系统种类与比较
1、MooseFS结构说明
MooseFS系统由四部分组成:
组件名称:管理服务器(managing server)简称Master
组件作用:
这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中的每个数据文件的metadata信息,metadata(元数据)信息包括文件(也可以是目录,socket,管理,设备等)的大小,属性,文件位置路径等。很类似LVS负载均衡主服务器,不同的是LVS仅仅根据算法分发请求,而Master根据内存里的metadata信息来分发请求,内存的信息会被实时写入到磁盘。这个master,只能有一台处理激活的工作的状态。
组件名称:元数据备份服务器(Metadata backup server)简称metalogger或backup
组件作用:
这个组件的作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_m1.*.mfs,以便于在主服务器出问题的时候,可以经过简单的操作即可让新主服务器进行工作。这很类似MySQL的主从同步,只不过它不像MySQL从库那样在本地应用数据,而只是接收服务器上文件写入时记录的文件相关的metadata信息。这个backup,可以有一台或多台,它很类似lvs从负载均衡服务器。
组件名称:数据存储服务器组data server(chunk servers)简称client
组件作用:
这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘分区及分区来充当,当配置数据的副本多于一份时,据写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。
这很像lvs集群的rs节点。
组件名称:客户机服务器组(Client Servers)简称client
组件作用:
这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先会连接主管理服务器获取数据的metadata信息,然后根据得到metadata信息,访问数据服务器读取或写入文件实体。mfs客户端通过FUSE mechanism实现挂载MFS文件系统的,因此,只要系统支持fuse,就可以作为客户端访问MFS整个文件系统。
所谓的客户端并不是网站用户,而是前端访问文件系统的应用服务器,如web。
四、MooseFS 安装环境准备
网络比较流行的,1.6.11,1.6.20,本次1.6.27-5
生产环境设备选型说明 
1、MooseFS master 设备配置建议
a)高稳定性要求
根据前面 mfs的原理流程,我们知道管理服务器(master)是MooseFS的最主要的角色,而且是单点,因此,Master 服务器的配置尽可能的稳定。
例如:双电源分别接A、B路电,机柜多的,别放一个机柜。
          多块磁盘使用RAID1/RAID10,进行冗余,也可选RAID5
b)资源要求
内存:对master 服务器来说,资源型要求就是内存大小了,为了整个系统访问更快,mfs会把所有访问的元数据metadata信息放在内存中提供用户访问。因此,当文件数据增加时,内存使用量就会增加。根据官方的说法,处理1百万个文件chunkservers。大概需要300M的内存空间。
据此,推算如果未来 要处理1亿个文件chunkservers,大概需要300G的内存空间。
硬盘:硬盘驱动器所需的大小,取决于所用的文件和数据块的数目(主元数据文件)上的文件(元数据更改日志)作出的操作上的数量,例如20G的空间,用于存储信息2500万文件变更记录保存长达50小时。
2、MooseFS backup 设备配置建议
MooseFS matalogger 只是收集从MooseFS主服务器的元数据(文件更改的信息的变化)备份,因此对硬件的要求不应该高于主服务器的配置,从硬盘上需要大约和主服务器相同的磁盘空间。
如果确定主服务器失败后,要启动metalogger顶替主服务器的话,那么metalogger服务器至少应该有相同数量的内存和硬盘作为主要服务器。在生产中我们可以用其他的诸如drbd或inotify的同步功能来替代其内部的log同步。
3、MooseFS data server设备设置建议
MooseFS,data server是存储数据的真正载体,因此,硬盘的性能较为关键,对于普通的业务,可以选择多块盘raid5,也可以选择raid0 及raid10。建议所有的data server硬盘的大小一致较好。虽然data server可以和其它业务公用同一个服务器,但是不建议这样混搭使用。

转载请注明:清麟博客 » mfs分布式文件系统原理

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址