详细讲解MFS分布式文件系统搭建(内含源码包)

初步了解分布式原理:

分布式文件系统(Distributed File Systemm)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。简单来说,就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散在各个计算机上的。分布式文件系统的好处是集中访问、简化操作、数据容灾,以及提高文件的存取性能。

MFS原理:

MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

MFS文件系统的组成:

#元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据。
#元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行修复。
#数据存储服务器(Chunk Server):真正存储数据的服务器。存储文件时,会把文件分块保存,在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
#客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。

MFS读取数据的处理过程:

#客户端向元数据服务器发出读请求
#元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端
#客户端向已知的Chunk Server请求发送数据
#Chunk Server向客户端发送数据

MFS写入数据的处理过程:

#客户端向元数据服务器发送写入请求
#元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Server告知元数据服务器操作成功。
#元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据。
#客户端向指定的Chunk Server写入数据
#该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功
#客户端告知元数据服务器本次写入完毕

下面为MFS文件系统的基本组成架构:

下面我通过实验进行说明:
实验环境:

mfs软件包链接:https://pan.baidu.com/s/1QDIMfqZGjlqUfRRwZfDFqQ
提取码:d3mi
一、搭建Master Server
下载编译环境

yum install gcc gcc-c++ zlib-devel -y

关闭防火墙

systemctl stop firewalld.service
setenforce 0

建立管理用户

useradd -s /sbin/nologin mfs

解压源码包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

对本台服务器进行配置,因为在进行源码包编译时,它是默认安装了所有模块的,而这台是Master所以需要禁用chunkserver和mount两个模块

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

编译安装

make && make install

复制文件

cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs

将该文件的属组和属主改为mfs

chown -R mfs.mfs /usr/local/mfs

本台服务器需要用到的配置文件有两个:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被挂载目录及权限配置文件)。这两个文件不需要做任何修改就可以开始工作
mfsmaster.cfg文件常用参数如下:

#WORKING_USER = mfs #运行masterserver的用户
#WORKING_GROUP = mfs #运行masterserver的组
#SYSLOG_IDENT = mfsmaster #在syslog中表示是mfsmaster产生的日志
#LOCK_MEMORY = 0 #是否执行mlockall(),以避免mfsmaster进程溢出(默认为0)
#NICE_LEVEL = -19 #运行的优先级(如果可以,默认是-19;注意:进程必须用root启动)

#EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg #被挂载目录及其权限控制文件的存放位置

#TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg

#DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径

#BACK_LOGS = 50 #metadata改变的log文件数目(默认是50)
#BACK_META_KEEP_PREVIOUS = 1

#REPLICATIONS_DELAY_INIT = 300
#REPLICATIONS_DELAY_DISCONNECT = 3600

#MATOML_LISTEN_HOST = #metalogger监听的IP地址(默认是,代表任何IP)
#MATOML_LISTEN_PORT = 9419 #metalogger监听的端口地址(默认是9419)
#MATOML_LOG_PRESERVE_SECONDS = 600

#MATOCS_LISTEN_HOST = #用于chunkserver连接的IP地址(默认是,代表任何IP)
#MATOCS_LISTEN_PORT = 9420 #用于chunkserver连接的端口地址(默认是9420)

#MATOCL_LISTEN_HOST = #用于客户端挂接连接的IP地址(默认是,代表任何IP)
#MATOCL_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认是4921)

#CHUNKS_LOOP_MAX_CPS = 100000
#CHUNKS_LOOP_MIN_TIME = 300 #chunk的回环频率(默认是300秒)

#CHUNKS_SOFT_DEL_LIMIT = 10
#CHUNKS_HARD_DEL_LIMIT = 25
#CHUNKS_WRITE_REP_LIMIT = 2 #在一个循环里复制到一个chunkserver的最大chunk数
#CHUNKS_READ_REP_LIMIT = 10 #在一个循环里从一个chunkserver复制的最大chunk数
#ACCEPTABLE_DIFFERENCE = 0.1

#SESSION_SUSTAIN_TIME = 86400
#REJECT_OLD_CLIENTS = 0

#deprecated:
#CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
#LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfile

mfsexports.cfg文件参数格式如下:

#Allow everything but "meta".

  • / rw,alldirs,maproot=0

#Allow "meta".

  • . rw

该文件每一个条目分为三部分
第一部分:客户端的IP地址
第二部分:被挂接的目录
第三部分:客户端拥有的权限

地址可以指定的几种表现形式:

#*——所有的IP地址
#n.n.n.n——单个IP地址
#n.n.n.n/b——IP网络地址/子网掩码
#f.f.f.f-t.t.t.t——IP段

目录部分的标识如下:

#/标识MFS根
#.表示MFSMETA文件系统

权限部分的标识如下

#ro——只读模式共享
#rw——读写的方式共享
#alldirs——允许挂载任何指定的子目录
#admin——管理员权限
#maproot——映射为root,还是指定的用户
#Password——指定客户端密码

启动Master Server

/usr/local/mfs/sbin/mfsmaster start

查看进程,如果有MFS的进程表示服务成功开启

ps -ef | grep mfs

这是关闭Master Server命令

/usr/local/mfs/sbin/mfsmaster -s

二、搭建Metalogger Server
安装编译环境

yum install gcc gcc-c++ zlib-devel -y

关闭防火墙

systemctl stop firewalld.service
setenforce 0

创建管理用户

useradd -s /sbin/nologin mfs

解压安装包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

配置模块,因为本台服务器是Log服务器,所以需要禁用掉mfschunkserver和mfsmount两个模块

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

编译安装

make && make install

复制文件,本台服务器只需要开启日志文件即可

cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

在文件中将地址指向Master Server的地址

vim mfsmetalogger.cfg
MASTER_HOST = 192.168.199.129

将文件的属组和属主都改为mfs

chown -R mfs.mfs /usr/local/mfs/

开启MetaLog Server服务

/usr/local/mfs/sbin/mfsmetalogger start

查看进程,如果有MFS进程表示服务成功开启

ps -ef | grep mfs

关闭服务用如下命令

/usr/local/mfs/sbin/mfsmetalogger -s

三、搭建两台Chunk Server,两台的操作步骤完全一样
安装编译环境

yum install gcc gcc-c++ zlib-devel -y

创建管理用户

useradd -s /sbin/nologin mfs

关闭防火墙

systemctl stop firewalld.service
setenforce 0

解压安装包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

配置模块,本台服务器是Chunk Server,所以需要禁用掉mfsmaster和mfsmount两个模块

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount

编译安装

make && make install

开启mfschunkserver和mfshdd两个文件

cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

在chunk文件下将地址指向 Master Server

vim mfschunkserver.cfg
MASTER_HOST = 192.168.199.129

在mfshdd文件下添加一行/data,在这里/data是一个给MFS的分区,生存环境最好使用独立的分区或磁盘挂载到此目录

vim mfshdd.cfg
#mount points of HDD drives

#/mnt/hd1
#/mnt/hd2
#etc.
/data

创建挂载目录

mkdir /data
chown -R mfs.mfs /data

开启服务

/usr/local/mfs/sbin/mfschunkserver start

想要关闭可以使用如下命令

/usr/local/mfs/sbin/mfschunkserver -s

查看进程,可以检测服务是否开启

ps -ef | grep mfs

四、客户端配置
安装编译环境,MFS客户端依赖于FUSE,所以需要安装fuse的安装包和开发包

yum install gcc gcc-c++ zlib-devel fuse fuse-devel -y

关闭防火墙

systemctl stop firewalld.service
setenforce 0

添加环境变量PKG_CONFIG_PATH,环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的,pkg-config按照设置路径的先后顺序进行搜索,直到找到指定的.pc 文件为止

vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile

创建进程管理用户

useradd -s /sbin/nologin mfs

解压安装包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

配置模块,本台服务器是Client,所以需要禁用掉mfsmaster和mfschunkserver两个模块,同时开启mfsmount模块

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount

编译安装

make && make install

创建挂载点

mkdir /opt/mfs

加载fuse模块到内核

modprobe fuse

挂载MFS

/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.199.129

查看挂载情况

df -hT
192.168.199.129:9421 fuse.mfs 13G 0 13G 0% /opt/mfs

优化客户端
MFS在客户端安装完毕后,会生成/usr/local/mfs/bin目录,在这个目录下有很多命令文件,为了方便使用这些命令,可以将该路径添加到环境变量中

vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile

Mfsgetgoal命令用来查询文件被复制的份数,利用-r命令可以对整个目录进行递归,goal是指文件被复制的份数

mfsgetgoal -r /opt/mfs
/opt/mfs:
directories with goal 1 : 1

Mfsaetgoal命令用来设置文件被复制的份数,生产环境Chunk Server节点数量应至少大于2,文件副本数小于等于Chunk Server服务器的数量

mfssetgoal -r 2 /opt/mfs
/opt/mfs:
inodes with goal changed: 1
inodes with goal not changed: 0
inodes with permission denied: 0

创建测试文件

cd /opt/mfs
touch test
mfsgetgoal test
test: 2

MFS监控 (在Master Server上执行)
Mfsgiserv是用python编写的一个WEB服务器,其监听端口是9425,可以在Master Server上通过命令/usr/local/mfs/sbin/mfscgiserv 来启动

/usr/local/mfs/sbin/mfscgiserv #在客户端上执行
http://192.168.199.129:9425 #通过浏览器访问该地址

下图为登录访问的页面:

原文地址:http://blog.51cto.com/13706760/2287867

时间: 2024-11-08 01:09:55

详细讲解MFS分布式文件系统搭建(内含源码包)的相关文章

Apache网页优化:网页压缩,网页缓存(内含源码包与抓包工具)

网页压缩:在linux系统中利用Apache中的gzip模块.可以使用gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器,经过压缩过后可以加快网页加载的速度 网页缓存:网页缓存是将 一部分经常不会改变或变动很少的页面缓存,下次浏览器再次访问这些页面时,不需要再次下载这些页面,从而提高了用户的访问速度 Apache软件包:https://pan.baidu.com/s/1hxWYjihLKYMRZ_Ev99v4qQ   密码:7hl7 抓包工具与环境包:https:

RedHat6.4系统下LAMP环境的搭建---(源码包编译安装)---

(一)httpd(源码包安装) 安装准备: 1 安装htppd软件所依赖的软件包 yum -y install gcc gcc-c++ pcre pcre-devel apr apr-devel apr-util apr-util-devel zlib zlib-devel openssl openssl-devel 安装完成显示如下: Installed: apr.x86_64 0:1.3.9-5.el6_2 apr-devel.x86_64 0:1.3.9-5.el6_2 apr-util.

详细讲解Android中的Message的源码

相信大家对于Android中的Handler是在为熟悉不过了,但是要知道,Handler就其本身而言只是一个壳子,真正在内部起到作用的是Message这个类,对于Message这个类,相信大家也不会陌生,正如大家经常用到的Message.obtain()的方法一样.但是大家又是否知道obtain()方法里面为我们做了哪些操作了,下面我就带领大家进行Message的王国,去一探究竟吧. 首先映入眼帘的是这样的一行代码: ? 1 public final class Message implemen

详细讲解Android中的AbsListView的源码

不知道各位童鞋们在开发的过程中有没有感兴趣过ListView是如何实现的呢?其实本身ListView的父类AbsListView才是关键,但是如果大家看过源码的话,会发现AbsListView将近7000多行代码,是不是头大啊,呵呵,没事,下面咱们就一起来看看吧. 我们先从类中的常量开始分析: public static final int TRANSCRIPT_MODE_DISABLED = 0; public static final int TRANSCRIPT_MODE_NORMAL =

LAMP环境搭建(源码包安装,仅测试)

linux系统+Apache服务+MySQL数据库+PHP 安装顺序:PHP要在最后安装 首先将安装包上传到/root目录下 链接:http://pan.baidu.com/s/1nvbWEk5 密码:9r9w ************************************************************************************************************************************************

高效实用,在centos7上搭建MFS分布式文件系统

MFS原理: MFS是一个具有容错性的网络分布式文件系统,他把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源 MFS文件系统组成: 1.元数据服务器(master) 2.元数据日志服务器(metalogger) 3.数据存储服务器(chunk server) 4.客户端(client) 下面进行MFS分布式文件系统搭建演示 案列环境: master server: 192.168.100.128 metalogger server:192.168.100.134 chunk s

CentOS 7下搭建MFS分布式文件系统

MFS原理 MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个服务器上,而呈现给用户的则是一个统一的资源. MFS文件系统的组成架构: 元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据: 元数据日志服务器(Metalogger):备份Master服务器的变化日志文件,文件类型为changlog_ml.*.mfs.当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行恢复: 数据存储服务器(Chunk Server):真正存储的数据的服务器.

Linux安装yum源码包及相关操作

一.使用场景 很多时候下载的rpm包所提供的功能并不符合我们的需要,或者只需要使用其中一部分功能的时候,就需要进行源码安装.源码安装前,首先使用 yum grouplist 确认 Development tools 和 Server Platform Development这两个组已经被安装. 二.相关知识详解 1.make工具 所有的程序都需要gcc编译后才能执行,项目的开发者为了简化使用者的编译步骤,当时用make工具后,make会调用gcc对程序进行编译,所以说make是一种项目编译工具,

搭建 MFS 分布式文件系统

MFS分布式文件系统 MFS是一种半分布式文件系统,它是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够更节约存储成本,而且不比专业的存储系统差,它还可以实现在线扩展. 分布式文件系统是指文件系统管理的物理存储资源下不一定直接连接在本地节点上,而是通过计算机网络与节点相连. 分布式文件系统的优点是集中访问.简化操作.数据容灾,以及提高了文件的存取性能. MFS文件系统的组成架构: 元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据: 元数据日志服务器(Metal