一、MFS文件系统概论

MFS是linux下的开源存储系统,是由波兰人开发的。MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展。MFS是一种半分布式文件系统。

MFS的网络分三部分组成,MASTER SERVER、CHUNK SERVER 和 CLIENT,其中MASTER SERVER只有一个,而CHUNK SERVER 和CLIENT可以有多个。

二、MFS文件系统体系结构

MFS文件系统结构包含4种角色,分别是:

1、管理服务器(元数据服务器)--MASTER SERVER

2、元数据日志服务器--Metalogger

3、数据存储服务器--CHUNK SERVER

4、客户端--client

三、MFS的编译与安装实例

安装环境:Centos 6.5

系统内核:2.6.32-431.el6.x86_64

软件版本:mfs-1.6.11-1.tar.gz

客户端软件 :fuse-2.7.4.tar.gz

服务器分配:

服务分配   IP地址
主控服务器(Master server) 10.10.100.114
主控备份服务器(Metalogger server) 10.10.100.115
存储块服务器(Chunk server) 10.10.100.116
存储块服务器(Chunk server) 10.10.100.117
客户端主机(Clients) 10.10.100.93

echo "10.10.100.114 mfsmaster" >> /etc/hosts   #在各主机上面将主控服务器写入host,这样就不用改配置文件了

主控服务器(Master server) 安装:

[root@localhost ~]# groupadd mfs
[root@localhost ~]# useradd -g mfs mfs 或者 useradd -s /sbin/nologin mfs
[root@localhost soft]#mfs-1.6.11-1.tar.gz
[root@localhost soft]#cd mfs-1.6.11 #当我们安装主控服务器时,在配置过程中(./configure),可以取消安装chunk server(--disable-mfschunkserver)以及MooseFS 客户端(--disable-mfsmount)安装
[root@localhost mfs-1.6.11]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.11]# make
[root@localhost mfs-1.6.11]# make install
[root@localhost mfs-1.6.11]# cd /usr/local/mfs/etc
[root@localhost etc]# pwd
/usr/local/mfs/etc
[root@localhost etc]# cp mfsmaster.cfg.dist mfsmaster.cfg #拷贝模板文件重命名得到主配置文件 #拷贝模板文件重命名得到权限控制文件
[root@localhost etc]# cp mfsexports.cfg.dist mfsexports.cfg
[root@localhost etc]# cd ../var/mfs/
[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs
#配置文件mfsexports.cfg指定那些客户端主机可以远程挂接MooseFS文件系统,以及赋予客户端什么样的访问权限 例如.我们指定只有10.10.100.*网段的主机可以以读写模式访问MooseFS的整个共享资
[root@localhost etc]# vim mfsexports.cfg
10.10.100.0/24 / rw,alldirs,maproot=0  
#主配置文件的内容以及含义
vim mfsmaster.cfg # WORKING_USER = mfs 运行master server 的用户
# WORKING_GROUP = mfs 运行master server 的组
# SYSLOG_IDENT = mfsmaster master server 在syslog中的标识,说明是由master serve 产生的
# LOCK_MEMORY = 是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = - 运行的优先级(如果可以默认是-; 注意: 进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被挂接目录及其权限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,此目录下大致有三类文件,changelog,sessions和stats;
# BACK_LOGS = metadata 的改变log 文件数目(默认是50);
# REPLICATIONS_DELAY_INIT = 延迟复制的时间(默认是300s);
# REPLICATIONS_DELAY_DISCONNECT = chunkserver 断开的复制延迟(默认是3600);
# MATOML_LISTEN_HOST = * metalogger 监听的IP 地址(默认是*,代表任何IP);
# MATOML_LISTEN_PORT = metalogger 监听的端口地址(默认是9419);
# MATOCS_LISTEN_HOST = * 用于chunkserver 连接的IP 地址(默认是*,代表任何IP);
# MATOCS_LISTEN_PORT = 用于chunkserver 连接的端口地址(默认是9420);
# MATOCU_LISTEN_HOST = * 用于客户端挂接连接的IP 地址(默认是*,代表任何IP);
# MATOCU_LISTEN_PORT = 用于客户端挂接连接的端口地址(默认是9421);
# CHUNKS_LOOP_TIME = chunks 的回环频率(默认是: 秒);
注:原文为Chunks loop frequency in seconds (default is )
# CHUNKS_DEL_LIMIT =
# CHUNKS_WRITE_REP_LIMIT = 在一个循环里复制到一个chunkserver 的最大chunk数目(默认是1)
# CHUNKS_READ_REP_LIMIT = 在一个循环里从一个chunkserver 复制的最大chunk数目(默认是5)
# REJECT_OLD_CLIENTS = 弹出低于1..0的客户端挂接( 或1,默认是0)

主配置文件的内容以及含义

启动前准备:

echo "10.10.100.114  mfsmaster">> /etc/hosts

启动mfsmaster: /usr/local/mfs/sbin/mfsmaster start

启动监控服务:/usr/local/mfs/sbin/mfscgiserv

浏览器访问地址:http://10.10.100.114:9425/mfs.cgi,可以看到MFS信息。

元数据日志服务器的安装和配置

[root@localhost soft]# tar -zxvf mfs-1.6.11-1.tar.gz
[root@localhost soft]# useradd -s /sbin/nologin mfs
[root@localhost soft]# cd mfs-1.6.11
[root@localhost mfs-1.6.11]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.11]# make && make install #生成MFS备份服务器的配置文件
[root@localhost mfs-1.6.11]# cd /usr/local/mfs/etc/
[root@localhost etc]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg 启动元数据日志服务前准备.
echo "10.10.100.114 mfsmaster">> /etc/hosts [root@localhost etc]# /usr/local/mfs/sbin/mfsmetalogger start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly

可以查看日志验证备份服务器是否安装成功

Mar 25 15:12:04 localhost mfsmetalogger[27148]: set gid to 501
Mar 25 15:12:04 localhost mfsmetalogger[27148]: set uid to 501
Mar 25 15:12:04 localhost mfsmetalogger[27150]: connecting ...
Mar 25 15:12:04 localhost mfsmetalogger[27150]: open files limit: 5000
Mar 25 15:12:04 localhost mfsmetalogger[27150]: connected to Master
Mar 25 15:13:00 localhost mfsmetalogger[27150]: sessions downloaded 8B/0.000502s (0.016 MB/s)
Mar 25 15:14:00 localhost mfsmetalogger[27150]: sessions downloaded 8B/0.000631s (0.013 MB/s)
可以看到我们的备份服务器正常启动

设置开机启动服务编辑/etc/rc.local添加

/uar/local/mfs/sbin/mfsmetalogger start

存储服务器Chunk Server的安装

[root@localhost soft]#tar zxvf mfs-1.6.11.tar.gz
[root@localhost soft]# useradd -s /sbin/nologin mfs
[root@localhost soft]# cd mfs-1.6.11
[root@localhost soft]#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster
[root@localhost mfs-1.6.11]# make && make install 准备Chunk Server所需要的配置文件 [root@localhost mfs-1.6.11]# cd /usr/local/mfs/etc/
[root@localhost etc]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost etc]# cp mfshdd.cfg.dist mfshdd.cfg #编辑主配置文件[如果写了hosts echo "10.10.100.114 mfsmaster">> /etc/hosts]则不用修改配置文件.
#[root@localhost etc]# vim mfschunkserver.cfg
#MASTER_HOST = 10.10.100.114
#MASTER_PORT = 9420 [root@localhost etc]# vim mfshdd.cfg
/data

启动数据存储服务器

echo "10.10.100.114  mfsmaster">> /etc/hosts
[root@localhost etc]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
init: hdd space manager failed !!!
error occured during initialization - exiting 结果出现错误,通过检查得知/data挂载点的属主和属组没有修改成mfs
[root@localhost etc]# chown -R mfs.mfs /data/
[root@localhost etc]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
scanning folder /data/ ...
/data/: 0 chunks found
scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly

设置开机启动服务编辑/etc/rc.local添加

/uar/local/mfs/sbin/mfschunkserver start

MFS客户端安装:

http://www.turbolinux.com.cn/turbo/wiki/doku.php?do=export_xhtml&id=ntfs-3g

[root@localhost soft]#tar -zxvf fuse-2.8.5.tar.gz
[root@localhost soft]#cd fuse-2.8.5
[root@localhost soft]#./configure
[root@localhost soft]#make && make install
或者直接用yum安装
yum -y install fuse.x86_64 fuse-devel.x86_64 fuse-libs.x86_64
modprobe fuse #保证fuse模块被加入到内核 [root@localhost soft]#tar zxvf mfs-1.6.11.tar.gz
[root@localhost soft]# useradd -s /sbin/nologin mfs
[root@localhost soft]# cd mfs-1.6.11
[root@localhost soft]#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount [root@localhost mfs-1.6.11]# make && make install

创建挂载点

[root@localhost mfs-1.6.11]# mkdir /mfs
[root@localhost ~]# /usr/local/mfs/bin/mfsmount /mfs -H 10.10.100.114
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root

浏览器访问地址:http://10.10.100.114:9425/mfs.cgi,可以看到MFS信息。

MFS必备命令:

#查看某文件
/usr/local/mfs/bin/mfsgetgoal /mfs/ #查看目录信息
/usr/local/mfs/bin/mfsdirinfo -H /mfs/ #写入性能测试: dd if=/dev/zero of=1.img bs=1M count=50 #读取性能测试: dd if=1.img bs=1M |dd of=/dev/null #设置副本的份数,推荐3份
/usr/local/mfs/bin/mfssetgoal -r 3 /mfs

MFS文件系统的更多相关文章

  1. MFS文件系统的组成

    1.  元数据服务器.在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当.希望今后MFS能支持多个master服务器,进一 ...

  2. MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护

    回顾 文件或目录的额外属性(noower,noattracache和noentrycache),可以通过MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)检查 ...

  3. 分布式文件系统MFS(moosefs)实现存储共享(第二版)

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  4. 分布式文件系统MFS(moosefs)实现存储共享(一)

    分布式文件系统MFS(moosefs)实现存储共享 作者:田逸(sery@163.com) from:[url]http://net.it168.com/a2009/0403/270/00000027 ...

  5. 构建MFS分布式文件系统

    ++++++++++++++构建MFS分布式文件系统++++++++++++++PB级别:企业存储空间达到PB级别,即100万GB空间.(1PB=1000TB,1TB=1000GB,1GB=1000M ...

  6. MFS - MooseFS 文件系统

    MFSMooseFS 文件系统 可以实现RAID 功能:节约成本 实现在线扩展:是一种半分布式文件系统. 一.MFS文件系统的组成 1.mfsmaster 元数据服务器. 在整个体系中负责管理管理文件 ...

  7. 分布式文件系统MFS(moosefs)实现存储共享

    分布式文件系统MFS(moosefs)实现存储共享(第二版) 作者:田逸(sery@163.com) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepali ...

  8. mfs分布式文件系统,分布式存储,高可用(pacemaker+corosync+pcs),磁盘共享(iscsi),fence解决脑裂问题

    一.MFS概述 MooseFS是一个分布式存储的框架,其具有如下特性:(1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!).(2)可以在线扩容,体系架构可伸缩性极强. ...

  9. MFS分布式文件系统

    一.MFS概述: MooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类unix文件系统一样,包含了层级结构(目录树 ...

随机推荐

  1. WebApi服务Uri加密及验证的两种方式

    最近的一个项目要求服务端与UI层分离,业务层以WebApi方式向外提供所有业务服务,服务在数据保密性方面提出了要求,主要包括: 1:客户端认证: 2:服务请求超时(默认5分钟): 3:服务Get请求的 ...

  2. REST服务中的异常处理

    在REST服务中,服务端如果产生了异常信息,无论是业务异常或是系统异常,如果直接将异常抛出,在客户端浏览器中,是无法获取异常的详细,只能获取一个StateCode 500 Internal Serve ...

  3. jsrender-for循环中访问父属性

    jsrender中使用for循环数据时有时需要访问父级数据. 而jsrender在循环中的父级数据存放在隐藏属性parent.parent.data中,使用案例如下 {{:#parent.parent ...

  4. MAC下Eclipse的常用快捷键

    整理Eclipse常用快捷键 开发环境切换到Mac下后原来Window下的快捷键很大一部分是不相容的,习惯了快捷键的生活忽然哪天快捷键不起作用了,跟着的就是开发效率明显降低,频繁录入错误的快捷键让Ec ...

  5. pyhthon --递归,装饰器

    递归: 递归的概念很简单,如果函数包含了对其自身的调用,该函数就是递归.拗口一点的定义是,如果一个新的调用能在相同过程中较早的调用结束之前开始,那么该过程就是递归. """ ...

  6. threading示例

    多线程举例: import time import threading def worker(): print ("hello.Kamil") time.sleep(1)#等待一秒 ...

  7. 【poj2741】 Colored Cubes

    http://poj.org/problem?id=2741 (题目链接) 题意 给出n个骰子,每一面都有一种颜色,问最少更改多少个面的颜色可以使所有骰子通过旋转后完全相同. solution 迷之d ...

  8. CameraFlash手电筒

    有时候晚上找不到电棒,电灯,咱们可以写个小程序,利用照相机的闪光灯临时顶替上代码: 1 package com.linux.cameraflash; import android.hardware.C ...

  9. MVC5-4 ViewResult

    ViewResult 之前已经分析了很多个Result,但是并没有分析我们最常用的ViewResult.因为它牵扯到了Razor引擎,所以需要单独的拿出来去讲. 之前在学习的时候,老师总会和我们说当你 ...

  10. Linux使用网盘客户端

    1. 百度网盘 - bypy https://github.com/houtianze/bypy 这是一个基于Python的命令行客户端. 安装参考上面链接的说明,或者这篇文章(推荐,有告诉你如何安装 ...