官网:http://www.moosefs.org
1、MooseFS是什么
一个类MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFS就相当于UNIX的文件系统(ext3、ext4、nfs):
a.mfs是一个分层的目录树结构
b.存储支持POSIX标准的文件属性(权限,最后访问和修改时间)
c.支持特殊的文件。如:块设备,字符设备,管道、套接字、链接文件(符合链接、硬链接)
2、MooseFS的特性
a.高可靠性,每一份数据可以设置多个备份(多分数据),并可以存储在不同的主机上
b.高可扩展性,可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个文件系统的存储量
c.高可容错性,我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依旧存放于主机的回收站中,以备误删除恢复数据
d.高数据一致性,即使文件被写入、访问时,我们依然可以轻松完成对文件的一致性快照
3、MooseFS的优点
a.轻量、易配置、易维护
b.易于扩展,支持在线扩容。不影响业务
c.开发活跃,社区也活跃,资料丰富
d.以文件系统方式展示:如存图片,虽然存储在chunkserver上的数据是二进制文件,但是在挂载mfs的client端仍旧以图片文件形式展示,便于数据备份
e.硬盘利用率高。测试需要较大磁盘空间
f.可设置删除的空间回收时间,避免误删除文件丢失就恢复不及时影响业务
g.系统负载,即数据读写分配到所有的服务器上
h.可设置文件备份的副本数量,一般建议3份,未来硬盘容量也要是存储单份的容量的三倍
4、MooseFS的缺点
a.master目前是单点(虽然会把数据信息同步到备份服务器,但是恢复需要时间,因此,会影响上线,针对这个问题,可以通过drbd+heartbeat方案或者drbd+inotify方案解决),master和backup之间的同步,类似mysql的主从不同。但是现在master的单点已经修复了
b.master服务器对主机的内存要求略高
c.默认metalogger复制元数据时间较长(可调整)
5、MooseFS系统应用场所
1.大规模高并发的线上数据存储及访问(小文件,大文件都适合)
2.大规模的数据处理,如日志分析,小文件强调性能不用HDFS。
有大多的应用不适合分布式文件系统,不建议大家为了使用而使用。
尽量在前端加cache应用,而不是一味的 扩充文件系统
6、MooseFS结构及原理
MFS组件
管理服务器managing server简称(master):
这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的metadata信息,metadate(元数据)信息包括文件(也可以是目录,socket,管道,块设备等)的大小,属性,文件的位置路径等,很类似lvs负载均衡的主服务器,不同的是lvs仅仅根据算法分发请求,而master根据内存里的metadata信息来分发请求,内存的信息会被实时写入到磁盘,这个master只能由一台处于激活的状态
云数据备份服务器Metadata backup servers(简称metalogger或backup):
这个组件的作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_ml.*.mfs。以便于在管理服务器出问题时,可以经过简单的操作即可让新的主服务器进行工作。这类似mysql主从同步,只不过它不像mysql从库那样在本地应用数据,而只是接受主服务器上文写入时记录的文件相关的metadata信息,这个backup,可以有一台或多台,它很类似lvs从负载均衡服务器
数据存储服务器组data servers(chunk servers)简称data:
这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,据写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。这有点类似lvs集群的RS节点
客户机服务器组(client servers)简称client:
这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先会连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体,mfs客户端通过fuse mechanism实现挂载mfs文件系统的,因此,只有系统支持fuse,就可以作为客户端访问mfs整个文件系统,所谓的客户端并不是网站的用户,而是前端访问文件系统的应用服务器,如web
========================================
管理服务器——MASTER SERVER
元数据日志服务器——Metalogger
数据存储服务器——CHUNK SERVER
客户端——CLIENT
4种角色作用如下:
管理服务器:有时也称为元数据服务器,负责管理各个数据存储服务器,调度文件读写,回收文件空间以及恢复多节点拷贝。
元数据日志服务器:负责备份管理服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在管理服务器出问题时接替其进行工作。元数据日志服务器是mfsl.6以后版本新增的服务,可以把元数据日志保留在管理服务器中,也可以单独存储在一台服务器中。为保证数据的安全性和可靠性,建议单独用一台服务器来存放元 数据日志。需要注意的是,元数据日志守护进程跟管理服务器在同一个服务器上,备份元数据日志服务器作为它的客户端,从管理服务器取得日志文件进行备份。
数据存储服务器是真正存储用户数据的服务器。在存储文件时,首先把文件分成块,然后将这些块在数据存储服务器之间互相复制。同时,数据存储服务器还负责连接管理服务器,听从管理服务器调度,并为客户提供数据传输。数据存储服务器可以有多个,并且数量越多,可靠性越高,MFS可用的磁盘空间也越大。
客户端通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,使共享的文件系统和使用本地Linux文件系统的效果看起来是一样的。
========================================
7、MooseFS版本选择
a、高稳定性要求
根据前面mfs的原理流程,我们知道管理服务器(master)是MooseFS的最主要的角色,而且是单点,因此master服务器的配置应该尽可能的稳定,例如:
双电源分别接A、B两路电,机柜的的,尽量不要放在一个机柜上。
多块磁盘使用raid1或raid10,进行冗余,也可选择raid5
b、资源性要求
====================================
MooseFS ,master设备配置建议
内存
对于master服务器来说,资源型要求就是内存大小,为了整个系统访问更快,mfs会把所以访问的元数据metadada信息放在内存中提供用户访问,因此,当文件数量增加时,内存使用量就会增加,根据官方说法,处理一百万个文件chunkserver,大概需要300M的内存空间
据此,推算如果未来要出来1个亿的文件chunkserver,大概需要30G内存空间
硬盘:
硬盘驱动器所需的大小,取决于所用的文件和数据块的数目(主元数据文件)上的文件(源数据更改日志)作出的操作上的数量,例如20G的空间,用于存储信息2500万的文件变更记录保存长达50小时
====================================
MooseFS backup设备配置建议
MooseFS Metalogger只是收集MooseFS主服务器的源数据(文件更改的信息的变化)备份,因此对硬件的要求不应该高于主服务器的配置,从硬盘上需要大约和主服务器相同的磁盘空间。
如果确定在主服务器失败后,要启动Metalogger顶替主服务器的话,那么Metalogger服务器至少应该有相同数量的内存和硬盘作为主要主服务器。在生产中我们可以用其他的,如drbd或inotify的同步工具来替代器内部log同步
====================================
MooseFS dataserver 设备配置建议
MooseFS dataserver是存储数据的真正载体,因此,硬盘的性能较为关键,对于普通的业务,可以选择多块raid5,也可以选择raid10或raid0,建议所以的dataserver的硬盘大小一致比较好,虽然dataserver可以和其他业务公用同一台server,但不建议这样混搭
====================================
虚拟环境搭建准备重点
内存可以给256M。如果可以建议给512
可以增大磁盘分区设备,也可以不增加,我们每个服务器增加一个单独的2G大小的虚拟磁盘,用于数据存储,其中,主服务器和备份服务器虚拟磁盘用于drbd及inotify数据同步
mfs数据服务器的存储地点,可以是单独的服务器、磁盘、分区、目录。至少建议以分区为单位
操作系统的硬盘空间10G,单独磁盘2G,数据存储
操作系统:centos6.5 支持fuse
环境准备
两块硬盘 10G + 2G
服务
mfs master eth0 10.0.0.3 mfs主服务器
mfs backup eth0 10.0.0.4 mfs备份服务器
data server01 eth0 10.0.0.5mfs数据存放服务器
data server01 eth0 10.0.0.6mfs数据存放服务器
data server01 eth0 10.0.0.7mfs数据存放服务器
mfs clienteth010.0.0.8mfs客户端服务器
mfs vip eth0:0 10.0.0.100VIP初始化绑定在mfs主服务器上面
资源不够,可以把master 和data1、backup和data2.client和data3.绑定在一起
#修改主机名(根据不同的服务器,修改不同的主机名)
##VIP的配置
#在工作中,可以用keepalived或者heartbeat启用vip。在这里。我先用ifconfig在master服务器中配置。
###开始部署
1、安装主服务器mfs master
当我们安装主服务器mfs master时,由于我们的目的是安装主服务器,因此在配置的过程中(./configure),可以选择加参数取消安装chunk server(使用--disable-mfschunkserver)以及mfs 客户端(使用--disable-mfsmount)的参数,当然了,我们也可以不加相关的disable参数,安装了不去启动也可以的。为了统一所以服务器的安装步骤,减低安装的复杂性,我们统一了一套安装步骤,适合master backup data服务器,但不适合client服务器。安装主控服务器master的具体步骤如下:
编译参数说明:
mfs目录结构说明:
配置主服务器mfs master
主服务器mfs master的配置文件位于安装目录/application/mfs下的etc目录。所有的模板文件都是以dist为扩展名结尾,如果我们需要使用则把.dist取得即可。
###启用master的两个配置文件
和master相关的配置文件有俩。分别是mfsexports.cfg和mfsmaster.cfg。故启用
###主配置文件 mfsmaster 暂时不需要改
mfsmaster.cfg的配置文件继续参考《mfsmaster.cfg配置文件解析》
###配置 mfsexports
上面配置文件的说明
配置文件mfsexpors.cfg指定哪些客户端主机可以远程挂载MFS文件系统,以及授予挂载客户端什么访问权限。例如,我们指定只有10.0.0.X网段的主句可以读写模式访问mfs的整个共享结构资源(/)。在配置文件mfsexpors.cfg文件的第一行,先取消注销然后把星号改为10.0.0.0/24
第一部分:mfs客户端IP地址或地址范围
第二部分:被挂载的目录
master启动
###端口解析
###master关闭
#安全定制master server是非常必要的,一定不要用kill -9 mongodb 。
可以使用 mfsmaster -s 或者 mfsmaster stop来安全停止master进程,当然一旦是用来kill 也有解决的办法,那就是通过mfsmaster修复
###配置环境变量
###配置主服务器的图像监控
主服务器mfs master的图像监控mfscgiserv,这是一个用Python编写的一个web服务器,它的监控端口是9425.
可以用:/application/mfs/sbin/mfscgiserv start 启动。启动后我们就可以用浏览器就即刻可以比肩全面的监控master、backup及所有客户端挂载的状况信息及相关操作等
#不需要配置,直接启动
下面是master的端口图解
###backup元数据日志服务器部署
MFS主服务器的备份服务器,也称为backup server或者元数据日志服务器(Metalogger server)。这里我统一称为 backup server,即备份服务器。
用来安装backup server的服务器,性能不应该低于master,一旦主服务器master宕机,我们只要导入备份信息changelogs到元数据文件,备份服务器可直接替换故障的master继续提供服务
安装backup server和master安装都一样,只是使用的配置文件不一样。用不一样的配置文件区分不同的服务器
安装如下
###启用mfsmetalogger的配置文件
####修改mster_host 对于的主机名,如果准备用域名,可以改用域名,也可以是IP。对着的一个位置
#测试主备是否相同
##启动mfsmetalogger
##日志文件路径
到时候如果需要恢复数据的时候,我们需要用到的是metadat* 和changelog*这两种文件
###/mfsmetalogger关闭
#安全定制master server是非常必要的,一定不要用kill -9 mongodb 。可以使用 mfsmaster -s
或者 mfsmaster stop来安全停止master进程,当然一旦是用来kill 也有解决的办法,那就是通过mfsmaster修复
###配置环境变量
###加入开机自启动
### 数据存储服务器data servers (chunkservers)
负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
三台data服务器都要才用双磁盘,也就是多加一个2G的磁盘
###安装数据存储服务器
##三个服务器都要多挂载一个磁盘
###结果
###设置开机自动挂载
测试自动挂载是否成功,在设置挂载前,必须格式化/dev/sdb1 ; mkfs -t ext4 /dev/sdb1
###先卸载/mfsdata,再用mount -a 自动挂载,如果成功就行了
###修改mfschunkserver.cfg配置文件
#授权/mfsdata
##启动/mfschunkserver
####/mfsmetalogger关闭
##配置环境变量
##加入开机自启动
##打开下面网页
为什么df -h的大小和master管理界面的大小有区别:274-19=155M
因为master向data服务器申请空间是按照最小256M申请的,低于256M就不申请空间了
到这来dataserver配置好了
#################################################################################
#####按照client server
由于MFS文件系统客户端的挂载依赖于fuse工具,所以要先安装工具。如果所在的系统已经安装了fuse,则可以跳过这个步骤,高版本的linux内核已经支持了
mfs的客户端,一般是web等需要存储功能的应用服务器
###安装,可以yum安装,也可以编译安装,下面采用yum安装的方案
##配置环境变量
###创建数据目录挂载点
##设置fuse开机自动挂载
#客户端挂载mfs
####这样就完成部
日后用的时候就器多个客户端,都挂载好,需要写数据,读数据就往这里读和写就可以了